ImageVerifierCode 换一换
格式:DOCX , 页数:31 ,大小:39.23KB ,
资源ID:6336795      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6336795.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《C语言程序设计》复习题库答案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《C语言程序设计》复习题库答案.docx

1、C语言程序设计复习题库答案 C语言程序设计复习题库1、计算下面公式的值。T=1/1!+1/2!+1/3!+1/m! 当m=5时的结果(按四舍五入保留3位小数)。(注:所有变量用float数据类型定义!)答案:1.717main() float T=0,m,n=1; for(m=1;m=5;m+) n=n*m; T=T+1.0/n; printf(%.3fn,T);2、程序填空:用*号输出字母C的图案。#include stdio.h#include conio.hmain()_printf( *n);_getch(); #include#includemain() printf( *n); p

2、rintf(*n); printf(*n); printf( *n);3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,8+2+3+2=15,9+6+7+8=30。编写程序,求四位数的所有奇数中,这样的数(各位数字之和是15的倍数)的总和。(注:所有变量用long数据类型定义!) 答案:1533459long Zi_hanshu(long shu) long ge,shi,bai,qian; ge=shu%10; shi=shu%100/10; bai=shu%1000/100; qian=shu/1000; if(ge+shi+bai+qian)%15=0) return

3、 1; else return 0;main() long i,s=0; for(i=1001;i=9999;i+=2) if(Zi_hanshu(i)=1) s+=i; printf(这样的数的总和是%dn,s);4、 /*下面程序的功能是:计算并输出700以内的最大的10个能被13或者17整除的自然数之和。请改正程序中的错误,并运行,最后给出程序运行的正确结果。(注:只有一处错误!)*/ 答案:6591#include void main() int total=0, mc=1, k=700; int pm10,count=0; while( (k=2) & mc=10 ) if (k%1

4、3=0) | (k%17=0) pmmc = k; mc+; k-; for( k=1;k=10;k+ ) total += pmk-1; printf( %dn,total); 主函数中变量赋初值时mc=1改为mc=05、求x = 1+1/5+1/7+1/9+的近似值,直到最后一项的绝对值小于10-5为止。#includemain() int i=5; float n=1,x=0; while(fabs(n)=1e-5) x+=n; n=1.0/i; i+=2; printf(1+1/5+1/7+1/9+=%fn,x);6、计算如下公式的A20值。 A1=1, A2=1/(1+A1), A3

5、=1/(1+A2), A4=1/(1+A3), .(按四舍五入保留10位小数)。答案:0.6180339850main() double A1=1,A2; int i; for(i=1;i20;i+) A2=1.0/(A1+1); A1=A2; printf(A20=%.10fn,A1);7、求10,1600之间能被7整除的奇数之和。答案:90965main() int jishu,s=0; for(jishu=11;jishu=1600;jishu+=2) if(jishu%7=0) s+=jishu; printf(%dn,s);8、函数mystrlen(char *s)的功能是求字符串s

6、的长度。请填空。Int mystrlen(char *s)int num=0;while( ) _;return ( );9、100,500之间同时满足除以7余5,除以5余3,除以3余1的整数之和。答案:1042main() int shu,s=0; for(shu=100;shu=500;shu+) if(shu%7=5&shu%5=3&shu%3=1) s+=shu; printf(%dn,s);10、求100,999之间所有的素数的个数。答案:143int su_shu(int shu) int i; for(i=2;ishu;i+) if(shu%i=0) return 0; else

7、 return 1; main() int shu,n=0; for(shu=100;shu=999;shu+) if(su_shu(shu)=1) n+; printf(素数的个数为%d个n,n);11、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且A+B=B+C,即第1位数加上第2位数等于第2位数加上第3位数。答案:110main() int shu,n=0; for(shu=1000;shu=9999;shu+) if(shu%8=0) if(shu/1000+shu%1000/100=shu%1000/100+shu%100/10) n+; printf(%

8、dn,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 void main() long sum=0,a30=1,2,1; int k,j; for( k=3;k10;k+ ) ak = ak-1+ak-2+ak-3; for( j=1;j=10;j+ ) sum += aj; printf( %ldn,sum); for(j=1

9、;j=10;j+)改为for(j=0;j10;j+)或者for(j=0;j=9;j+)因为前面赋值时数组下标是从0开始的13、 /*求1到2000之间的双胞胎数的对数。双胞胎数:两素数差为2称为双胞胎数。例如227和229是一对双胞胎数,它们都是素数且差为2。*/ 答案:61#include int prime(int x) int k; for(k=2;kx;k+) if(_) break; if(k=x) return 1; else return 0;void main( ) int a,b,n=0; int prime(int x); for(a=2;a=1998;a+) if(pri

10、me(a)=1) b=a+2; if(_) n+; printf( %d n,n);第一空:if(x%k=0)break;第二空:if(prime(b)=1)n+;14、编写程序,统计200400之间的所有满足三个数字之积为42,三个数字之和为12的数的个数。答案:4int PanDuan(int shu) int ge,shi,bai; ge=shu%10; shi=shu%100/10; bai=shu/100; if(ge*shi*bai=42)&(ge+shi+bai=12) return 1; else return 0;main() int shu,n=0; for(shu=200

11、;shu=400;shu+) if(PanDuan(shu)=1) n+; printf(%dn,n);15、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)?答案:9main() int da,zhong,n=0; for(da=1;da=30-1-1;da+) for(zhong=1;zhong30-1-da;zhong+) if(3*da+2*zhong+1*(30-da-zhong)=50) n+; printf(%dn,n);16、爱因斯坦走台阶:有一台阶,如果每次走

