C语言第五次作业练习

来源:互联网 发布:wp login.php 编辑:程序博客网 时间:2024/06/10 07:23

以下程序教材基于 谭浩强C程序设计(第四版)

第1题 分别使用while、do…while、for三种循环结构计算并输出2+4+8+10+……+100的运算结果。

/*第1题 分别使用whiledowhilefor三种循环结构计算并输出2+4+8+10+……+100的运算结果。*//*# include<stdio.h>int main(void){    int i=2,sum=0;    while(i<=100)    {        sum=sum+i;        i+=2;    }    printf("sum=%d\n",sum);    return 0;}*/
/*# include<stdio.h>int main(void){    int i=2,sum=0;    do    {        sum=sum+i;        i+=2;    }    while(i<=100);    printf("sum=%d\n",sum);    return 0;}*/
# include<stdio.h>int main(void){    int i,sum=0;    for(i=2;i<=100;i+=2)    {        sum=sum+i;    }    printf("sum=%d\n",sum);        return 0;}

第2题 教材习题P.140习题3,求两个正整数的最大公约数和最小公倍数。

/*此程序编写于2017318日,目的:求两整数的最大公约数和最小公倍数*/# include<stdio.h>int main(void){    int a,b,n,m,t;    printf("请输入两个正整数n,m:");    scanf("%d,%d",&n,&m);    if(n<m)     //先互换两个数    {        t=n;        n=m;        m=t;    }    a=n*m;                       while(m!=0)    {        b=n%m;        n=m;        m=b;    }    printf("它们的最大公约数为:%d\n",n);    printf("它们的最小公倍数为:%d\n",a/n);    return 0;}

第3题 教材习题P.140习题8,输出所有的水仙花数。

/*目的:求出所有的水仙花数*/# include<stdio.h>int main(void){    int a,b,c,d;    printf("水仙花数为以下数值\n");    for(d=100;d<1000;d++)    {        a=d/100;        b=d/10%10;        c=d%10;        if(d==a*a*a+b*b*b+c*c*c)            printf("%d\t",d);    }    printf("\n");    return 0;}

第4题 教材习题P.141习题12,求解猴子吃桃问题。

/*猴子吃桃问题*/# include<stdio.h>int main(void){    int d,a,b;  //d为天//    d=9;    b=1;    do    {        a=(b+1)*2;        b=a;        d--;    }    while(d>0);    printf("第一天一共摘了%d个桃子\n",a);    return 0;}
# include<stdio.h>int main(){    int x,i,b;                //第一天摘取x个,i为天//    for (x=1;x<10000;x++)    {        b=x;        for(i=1;i<10;i++)        {            b=b/2-1;        }        if(b==1) break;    }    printf("第一天一共摘了%d个桃子\n",x);       return 0;} 

第5题 完成例5.6,熟悉嵌套for循环的用法。

/*输4*5矩阵*/# include<stdio.h>int main(void){    int i,j,n=0;    for(i=1;i<=4;i++)        for(j=1;j<=5;j++,n++)        {            if(n%5==0)                printf("\n");            printf("%d\t",i*j);        }    printf("\n");    return 0;}

第6题 教材习题P.141习题9,输出1000之内所有的完数。

/*输1000之内的所有完数*/# include<stdio.h>int main(void){    int n,m,sum;    for(n=1;n<=1000;n++)    {        sum=0;        for(m=1;m<=n/2;m++)            if(n%m==0)                 sum+=m;            if(n==sum)        {            printf("%d 它的因子为", n);            for(m=1;m<=n/2;m++)                if(n%m==0)                     printf("%d,",m);            printf("\b \n");        }    }    return 0;}

第7题 输出九九乘法表。

/*输出九九乘法表*/# include<stdio.h>int main(void){    int x,y,z;    for(x=1;x<=9;x++)    {        for(y=1;y<=x;y++)         {            z=x*y;            printf("%d*%d=%d  ",y,x,z);        }        printf("\n");    }    return 0;}

第8题 完成例5.7,计算圆周率的近似值。

/*此程序编写于2017年3月17日,目的:计算pi的值*/# include<stdio.h># include<math.h>int main(void){    int sign=1;    double pi=0.0,n=1.0,term=1.0;    while(fabs(term)>=1e-6)    {        pi=pi+term;        n=n+2;        sign=-sign;        term=sign/n;    }    pi=pi*4;    printf("pi=%10.8f\n",pi);    return 0;}/*此程序存在的问题:精度低,将循环判断改为1e-8后,精度会高一些*/

第9题 完成例5.8,求斐波那契数列的前40个数。

/*斐波那契数列前40个数*/# include<stdio.h>int main(void){    int f1=1,f2=1,f3;    int i;    printf("%-5d\n%-5d\n",f1,f2);    for(i=1;i<=38;i++)    {        f3=f1+f2;        printf("%-5d\n",f3);        f1=f2;        f2=f3;    }    return 0;}/*改进程序# include<stdio.h>int main(void){    int f1=1,f2=1;    int i;    for(i=1;i<=20;i++)    {        printf("%-5d %-5d",f1,f2);        if(i%2==0)            printf("\n");        f1=f1+f2;        f2=f2+f1;    }    return 0;}*/

第10题 完成例5.9,判断输入的整数是否为素数。

/*判断输入的整数是否为素数。*/# include<stdio.h>int main(void){    int n,i;    printf("请输入一个整数\n");    scanf("%d",&n);    for(i=2;i<=n-1;i++)        if(n%i==0)            break;        if(i<n)            printf("%d不是素数\n",n);        else            printf("%d是素数\n",n);    return 0;}/*改进程序如下:# include<stdio.h># include<math.h>int main(void){    int n,i,k;    printf("请输入一个整数\n");    scanf("%d",&n);    k=sqrt(n);    for(i=2;i<=k,i++)        if(n%i==0)            break;        if(i<k)            printf("%d不是素数\n",n);        else            printf("%d是素数\n",n);    return 0;}*/

第11题 完成例5.10,求100-200之间所有的素数。

/*求100~200间的全部素数*/# include<stdio.h># include<math.h>int main(void){    int n,k,i,m=0;    for(n=101;n<=200;n=n+2)    {        k=(int)sqrt(n);    for(i=2;i<=k;i++)        if(n%i==0)break;    if(i>=k+1)    {        printf("%d\t",n);        m=m+1;    }    if(m%10==0)    printf("\n");    }    printf("\n");    return 0;}
0 0
原创粉丝点击