谭浩强版本C语言课后习题第五章

 1 //输入两个正数mn,求最大公约数和最小公倍数
 2 #include<stdio.h>
 3 int main()
 4 {
 5     int p,r,m,n,temp;
 6     printf("请输入两个正数:
");
 7     scanf("%d,%d",&m,&n);
 8     if(n<m)
 9     {
10         temp=n;
11         n=m;
12         m=temp;
13     }
14     p=m*n;
15     while(m!=0)
16     {
17         r=n%m;
18         n=m;
19         m=r;
20     }
21     printf("最大公约数%d
",n);
22     printf("最小公倍数%d
",p/n);
23     return 0;
24 }

2/统计一行字符数字字母空格个数

 1 #include<stdio.h>
 2 int main()
 3 {
 4     char c;
 5     int letters=0,space=0,digit=0,other=0;
 6     printf("请输入一个字符:
");
 7     while((c=getchar())!='
')
 8     {
 9         if(c>='a'&&c<='z'||c>='A'&&c<='Z')
10             letters++;
11         else if(c==' ')
12             space++;
13         else if(c>='0'&&c<='9')
14             digit++;
15         else
16             other++;
17     }
18     printf("字母数:%d
空格数:%d
数字数%d
其他%d
",letters,space,digit,other);
19     return 0;
20 }

3、

 1 //求a+aa+...aaaaa,n个a的和
 2 #include<stdio.h>
 3 int main()
 4 {
 5     int a,n,i=1,sn=0,tn=0;
 6     printf("a,n=:");
 7     scanf("%d,%d",&a,&n);
 8     while(i<=n)
 9     {
10         tn=tn+a;
11         sn=sn+tn;
12         a=a*10;
13         ++i;
14     }
15     printf("和为:%d
",sn);
16     return 0;
17 }

4/计算1!+2!+3!+。。。+20!

 1 #include<stdio.h>
 2 int main()
 3 {
 4     double s=0,t=1;
 5     int n;
 6     for(n=1;n<=20;n++)
 7     {
 8         t=t*n;
 9         s=s+t;
10     }
11     printf("和为:%12.15e
",s);
12     return 0;
13 }

5、求1-100的k,1-50的k2,1-10的1/k.

#include<stdio.h>
int main()
{
    int n1=100,n2=50,n3=10;
    double k,s1=0,s2=0,s3=0;
    for(k=1;k<=n1;k++)
    {s1=s1+k;}
    for(k=1;k<=n2;k++)
    {s2=s2+k*k;}
    for(k=1;k<=10;k++)
    {s3=s3+1/k;
    }
    printf("sum=%15.6f/n",s1+s2+s3);
    return 0;
}

 6、求水仙花数

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i,j,n,k;
 5     for(i=100;i<1000;i++)
 6     {
 7         j=i/100;
 8         n=i/10-j*10;
 9         k=i%10;
10         if(i==j*j*j+n*n*n+k*k*k)
11             printf("水仙花数:%d 
",i);
12     }
13     return 0;
14 }

7、求完数

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int m,s,i;
 5     for(m=2;m<=1000;m++)
 6     { s=0;
 7         for(i=1;i<=m;i++)
 8             if((m%i)==0)
 9                 s=s+i;
10             if(s==m)
11             {printf("%d its facters are",m);
12             for(i=1;i<m;i++)
13                 if(m%i==0)
14                     printf("%d",i);
15                 printf("
");
16             }
17     }
18 return 0;
19 }
20                                 

8、求2/1,3/2,5/3,8/5。。。前二十项和

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int n;
 5     double i=2,j=1,k,s=0.0;
 6     for(n=1;n<=20;n++)
 7     {
 8     
 9         s=s+i/j;
10         k=i;
11         i=i+j;
12         j=k;
13     }
14     printf("sum is %16.10f
",s);
15     return 0;
16 }

9、100米掉落小球每次反弹高度为原来的一半,十次后高度?总路程?

 1 #include<stdio.h>
 2 int main()
 3 {
 4     double s=100,h=s/2;
 5     int n;
 6     for(n=2;n<=10;n++)
 7     {
 8         s=s+2*h;
 9         h=h/2;
10     }
11     printf("十次共经过%f 米
",s);
12     printf("第十次反弹%f 米
",h);
13     return 0;
14 }

10、猴子偷桃问题

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int day=9,x1,x2=1;
 5     while(day>0)
 6     {
 7         x1=(x2+1)*2;
 8         x2=x1;
 9         day--;
10     }
11     printf("total=%d
",x1);
12     return 0;
13 }

 11、用迭代法求平方根

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5     float a,x0,x1;
 6     printf("enter a:
");
 7     scanf("%f",&a);
 8     x0=a/2;
 9     x1=(x0+a/x0)/2;
10     do
11     {
12         x0=x1;
13         x1=(x0+a/x0)/2;
14     }
15     while(fabs(x0-x1)>=1e-5);
16     printf("the square root of %5.2f is%8.5f
",a,x1);
17     return 0;
18 }

12、迭代法求2x3-4x2+3x-6=0的根

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5     double x1,x0,f,f1;
 6     x1=1.5;
 7     do{
 8         x0=x1;
 9         f=((2*x0-4)*x0+3)*x0-6;
10         f1=(6*x0-8)*x0+3;
11         x1=x0-f/f1;
12     }
13     while(fabs(x1-x0)>=1e-5);
14     printf("the root is%5.2f
",x1);
15     return 0;
16 }

13、用二分法求方程的根

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {
 5     float x0,x1,x2,fx0,fx1,fx2;
 6     do
 7     {printf("please enter x1 x2:,");
 8     scanf("%f,%f",&x1,&x2);
 9     fx1=x1*((2*x1-4)*x1+3)-6;
10     fx2=x2*((2*x2-4)*x2+3)-6;
11     }while(fx1*fx2>0);
12     do{
13         x0=(x1+x2)/2;
14         fx0=x0*((2*x0-4)*x0+3)-6;
15         if((fx0*fx1)<0)
16         {x2=x0;
17         fx2=fx0;
18         }
19         else
20         {x1=x0;
21         fx1=fx0;
22         }
23     }while(fabs(fx0)>=1e-5);
24     printf("x=%6.2f
",x0);
25     return 0;
26 }

14、输出菱形

 1 #include<stdio.h>
 2 int main()
 3 {
 4     int i,j,k;
 5     for(i=0;i<=3;i++)
 6     {
 7         for(j=0;j<=2-i;j++)
 8             printf(" ");
 9         for(k=0;k<=2*i;k++)
10             printf("*");
11         printf("
");
12     }
13     for(i=0;i<=2;i++)
14     {
15         for(j=0;j<=i;j++)
16             printf(" ");
17         for(k=0;k<=4-2*i;k++)
18             printf("*");
19         printf("
");
20     }
21     return 0;
22 }

15、乒乓球比赛匹配

 1 #include<stdio.h>
 2 int main()
 3 {
 4     char i,j,k;
 5     for(i='x';i<='z';i++)
 6         for(j='x';j<='z';j++)
 7             if(i!=j)
 8                 for(k='x';k<='z';k++)
 9                     if(i!=k&&j!=k)
10                         if(i!='x'&&k!='x'&&k!='z')
11                             printf("A   %c
B   %c
C   %c
",i,j,k);
12                         return 0;
13 }
原文地址:https://www.cnblogs.com/1998wdq/p/11266226.html