12、两阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件的最小台阶数是多少?答案:119 ain() int shu=6; while(1)/死循不断环判断 shu+; if(shu%7=0&shu%6=5&shu%5=4&shu%4=3&shu%3=2&shu%2=1) break;/也可以使用标志位判断 printf(%dn,shu);17、 /*求1000以内最大的10个素数的和。*/ 答案:9664#include int prime(long n) long k; for

13、(k=2;k=2;t-) if(_) total=total+t; num+; if(num=10)break; 第一空:if(x%k=0)break;第二空:if(prime(t)=1)n+; printf(n%ld,total);18、 /*求1!+2!+3!+.+7!,7!表示7的阶乘。*/ 答案:5913#include long jc( long x) long k,fac=1; for(k=1;_;k+) fac *=k ; _;void main( ) long n,sum=0; long jc(long x); for(n=1;n=7;n+) _; printf(n%ld,su

14、m);第一空:for(k=1;k=x;k+)/循环x次;累乘即为x的阶乘第二空:return fac;/返回阶乘值第三空:sum=sum+jc(n);/阶乘值累加19、求10000以内所有完数之和,完数是指:一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如:6=1+2+3,则6就是一个完数。(注:所有变量用int数据类型定义!) 答案:8658 int PanDuan(int shu) int he=0,i=1; for(i=1;ishu;i+) if(shu%i=0) he+=i; if(he=shu) return 1; else return 0;main() int i,s

15、=0; for(i=0;i=10000;i+) if(PanDuan(i)=1) s+=i; printf(%dn,s);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项。请改正程序中的错误,并运行修改后的程序,给出程序结果。(注:只有一处错误!)*/答案:1323525#include #include #define N 30void main() long aN

16、; int k; clrscr(); a0 = 1; a1 = 2; a2=1; for( k=3;k=20;k+ ) ak = ak-1+ak-2+ak-3; printf( %ldn,ak-1); for(k=3;k=20;k+)改为for(k=3;k=24;k+)因为第25项为a24循环出来后k=25,故输出时应输出ak-121、/*求区间200,3000中所有回文数的和,回文数是正读与反读都是一样的数,如525,1551。*/ 答案:87970#include int hws(long n) long x=n,t=0,k; while(x0) k=x%10; t = t*10 + k;

