您的位置:首页 > 编程语言 > C语言/C++

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

2020-03-05 06:22 477 查看
1 //输入两个正数mn,求最大公约数和最小公倍数
2 #include<stdio.h>
3 int main()
4 {
5     int p,r,m,n,temp;
6     printf("请输入两个正数:\n");
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",n);
22     printf("最小公倍数%d\n",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("请输入一个字符:\n");
7     while((c=getchar())!='\n')
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\n空格数:%d\n数字数%d\n其他%d\n",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\n",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\n",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 \n",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("\n");
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\n",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 米\n",s);
12     printf("第十次反弹%f 米\n",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\n",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:\n");
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\n",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\n",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\n",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("\n");
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("\n");
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\nB   %c\nC   %c\n",i,j,k);
12                         return 0;
13 }

 

转载于:https://www.cnblogs.com/1998wdq/p/11266226.html

  • 点赞
  • 收藏
  • 分享
  • 文章举报
aigk80514 发布了0 篇原创文章 · 获赞 0 · 访问量 214 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: