57、C语言程序设计谭浩强第五章习题
创始人
2025-06-01 19:11:14
0

1、输入两个正整数m和n,求其最大公约数和最小公倍数

辗转相除法:

#include int main(){int m,n,temp;scanf("%d %d",&m,&n);if(m

样例输入与输出:

24 60
最大公因数为:12,最小公倍数:120

2、输入一行字符,分别统计出其中英文字母、空格、数字和其他字符的个数。

#include 
#include 
#include 
#include 
int main(){char s[101];gets(s);int len = strlen(s);int num1=0;//英文int num2=0;//数字int num3=0;//空格int num4=0;//其他int i;for(i=0;i='0'&&s[i]<='9'){num2++;}else if(s[i]==' '){num3++;}else {num4++;}}printf("英文字母的个数为:%d\n",num1);printf("数字的个数为:%d\n",num2);printf("空格的个数为:%d\n",num3);printf("其他字符的个数为:%d\n",num4);return 0;
}

样例输入与输出:

aaasss  123,.,.
英文字母的个数为:6
数字的个数为:3
空格的个数为:2
其他字符的个数为:4

3、计算形如2+22+222+2222的结果,分别输入a和n,a代表数字,n代表加的个数

#include int main(){double a,n;scanf("%lf %lf",&a,&n);double sum=a;double q=a;for(int i=1;i

样例输入与输出:

2 5
24690

4、求1!+2!+3!+4!+…+20!

#include 
int main(){double sum=0,p;int i,j;for(i=1;i<=20;i++){p=1;for(j=1;j<=i;j++){p=p*j;}sum+=p;}printf("%.0lf",sum);return 0;
}

输出结果:

2561327494111820300

5、

#include 
#include 
int main(){double sum=0;int i;for(i=1;i<=100;i++){sum+=i;}for(i=1;i<=50;i++){sum+=i*i;}for(i=1;i<=10;i++){sum+=1.0/i;}printf("%lf",sum);return 0;
}

输出结果:

47977.928968

6、输出所有的“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是水仙花数,因为153=1*+5*+3。

#include int main(){int i,n,r,sum;for(i=100;i<=999;i++){sum=0;n=i;while(n){r=n%10;sum+=r*r*r;n=n/10;}if(sum==i){printf("%d\n",i);}}return 0;
}

输出结果:

153
370
371
407

7、一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:

6 its factors are 1,2,3

