《C语言程序设计》复习题库.docx
- 文档编号:3662270
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:32
- 大小:39.75KB
《C语言程序设计》复习题库.docx
《《C语言程序设计》复习题库.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》复习题库.docx(32页珍藏版)》请在冰豆网上搜索。
《C语言程序设计》复习题库
《C语言程序设计》复习题库
1、计算下面公式的值。
T=1/1!
+1/2!
+1/3!
+……+1/m!
当m=5时的结果(按四舍五入保留3位小数)。
(注:
所有变量用float数据类型定义!
)
2、程序填空:
用*号输出字母C的图案。
#include"stdio.h"
#include"conio.h"
main()
{
_____________
printf("*\n");
_____________
_____________
getch();
}
3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30。
编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。
(注:
所有变量用long数据类型定义!
)
4、/*下面程序的功能是:
计算并输出700以内的最大的10个能被13或者17整除的自然数之和。
请改正程序中的错误,并运行,最后给出程序运行的正确结果。
(注:
只有一处错误!
)*/
#include
voidmain()
{
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位小数)。
7、求[10,1600]之间能被7整除的奇数之和。
8、函数mystrlen(char*s)的功能是求字符串s的长度。
请填空。
Intmystrlen(char*s)
{intnum=0;
while(){____;}
return();
}
9、[100,500]之间同时满足除以7余5,除以5余3,除以3余1的整数之和。
10、求[100,999]之间所有的素数的个数。
11、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。
12、/*数列1,2,1,4,7,12,23…具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7….。
下列程序的功能是求出该数列前10项的和。
请改正程序中的错误,并运行修改后的程序,给出程序结果。
(注:
只有一处错误!
)*/
#include
voidmain()
{
longsum=0,a[30]={1,2,1};
intk,j;
for(k=3;k<10;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。
*/
#include
intprime(intx)
{
intk;
for(k=2;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的数的个数。 15、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)? 16、爱因斯坦走台阶: 有一台阶,如果每次走两阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件的最小台阶数是多少? 17、/*求1000以内最大的10个素数的和。 */ #include intprime(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的阶乘。 */ #include longjc(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数据类型定义! ) 20、/*数列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项。 请改正程序中的错误,并运行修改后的程序,给出程序结果。 (注: 只有一处错误! )*/ #include #include #defineN30 voidmain() { 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。 */ #include inthws(longn) { longx=n,t=0,k; while(x>0) { 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位小数)。 */ #include doublefun(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的最大值(按四舍五入的方式精确到小数点后第三位)。 24、计算Y=X/1! -X^3/3! +X^5/5! -X^7/7! +……前20项的值(已知: X=2)。 要求: 按四舍五入的方式精确到小数点后第二位。 25、若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。 例: 3^2+4^2=5^2,则5为弦数,求[131,200]之间最小的弦数。 26、已知X,Y,Z为三个正整数,且X^2+Y^2+Z^2=25^2,求X+Y+Z的最大值。 27、猴吃桃: 有一天小猴子摘下了若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。 第二天接着吃了剩下的桃子中的一半,仍不过瘾,又多吃了一个。 以后每天都是吃尚存桃子的一半零一个。 到第10天早上小猴子再去吃桃子时,看到只剩下一个桃子了。 问小猴子第一天共摘下了多少个桃子。 28、求[1,50]之间的所有整数能构成直角三角形的三边的组数。 例如: 3*3+4*4=5*5,它们构成直角三角形,所以{3,4,5}作为一组,但{4,3,5}视为跟{3,4,5}相同的一组。 29、15元钱换成1元、2元、5元的票面,问有多少种不同的兑换方法? 输出所有的兑换方法。 30、用迭代法求x等于a开平方的正数值。 迭代公式为: xn+1=1/(2*(xn+a/xn)),要求直到前后两次求出的x的差的绝对值小于10-5为止。 A的值从键盘输入。 31、求最大的水仙花数,所谓水仙花数,指的是一个三位数,其各个数字的立方之和等于该数。 32、一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。 求它在第10次落地时,共经过多少米? 第10次反弹多高? 33、编写程序,完成如下功能,输入8个float类型的实数,分别求最大值和最小值,保留三位小数输出最大值和最小值。 34、编写程序输出如下字符图形: @@@@@@@@@@@ @@@@@@@@@@ … @@ @ 35、计算: s=f(-30)+f(-29)+......+f(-1)+f(0)+f (1)+......+f(30)的值。 其中函数定义如下: f(x)=(x+1)/(x-2)如果x>1;f(x)=0如果x=0或x=2;f(x)=(x-1)/(x-2)如果x<0。 (按四舍五入保留6位小数) 36、编写程序输出如下字符图形(最后一行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数据类型定义! ) 39、程序填空: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 程序分析: 利用while语句,条件为输入的字符不为'\n'. #include"stdio.h" #include"conio.h" main() { charc; intletters=0,space=0,digit=0,others=0; printf("pleaseinputsomecharacters\n"); while((c=getchar())! ='\n') { if(c>='a'&&c<='z'||c>='A'&&c<='Z') _________ elseif(c=='') _________ elseif(c>='0'&&c<='9') _________ else _________ } printf("allinall: char=%dspace=%ddigit=%dothers=%d\n",letters,space,digit,others); getch(); } 40、打印出如下图案(菱形) * *** ***** ******* ***** *** * 41、求出[2,478]以内的: (1)最大的素数。 *467 (2)素数数目。 *91 (3)所有素数之和。 *19580 42、已知: (1)若N=10,求Y。 *1304735 (2)若N=15,求Y。 *1.184172E+07 43、已知: 其中: X=0.25,n=1,2,┅,求: (1)Y值(精确到小数点后第5位)*1.28767 (2)与 (1)匹配的最小的n*7 44、以下程序输入三个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a、b、c的值。 例如: 读入后,a=10、b=20、c=30;交换后,a=20、b=30、c=10。 请填空。 #include<stdio.h> main() {inta,b,c,t; printf("Entera,b,c: "); scanf("%d%d%d",___); ___;a=b;___;___; printf("a=%db=%dc=%d\n",a,b,c); } 45.下面fun函数的功能是从a数组中查找值为y的元素;若找到,返回该元素的下标值,若不存在值为y的元素,返回0;数列放在a数组的a[1]到a[n]中,a[0]元素用来作为临时存储单元。 请填空。 fun(inta[],inty,intn) {intk=0; a[0]=y;k=n; while()k--; return(); } 46、/*下列程序的功能是求出二阶Fibonacci数列前10之和,1,1,2,3,5,8…。 请改正程序中的错误,并运行修改后的程序,给出程序结果。 (注: 只有一处错误! 3是第四项,5是第五项。 )*/答案: 143 #include voidmain() { longsum=0,a[30]={1,1,2}; intk; for(k=2;k<10;k++) a[k]=a[k-1]+a[k-2]; for(k=1;k<=10;k++) sum+=a[k]; printf("%ld\n",sum); } 47、20,160]之间的所有偶数的平方和。 48、求[10,2000]之间能被2或3或5整除的数之和。 49、求800以内的最大的20个素数之和。 50、求当n=60时下式的和: s=1+1/(1+2)+1/(1+2+3)+......+1/(1+2+3+......+n)(按四舍五入保留6位小数)。 51、编写程序: 输入x的值,按照下列公式计算cos(x) cos(x)=1-x2/2! +x4/4! -x6/6! +...精确到10-5。 《C语言程序设计》复习题库答案 1、计算下面公式的值。 T=1/1! +1/2! +1/3! +……+1/m! 当m=5时的结果(按四舍五入保留3位小数)。 (注: 所有变量用float数据类型定义! )答案: 1.717 #include main() {floati,T=0,a=1; for(i=1;i<=5;i++) {a=a/i; T+=a;} printf("T=%.3f",T); } 2、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30。 编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。 (注: 所有变量用long数据类型定义! )答案: 1533459 #include main() {longa,s=0; for(a=1000;a<=9999;a++) {if((a/1000+a/100%10+a/10%10+a%10)%15==0&&a%2==1) s+=a; } printf("%ld",s); } 4、/*下面程序的功能是: 计算并输出700以内的最大的10个能被13或者17整除的自然数之和。 请改正程序中的错误,并运行,最后给出程序运行的正确结果。 (注: 只有一处错误! )*/答案: 6591 #include voidmain() { inttotal=0,mc=0,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为止。 #include #include main() {floatX=1,a,i=5; while(fabs(a)>1e-5) {a=1/i; i+=2; X+=a; } printf("\nX=%10.8f",X); } 6、计算如下公式的A20值。 A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3),......(按四舍五入保留10位小数)。 答案: 0.6180339850 #include main() {doubleA=1,i; for(i=1;i<20;i++) { A=1/(1+A); } printf("%.10lf",A); } 7、求[10,1600]之间能被7整除的奇数之和。 答案: 90965 #include main() {inti,s=0; for(i=10;i<=1600;i++) {if(i%7==0&&i%2==1)s+=i;} printf("%d",s); } 8、函数mystrlen(char*s)的功能是求字符串s的长度。 请填空。 Intmystrlen(char*s) {intnum=0; while(s[i]=’\0’){num++;} return(num); } 9、[100,500]之间同时满足除以7余5,除以5余3,除以3余1的整数之和。 答案: 1042 #include main() {inti,s=0; for(i=100;i<=500;i++) {if(i%7==5&&i%5==3&&i%3==1)s+=i;} printf("%d",s); } 10、求[100,999]之间所有的素数的个数。 答案: 143 #include main() {inti,j,n=0; for(i=100;i<=999;i++) {for(j=2;j<=i-1;j++) if(i%j==0)break; if(j==i)n++; } printf("%d",n); } 11、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。 答案: 110 #include main() {inti,n=0; for(i=1000;i<=9999;i++) {if(i%8==0&&i/1000==i%100/10)n++;} printf("%d",n); } 12、/*数列1,2,1,4,7,12,23…具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4=1+2+1,7=2+1+4,12=1+4+7….。 下列程序的功能是求出该数列前10项的和。 请改正程序中的错误,并运行修改后的程序,给出程序结果。 (注: 只有一处错误! )*/ 答案: 311 #include voidmain() { longsum=1,a[30]={1,2,1}; intk,j; for(k=4;k<10;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 #include intprime(intx) { intk; for(k=2;k if(x%k==0)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(prime(b)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 语言程序设计 复习 题库