17、 x=x/10; if( _) return 1; else return 0;void main( ) long k,s=0; int hws(long n); for(k=200; k=2000;k+) if(_) s=s+k; printf(n%ld,s);第一空:if(t=n)return 1;/t为n的倒序数,判断t和n是否相等来判断是否为回文数第二空:if(hws(k)=1);或者直接if(hws(k);因为if()里面非0为真,返回1时为真。此句判断是回文数则累加22、/*下面的程序是求表达式的值:s=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+.+(1*

18、2*3*.*n)/(3*5*7*.(2*n+1)请将程序补充完整,并给出当n=25时,程序的运行结果(按四舍五入保留10位小数)。*/答案:1.5707963267#include double fun(int n) double s=1.0, t=1.0; int k; double rtn=1.0; for(k=1;k=n; k+) t = t*k; s = s*(2*k+1); _ return rtn;void main() double sum; _ printf(n %.10lf,sum);第一空:rtn=rtn+t/s;第二空:sum=fun(25);23、已知:Sn=2/1+3

19、/2+4/3+(n+1)/n, 求Sn不超过50的最大值(按四舍五入的方式精确到小数点后第三位)。答案:49.395 main() float Sn=0,n=0; while(Sn=50) n+; Sn=Sn+(n+1)/n; Sn=Sn-(n+1)/n;/跳出循环时Sn大于50, /减去最后一次所加值即得符合要求的最大数 printf(%.3fn,Sn);24、计算Y=X/1!-X3/3!+X5/5!-X7/7!+前20项的值(已知:X=2)。要求:按四舍五入的方式精确到小数点后第二位。答案: 0.91 /*开始总是调试不出,后来才意识到是程序中涉及到的数据很大,均设为双精度型变量*/#in

20、cludedouble Mi(double m,int n)/求m的n次方函数 int i; double x=1.0; for(i=1;i=n;i+) x*=m; return x;double Jiecheng(int n)/求n的阶乘函数 int i; double x=1.0; for(i=1;i=n;i+) x*=i; return x;main() int i; double y=0,n; for(i=1;i=20;i+)/前20项 n=Mi(-1,i+1)*Mi(2,2*i-1)/Jiecheng(2*i-1);/各项大小 /Mi(-1,i+1)控制符号,Mi(2,2*i-1)为

21、幂分子,Jiecheng(2*i-1)为阶乘分母 y+=n;/各项和 printf(%.2fn,y);/四舍五入保留两位小数输出25、若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例:32+42=52,则5为弦数,求131,200之间最小的弦数。答案:135 #include/方法1main() int x,y,z; for(z=131;z=200;z+)/在131,200内查找 for(x=1;x=200;x+)/循环给x赋值 for(y=1;y=200;y+)/循环给y赋值 if(z*z=x*x+y*y)goto End;/只求满足条件的最小数,故一旦满足条件,则退出所有循环

22、End:/退出循环 printf(%dn,z);/输出满足条件的最小数 /方法2/*main() int x,y,z,shu; for(z=131;z=200;z+)/在131,200内查找 for(x=1;x=200;x+)/循环给x赋值 for(y=1;y=200;y+)/循环给y赋值 if(z*z=x*x+y*y) shu=z;/保存满足条件的最小的数 x=201; y=201; z=201;/通过赋值试循环结束 /只求满足条件的最小数,故一旦满足条件,则退出所有循环 printf(%dn,shu);/输出满足条件的最小数 */26、已知X,Y,Z为三个正整数,且X2+Y2+Z2=252

23、,求X+Y+Z的最大值。答案:43 #includemain() int x,y,z,max=0; for(x=1;x=25;x+) for(y=1;y=25;y+) for(z=1;zmax)max=x+y+z; /取满足条件的所有各数和的最大值 printf(%dn,max);/输出满足条件的所有各数和的最大值27、猴吃桃:有一天小猴子摘下了若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。第二天接着吃了剩下的桃子中的一半,仍不过瘾,又多吃了一个。以后每天都是吃尚存桃子的一半零一个。到第10天早上小猴子再去吃桃子时,看到只剩下一个桃子了。问小猴子第一天共摘下了多少个桃子。答案:1534

24、 /*纯粹是个数学题,计算思路出来了,程度也就出来了*/#includemain() int i,n=1;/n为剩余桃子个数,第十天为1个 for(i=1;i=9;i+)/小猴子吃了9天的桃子 n=2*(n+1);/前一天剩余的桃子数是今天剩余桃子数加1的两倍 printf(%dn,n);/输出第一天剩余的桃子数,即第一天小猴子摘下的桃子数28、求1,50之间的所有整数能构成直角三角形的三边的组数。例如:3*3+4*4=5*5,它们构成直角三角形,所以3,4,5作为一组,但4,3,5视为跟3,4,5相同的一组。答案:20 #includemain() int a,b,c;/定义三角形的三条边长

25、度为整型变量 int n=0;/定义组数,赋初值0初始化 for(a=1;a=50;a+)/选择第一边 for(b=1;b=50;b+)/选择第二边 for(c=1;c=50;c+)/选择第三边 /此处不考虑所选择的三条边是否能构成三角形,因为不能构成三角形时 /必不满足直角三角形的条件,对程序结果无影响 if(a*a+b*b=c*c)n+;/判断是否满足构成直角三角形的条件,满足则n加1 n=n/2;/a*a+b*b=c*c等式中,最长边c确定后补可改变,而a、b可互换值使等式成立, /此时组别均重复累加了一次,故最终需除以2(类比数学中排列组合例子) printf(%dn,n);/输出满足条件的组数29、15元钱换成1元、2元、5元的票面,问有多少种不同的兑换方法?输出所有的兑换方法。 答案: 18种#includemain() int i=1,j=1,k=1,n=0; printf(兑换方法有:n); printf(1元/张 2元/张 5元/张n); for(i=0;i=3;i+)/5元的最多3账 for(j=0;j=7;j+)/2元的最多7张 for(k=0;k=15;k+)/1元的最多15张 if(5*i+2*j+1*k=15) printf(%4d %4d %4dn,k,j,i); n+;/如果满足

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1