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

相关内容

热门资讯

家装预付资金安全困局如何破解,... 家装预付资金安全困局如何破解 专家提出:建立“先验收后付款”装修资金存管制度 预交数万元甚至数十万元...
工行安康解放路支行积极开展《反... 为深入贯彻落实《国家金融监督管理总局安康监管分局办公室关于开展<反有组织犯罪法>宣传活动的通知》要求...
重庆公布育儿补贴制度实施方案 原标题:每孩每年3600元 重庆公布育儿补贴制度实施方案 11月21日,记者了解到,市卫生健康委、市...
十五运会组委会在深总结本届赛事... 深圳新闻网2025年11月22日讯(深圳报业集团记者 林炜航)11月21日,十五运会组委会在深圳市民...
中国军视网:日本妄言击沉福建舰... 本文转自【中国军视网】; 日本首相高市早苗发表涉台错误言论,公然挑战一个中国原则,甚至还有日本无知政...
重磅!东莞长安50万㎡产城发布... 在当下竞争激烈的市场环境中,中小企业如何突破成本压力,找到一片既能扎根成长又能眺望未来的理想栖息地?...
毕马威:政策、资本等多维着力 ... 由毕马威联合长三角G60科创走廊创新研究中心主办的“长三角高端装备新质领袖榜单发布仪式”于11月21...
河曲县开展驻村帮扶工作政策业务... 来源:河曲县融媒体中心 近日,我县组织开展驻村帮扶工作政策业务集中培训,进一步提升驻村帮扶干部...
羽绒服涨价与猪肉降价有关?经济... 中央气象台发布统计信息,14日至17日,我国今年下半年首轮大范围寒潮天气即将自西向东影响我国,多地降...
周勇,任上落马 11月21日,中央纪委国家监委网站发布通报: 国家能源集团乌海能源党委书记、董事长周勇涉嫌严重违纪违...