#include 
int main(){int i,j,sum;int a[101];int r;for(i=1;i<=1000;i++){sum=0;r=0;for(j=1;j

输出结果:

6 its factors are 1,2,3
28 its factors are 1,2,4,7,14
496 its factors are 1,2,4,8,16,31,62,124,248

8、有一个分数序列,求出这个数列的前20项之和。

2/1,3/2,5/3,8/5,13/8,25/13........

#include 
int main(){int i;double sum=0;double a[20];a[0]=2;a[1]=3;for(i=2;i<20;i++){a[i]=a[i-1]+a[i-2];}double b[20];b[0]=1;b[1]=2;for(i=2;i<20;i++){b[i]=b[i-1]+b[i-2];}for(i=0;i<20;i++){sum = sum + a[i]/b[i];}printf("%lf",sum);return 0;
}

输出结果:

32.660261

9、一个球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下,再反弹。求它在第10次落地时共经过多少米,第10次反弹多高。

#include int main(){int i;double n=100;double sum=100;for(i=1;i<10;i++){n=n/2;sum = sum+n*2;}n=n/2;printf("%lf\n%lf",sum,n);return 0;
}

输出结果:

299.609375
0.097656

10、猴子吃桃问题。猴子第1天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。第2天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,就只剩一个桃子了。求第1天共摘多少个桃子。

#include int main(){int n=1;int i;for(i=1;i<10;i++){n=(n+1)*2;}printf("%d",n);return 0;
}

输出结果:1534

11、

#include 
#include 
int main(){double m=pow(10,-5);double a ,x1,x2;scanf("%lf",&a);x1=sqrt(a);x2=(x1+a/x1)/2.0;while(1){if(fabs(x1-x2)

样例输入与输出:

2
2的平方根为1.414214

12、用牛顿迭代法求下面方程在1.5附近的根:

#include 
#include int  main()
{double x1, x0, f, f1;x1 = 1.5;do{x0 = x1;f = ((2 * x0 - 4) * x0 + 3) * x0 - 6;f1 = (6 * x0 - 8) * x0 + 3;x1 = x0 - f / f1;} while (fabs(x1 - x0) >= 1e-5);printf("方程在1.5附近的根为:%lf\n", x1);return 0;
}

 输出结果:

方程在1.5附近的根为:2.000000

13、用二分法求下面方程在(-10,10)的根:

#include
#includeint main()
{double left = -10, right = 10, mid;double temp = 10;while (fabs(temp) > 1e-5){mid = (left + right) / 2;//((2x - 4)*x + 3) * x - 6 ==> 2x^3 - 4x^2 + 3x -6temp = ((2 * mid - 4) * mid + 3) * mid - 6;if (temp > 0){right = mid;}else if (temp < 0){left = mid;}}printf("在(-10,10)的根为:%lf", mid);return 0;
}

14、输出以下图案:

​ *

​ ***

*****

*******

*****

​ ***

​ 

#include 
int main(){int i,j;for(i=0;i<4;i++){for(j=0;j<2*i+1;j++){printf("*");}for(j=2*i+1;j<7;j++){printf(" ");}printf("\n");}for(i=2;i>=0;i--){for(j=2*i;j>=0;j--){printf("*");}for(j=0;j<=6-2*i;j++){printf(" ");}printf("\n");}return 0;
}

输出结果:

*
***
*****
*******
*****
***
*

15、两个乒乓球队进行比赛,各出3人。甲队为A,B,C 3人,乙队为X,Y,Z 3人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X,Z比,请编程序找出3对赛手的名单

#include 
int main(){char a[4];a[1]='x';a[2]='y';a[3]='z';int i,j,r;//i,j,r代表a,b,c  1,2,3代表x,y,zfor(i=1;i<=3;i++){for(j=1;j<=3;j++){for(r=1;r<=3;r++){if(i!=1&&r!=1&&r!=3&&i!=j&&i!=r&&j!=r){printf("a对战%c\n",a[i]);printf("b对战%c\n",a[j]);printf("c对战%c\n",a[r]);break;}}}}return 0;
}

或者

#include 
int main(){char a[4];a[1]='x';a[2]='y';a[3]='z';int i,j,r;for(i=1;i<=3;i++){for(j=1;j<=3;j++){if(i!=j){for(r=1;r<=3;r++){if(r!=i&&r!=j){if(i!=1&&r!=1&&r!=3){printf("a对战%c\n",a[i]);printf("b对战%c\n",a[j]);printf("c对战%c\n",a[r]);}}}}}}return 0;
}

 

输出结果:

a对战z
b对战x
c对战y

相关内容

热门资讯

原创 国... 导言 近年来,全球范围内生育率持续下降已成为一个普遍现象。国际上通常认为,总和生育率(TFR)需要达...
各地家电消费:“两新”政策助力... 【今年以来各地加力扩围“两新”政策,推动消费潜力加速释放】今年以来,各地持续加大力度,扩大“两新”政...
加州就诉特朗普政府关税政策违法... 美国加利福尼亚州总检察长罗布·邦塔当地时间2日发布声明说,已就加州北区联邦地区法院就加州诉特朗普政府...
原创 无... 据新华社消息,位于纽约的美国国际贸易法院28日裁定暂停特朗普政府4月2日宣布的一揽子加征关税政策生效...
《陷入我们的热恋》剧组发布声明... 搜狐娱乐讯 6月4日,刘浩存、王安宇主演的新剧《陷入我们的热恋》剧方发布声明,称部分用户对演员进行辱...
1800万欧年薪说不要就不要?... 眼瞅着夏窗的脚步越来越近,欧洲足坛的转会大戏也开始紧锣密鼓地预热。这边厢,咱们的宇宙队巴塞罗那,正为...
俄称已要求美英就乌攻击俄战略航... 总台记者获悉,当地时间6月4日,俄罗斯外交部副部长里亚布科夫表示,俄方要求美国和英国就乌克兰攻击俄战...
保利联合:公司高度关注保障中小... 金融界6月4日消息,有投资者在互动平台向保利联合提问:您好,国务院公布保护中小企业款项支付条例,6月...
好消息!黑龙江50岁及以上人群... 为深入贯彻落实《“健康中国2030”规划纲要》《健康中国行动(2019—2030年)》等文件精神,进...
漯河市2025年普通高中招生政... 2025年中招文化课考试临近,就广大初中考生和学生家长关心的普通高中招生问题,记者采访了漯河市教育局...