......《C语言程序设计》复习题库1、计算下面公式的值。T=1/1!+1/2!+1/3!+⋯⋯+1/m!当m=5时的结果(按四舍五入保留3位小数)。(注:所有变量用float数据类型定义!)答案:1.7172、程序填空:用*号输出字母C的图案。#includestdio.h#includeconio.hmain(){_____________printf(*\n);__________________________getch();}3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30。编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。(注:所有变量用long数据类型定义!)答案:15334594、/*下面程序的功能是:计算并输出700以内的最大的10个能被13或者17整除的自然数之和。请改正程序中的错误,并运行,最后给出程序运行的正确结果。(注:只有一处错误!)*/答案:6591#includestdio.hvoidmain(){inttotal=0,mc=1,k=700;intpm[10],count=0;while((k=2)&&mc=10){if((k%13==0)||(k%17==0)){pm[mc]=k;mc++;}k--;}for(k=1;k=10;k++)total+=pm[k-1];printf(%d\n,total);}5、求x=1+1/5+1/7+1/9+⋯的近似值,直到最后一项的绝对值小于10-5为止。6、计算如下公式的A20值。A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3),......(按四舍五入保留10位小数)。答案:0.61803398507、求[10,1600]之间能被7整除的奇数之和。答案:90965......8、函数mystrlen(char*s)的功能是求字符串s的长度。请填空。Intmystrlen(char*s){intnum=0;while(){____;}return();}9、[100,500]之间同时满足除以7余5,除以5余3,除以3余1的整数之和。答案:104210、求[100,999]之间所有的素数的个数。答案:14311、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。答案:11012、/*数列1,2,1,4,7,12,23⋯具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7⋯.。下列程序的功能是求出该数列前10项的和。请改正程序中的错误,并运行修改后的程序,给出程序结果。(注:只有一处错误!)*/答案:311#includestdio.hvoidmain(){longsum=0,a[30]={1,2,1};intk,j;for(k=3;k10;k++)a[k]=a[k-1]+a[k-2]+a[k-3];for(j=1;j=10;j++)sum+=a[j];printf(%ld\n,sum);}13、/*求1到2000之间的双胞胎数的对数。双胞胎数:两素数差为2称为双胞胎数。例如227和229是一对双胞胎数,它们都是素数且差为2。*/答案:61#includestdio.hintprime(intx){intk;for(k=2;kx;k++)if(__________)break;if(k==x)return1;elsereturn0;}voidmain(){inta,b,n=0;intprime(intx);for(a=2;a=1998;a++){if(prime(a)==1){b=a+2;if(__________)n++;......}}printf(%d\n,n);}14、编写程序,统计200~400之间的所有满足三个数字之积为42,三个数字之和为12的数的个数。答案:415、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?答案:916、爱因斯坦走台阶:有一台阶,如果每次走两阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件的最小台阶数是多少?答案:11917、/*求1000以内最大的10个素数的和。*/答案:9664#includestdio.hintprime(longn){longk;for(k=2;k=n-1;k++)if(____________)return0;return1;}voidmain(){longt,total=0,num=0;intprime(longn);for(t=1000;t=2;t--){if(____________){total=total+t;num++;}if(num==10)break;}printf(\n%ld,total);}18、/*求1!+2!+3!+...+7!,7!表示7的阶乘。*/答案:5913#includestdio.hlongjc(longx){longk,fac=1;for(k=1;________;k++)fac*=k;________;}......voidmain(){longn,sum=0;longjc(longx);for(n=1;n=7;n++)________;printf(\n%ld,sum);}19、求10000以内所有完数之和,完数是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完数。(注:所有变量用int数据类型定义!)答案:865820、/*数列1,2,1,4,7,12,23⋯具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7⋯.。下列程序先给出数列的第一项(1)、第二项(2)、第三项(1),再逐步计算其它项并保存在数组a中,最后求出该数列的第25项。请改正程序中的错误,并运行修改后的程序,给出程序结果。(注:只有一处错误!)*/答案:1323525#includeconio.h#includestdio.h#defineN30voidmain(){longa[N];intk;clrscr();a[0]=1;a[1]=2;a[2]=1;for(k=3;k=20;k++)a[k]=a[k-1]+a[k-2]+a[k-3];printf(%ld\n,a[k-1]);}21、/*求区间[200,3000]中所有回文数的和,回文数是正读与反读都是一样的数,如525,1551。*/答案:87970#includestdio.hinthws(longn){longx=n,t=0,k;while(x0){k=x%10;t=t*10+k;x=x/10;}if(___________)return1;elsereturn0;}voidmain()......{longk,s=0;inthws(longn);for(k=200;k=2000;k++)if(___________)s=s+k;printf(\n%ld,s);}22、/*下面的程序是求表达式的值:s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+...+(1*2*3*...*n)/(3*5*7*...(2*n+1))请将程序补充完整,并给出当n=25时,程序的运行结果(按四舍五入保留10位小数)。*/答案:1.5707963267#includestdio.hdoublefun(intn){doubles=1.0,t=1.0;intk;doublertn=1.0;for(k=1;k=n;k++){t=t*k;s=s*(2*k+1);_________________}returnrtn;}voidmain(){doublesum;__________printf(\n%.10lf,sum);}23、已知:Sn=2/1+3/2+4/3+⋯+(n+1)/n,求Sn不超过50的最大值(按四舍五入的方式精确到小数点后第三位)。答案:49.39524、计算Y=X/1!-X^3/3!+X^5/5!-X^7/7!+⋯⋯前20项的值(已知:X=2)。要求:按四舍五入的方式精确到小数点后第二位。答案:0.9125、若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例:3^2+4^2=5^2,则5为弦数,求[131,200]之间最小的弦数。答案:13526、已知X,Y,Z为三个正整数,且X^2+Y^2+Z^2=25^2,求X+Y+Z的最大值。答案:4327、猴吃桃:有一天小猴子摘下了若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。第二天接着吃了剩下的桃子中的一半,仍不过瘾,又多吃了一个。以后每天都是吃尚存桃子的一半零一个。到第10天早上小猴子再去吃桃子时,看到只剩下一个桃子了。问小猴子第一天共摘下了多少个桃子。答案:153428、求[1,50]之间的所有整数能构成直角三角形的三边的组数。例如:3*3+4*4=5*5,它们构成直角三角形,所以{3,4,5}作为一组,但{4,3,5}视为跟{3,4,5}相同的一组。答......案:2029、15元钱换成1元、2元、5元的票面,问有多少种不同的兑换方法?输出所有的兑换方法。答案:18种30、用迭代法求x等于a开平方的正数值。迭代公式为:xn+1=1/(2*(xn+a/xn)),要求直到前后两次求出的x的差的绝对值小于10-5为止。A的值从键盘输入。31、求最大的水仙花数,所谓水仙花数,指的是一个三位数,其各个数字的立方之和等于该数。答案:40732、一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米?第10次反弹多高?答案:299.6093750.09765633、编写程序,完成如下功能,输入8个float类型的实数,分别求最大值和最小值,保留三位小数输出最大值和最小值。34、编写程序输出如下字符图形:@@@@@@@@@@@@@@@@@@@@@⋯@@@35、计算:s=f(-30)+f(-29)+......+f(-1)+f(0)+f(1)+......+f(30)的值。其中函数定义如下:f(x)=(x+1)/(x-2)如果x1;f(x)=0如果x=0或x=2;f(x)=(x-1)/(x-2)如果x0。(按四舍五入保留6位小数)答案:65.22301836、编写程序输出如下字符图形(最后一行19颗星):***************⋯***⋯****37、企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可提成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?38、计算下面公式的值。T=1+1/(2*3)+1/(3*4)+⋯⋯+1/(m*(m+1)),当m=50时的结果(按四舍五入保留6位小数)。(注:所有变量用double数据类型定义!)答案:1.48039239、程序填空:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。程序分析:利用while语句,条件为输入的字符不为'\n'.#includestdio.h#includeconio.hmain(){charc;intletters