900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > c语言 程序设计 题库答案 p 《C语言程序设计》复习题库答案.doc

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

时间:2019-11-28 08:31:34

相关推荐

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

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

C语言程序设计复习题库1、计算下面公式的值。T1/11/21/31/m 当m5时的结果(按四舍五入保留3位小数)。(注所有变量用float数据类型定义)答案1.717mainfloat T0,m,n1;form1;m5;mnn*m;TT1.0/n;printf.3fn,T;2、程序填空用*号输出字母C的图案。include stdio.hinclude conio.hmain_printf *n;getch; includestdio.hincludeconio.hmainprintf *n;printf*n;printf*n;printf *n;3、8232和9678,它们的个、十、百、千各位数字之和是15的倍数,823215,967830。编写程序,求四位数的所有奇数中,这样的数各位数字之和是15的倍数的总和。注所有变量用long数据类型定义 答案1533459long Zi_hanshulong shulong ge,shi,bai,qian;geshu10;shishu100/10;baishu1000/100;qianshu/1000;ifgeshibaiqian150return 1;else return 0;mainlong i,s0;fori1001;i9999;i2ifZi_hanshui1si;printf这样的数的总和是dn,s;4、 /*下面程序的功能是计算并输出700以内的最大的10个能被13或者17整除的自然数之和。请改正程序中的错误,并运行,最后给出程序运行的正确结果。(注只有一处错误)*/ 答案6591include stdio.hvoid main int total0, mc1, k700; int pm10,count0; while k2 mc10 if k130 k170 pmmc k; mc; k; for k1;k10;k total pmk-1; printf dn,total; 主函数中变量赋初值时mc1改为mc05、求x 11/51/71/9的近似值,直到最后一项的绝对值小于10-5为止。includemath.hmainint i5;float n1,x0;whilefabsn1e-5xn;n1.0/i;i2;printf11/51/71/9fn,x;6、计算如下公式的A20值。 A11, A21/1A1, A31/1A2, A41/1A3, (按四舍五入保留10位小数)。答案0.6180339850maindouble A11,A2;int i;fori1;i20;iA21.0/A11;A1A2;printfA20.10fn,A1;7、求10,1600之间能被7整除的奇数之和。答案90965mainint jishu,s0;forjishu11;jishu1600;jishu2ifjishu70sjishu;printfdn,s;8、函数mystrlenchar *s的功能是求字符串s的长度。请填空。Int mystrlenchar *sint num0;while ;return ;9、100,500之间同时满足除以7余5,除以5余3,除以3余1的整数之和。答案1042mainint shu,s0;forshu100;shu500;shuifshu75shu53shu31sshu;printfdn,s;10、求100,999之间所有的素数的个数。答案143int su_shuint shuint i;fori2;ishu;iifshui0return 0;elsereturn 1;mainint shu,n0;forshu100;shu999;shuifsu_shushu1n;printf素数的个数为d个n,n;11、编写程序,求满足下列条件的所有四位数ABCD的个数,该四位数是8的倍数,且ABBC,即第1位数加上第2位数等于第2位数加上第3位数。答案110mainint shu,n0;forshu1000;shu9999;shuifshu80ifshu/1000shu1000/100shu1000/100shu100/10n;printfdn,n;12、 /*数列1,2,1,4,7,12,23具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4121,7214,12147.。下列程序的功能是求出该数列前10项的和。请改正程序中的错误,并运行修改后的程序,给出程序结果。(注只有一处错误)*/ 答案311include stdio.hvoid main long sum0,a301,2,1; int k,j; for k3;k10;k ak ak-1ak-2ak-3; for j1;j10;j sum aj; printf ldn,sum; forj1;j10;j改为forj0;j10;j或者forj0;j9;j因为前面赋值时数组下标是从0开始的13、 /*求1到2000之间的双胞胎数的对数。双胞胎数两素数差为2称为双胞胎数。例如227和229是一对双胞胎数,它们都是素数且差为2。*/ 答案61include stdio.hint primeint x int k; fork2;kx;k if break; ifkx return 1; else return 0;void main int a,b,n0; int primeint x; fora2;a1998;a ifprimea1 ba2; if n; printf d n,n;第一空ifxk0break;第二空ifprimeb1n;14、编写程序,统计00之间的所有满足三个数字之积为42,三个数字之和为12的数的个数。答案4int PanDuanint shuint ge,shi,bai;geshu10;shishu100/10;baishu/100;ifge*shi*bai42geshibai12return 1;elsereturn 0;mainint shu,n0;forshu200;shu400;shuifPanDuanshu1n;printfdn,n;15、有30个学生一起买小吃,共花钱50元,其中每个大学生花3元,每个中学生花2元,每个小学生花1元,问大、中、小学生的人数分配共有多少种不同的解(去掉某类学生数为0的解)答案9mainint da,zhong,n0;forda1;da30-1-1;daforzhong1;zhong30-1-da;zhongif3*da2*zhong1*30-da-zhong50n;printfdn,n;16、爱因斯坦走台阶有一台阶,如果每次走两阶,最后剩一阶;如果每次走三阶,最后剩两阶;如果每次走四阶,最后剩三阶;如果每次走五阶,最后剩四阶;如果每次走六阶,最后剩五阶;如果每次走七阶,刚好走完.求满足上述条件的最小台阶数是多少答案119 ainint shu6;while1死循不断环判断shu;ifshu70shu65shu54shu43shu32shu21break;也可以使用标志位判断printfdn,shu;17、 /*求1000以内最大的10个素数的和。*/ 答案9664include stdio.hint primelong n long k; fork2;kn-1;k if return 0; return 1; void main long t,total0,num0; int primelong n; fort1000;t2;t if totaltotalt; num; ifnum10break; 第一空ifxk0break;第二空ifprimet1n; printfnld,total;18、 /*求123.7,7表示7的阶乘。*/ 答案5913include stdio.hlong jc long x long k,fac1; fork1;;k fac *k ; ;void main long n,sum0; long jclong x; forn1;n7;n ; printfnld,sum;第一空fork1;kx;k循环x次;累乘即为x的阶乘第二空return fac;返回阶乘值第三空sumsumjcn;阶乘值累加19、求10000以内所有完数之和,完数是指一个数如果刚好与它所有的真因子(不包括该数本身)之和相等,如6123,则6就是一个完数。注所有变量用int数据类型定义 答案8658 int PanDuanint shuint he0,i1;fori1;ishu;iifshui0hei;ifheshureturn 1;elsereturn 0;mainint i,s0fori0;i10000;iifPanDuani1si;printfdn,s;20、/*数列1,2,1,4,7,12,23具有这样的特征,从第四项(也就是4)开始,每一项是前三项之和,4121,7214,12147.。下列程序先给出数列的第一项(1)、第二项(2)、第三项(1),再逐步计算其它项并保存在数组a中,最后求出该数列的第25项。请改正程序中的错误,并运行修改后的程序,给出程序结果。(注只有一处错误)*/答案1323525include conio.hinclude stdio.hdefine N 30void main long aN; int k; clrscr; a0 1; a1 2; a21; for k3;k20;k ak ak-1ak-2ak-3; printf ldn,ak-1; fork3;k20;k改为fork3;k24;k因为第25项为a24循环出来后k25,故输出时应输出ak-121、/*求区间200,3000中所有回文数的和,回文数是正读与反读都是一样的数,如525,1551。*/ 答案87970include stdio.hint hwslong n long xn,t0,k; whilex0 kx10; t t*10 k; xx/10; if _ return 1; else return 0;void main long k,s0; int hwslong n; fork200; k2000;k if_ ssk; printfnld,s;第一空iftnreturn 1;t为n的倒序数,判断t和n是否相等来判断是否为回文数第二空ifhwsk1;或者直接ifhwsk;因为if里面非0为真,返回1时为真。此句判断是回文数则累加22、/*下面的程序是求表达式的值s11/31*2/3*51*2*3/3*5*7.1*2*3*.*n/3*5*7*.2*n1请将程序补充完整,并给出当n25时,程序的运行结果按四舍五入保留10位小数。*/答案1.5707963267include stdio.hdouble funint n double s1.0, t1.0; int k; double rtn1.0; fork1;kn; k t t*k; s s*2*k1; _ return rtn;void main double sum; printfn .10lf,sum;第一空rtnrtnt/s;第二空sumfun25;23、已知Sn2/13/24/3n1/n, 求Sn不超过50的最大值(按四舍五入的方式精确到小数点后第三位)。答案49.395 mainfloat Sn0,n0;whileSn50n;SnSnn1/n;SnSn-n1/n;跳出循环时Sn大于50,减去最后一次所加值即得符合要求的最大数printf.3fn,Sn;24、计算YX/1-X3/3X5/5-X7/7前20项的值已知X2。要求按四舍五入的方式精确到小数点后第二位。答案 0.91 /*开始总是调试不出,后来才意识到是程序中涉及到的数据很大,均设为双精度型变量*/includestdio.hdouble Midouble m,int n求m的n次方函数int i;double x1.0;fori1;in;ix*m;return x;double Jiechengint n求n的阶乘函数int i;double x1.0;fori1;in;ix*i;return x;mainint i;double y0,n;fori1;i20;i前20项nMi-1,i1*Mi2,2*i-1/Jiecheng2*i-1;各项大小Mi-1,i1控制符号,Mi2,2*i-1为幂分子,Jiecheng2*i-1为阶乘分母yn;各项和printf.2fn,y;四舍五入保留两位小数输出25、若某正整数平方等于某两个正整数平方之和,称该正整数为弦数。例324252,则5为弦数,求131,200之间最小的弦数。答案135 includestdio.h方法1mainint x,y,z;forz131;z200;z在131,200内查找forx1;x200;x循环给x赋值fory1;y200;y循环给y赋值ifz*zx*xy*ygoto End;只求满足条件的最小数,故一旦满足条件,则退出所有循环End退出循环printfdn,z;输出满足条件的最小数方法2/*mainint x,y,z,shu;forz131;z200;z在131,200内查找forx1;x200;x循环给x赋值fory1;y200;y循环给y赋值ifz*zx*xy*yshuz;保存满足条件的最小的数x201;y201;z201;通过赋值试循环结束只求满足条件的最小数,故一旦满足条件,则退出所有循环printfdn,shu;输出满足条件的最小数*/26、已知X,Y,Z为三个正整数,且X2Y2Z2252,求XYZ的最大值。答案43 includestdio.hmainint x,y,z,max0;forx1;x25;xfory1;y25;yforz1;z25;z循环对x、y、z赋值ifx*xy*yz*z25*25判断是否满足条件ifxyzmaxmaxxyz;取满足条件的所有各数和的最大值printfdn,max;输出满足条件的所有各数和的最大值27、猴吃桃有一天小猴子摘下了若干个桃子,当即吃掉一半,还觉得不过瘾,又多吃了一个。第二天接着吃了剩下的桃子中的一半,仍不过瘾,又多吃了一个。以后每天都是吃尚存桃子的一半零一个。到第10天早上小猴子再去吃桃子时,看到只剩下一个桃子了。问小猴子第一天共摘下了多少个桃子。答案1534 /*纯粹是个数学题,计算思路出来了,程度也就出来了*/includestdio.hmainint i,n1;n为剩余桃子个数,第十天为1个fori1;i9;i小猴子吃了9天的桃子n2*n1;前一天剩余的桃子数是今天剩余桃子数加1的两倍printfdn,n;输出第一天剩余的桃子数,即第一天小猴子摘下的桃子数28、求1,50之间的所有整数能构成直角三角形的三边的组数。例如3*34*45*5,它们构成直角三角形,所以3,4,5作为一组,但4,3,5视为跟3,4,5相同的一组。答案20 includestdio.hmainint a,b,c;定义三角形的三条边长度为整型变量int n0;定义组数,赋初值0初始化fora1;a50;a选择第一边forb1;b50;b选择第二边forc1;c50;c选择第三边此处不考虑所选择的三条边是否能构成三角形,因为不能构成三角形时必不满足直角三角形的条件,对程序结果无影响ifa*ab*bc*cn;判断是否满足构成直角三角形的条件,满足则n加1nn/2;a*ab*bc*c等式中,最长边c确定后补可改变,而a、b可互换值使等式成立, 此时组别均重复累加了一次,故最终需除以2(类比数学中排列组合例子)printfdn,n;输出满足条件的组数29、15元钱换成1元、2元、5元的票面,问有多少种不同的兑换方法输出所有的兑换方法。 答案 18种includestdio.hmainint i1,j1,k1,n0;printf兑换方法有n;printf1元/张 2元/张 5元/张n;fori0;i3;i5元的最多3账forj0;j7;j2元的最多7张fork0;k15;k1元的最多15张if5*i2*j1*k15printf4d 4d 4dn,k,j,i;n;如果满足条件,n加1printf共有d种兑换方法n,n;输出可兑换方法种数30、用迭代法求x等于a开平方的正数值。迭代公式为xn11/2*xna/xn,要求直到前后两次求出的x的差的绝对值小于10-5为止。A的值从键盘输入。includestdio.hincludemath.hmainfloat x,a,m;scanff,xa;domx;x1.0/2*xa/x;printffn,x;whilefabsx-m1e-5;printffn,x;31、求最大的水仙花数,所谓水仙花数,指的是一个三位数,其各个数字的立方之和等于该数。 答案407 includestdio.hint Shuiint x判断水仙花数子函数int ge,shi,bai;gex10;shix100/10;baix/100;分离个、十、百位ifxge*ge*geshi*shi*shibai*bai*bai判读是否是水仙花数return 1;是则返回1elsereturn 0;不是则返回0mainint i;fori999;i100;i三位数中找最大的水仙花数,从大到小找ifShuii判断是否是水仙花数,也可以写成ifShuii1,因if里面非0为真,可不写1printf最大的水仙花数为dn,i;break;找到最大水仙花数,打印并跳出循环32、一球从100米的高度自由落下,每次落地后反跳回原高度的一半,再落下。求它在第10次落地时,共经过多少米第10次反弹多高 答案 299.609375 0.097656 includestdio.hmainfloat s0,x100;x为落下高度,s为小球经过的总路程int i;fori1;i10;i反弹和下落设为一个来回,两者高度相等ss2*x;小球一个来回的距离为2*x,故总路程为每次反弹的高度两倍的总和x/2;小球每次反弹的高度是上次的一半s-100;由于第一次的100米只有落下没有反弹,故多加了100米,需减去printf小球共进过 f 米n,s;printf第10次反弹 f 米n,x;33、编写程序,完成如下功能,输入8个float类型的实数,分别求最大值和最小值,保留三位小数输出最大值和最小值。includestdio.hmainint i;float x;定义变量用于存放输入的float型数float max,min;定义两个变量存放最大数和最小数printf请输入8个float型数n;scanff,输入第一个数maxminx;给最大数和最小数赋初值fori1;i8;i还要输入7个数scanff,ifmaxxmaxx;找最大数else ifminxminx;找最小数printfThe max is .3fn,max;printfThe min is .3fn,min;/*也可以用数组的方式存放变量*/34、编写程序输出如下字符图形 mainint i,j;fori1;i11;i一共输出11行,i表示第i行forj1;j12-i;j第i行有12-i个printf;printfn;35、计算sf-30f-29f-1f0f1f30的值。其中函数定义如下fxx1/x-2 如果 x1; fx0 如果 x0 或 x2 ;fxx-1/x-2 如果 x0。按四舍五入保留6位小数 答案65.223018 includestdio.h /*总觉得题目给出的式子有问题,*/includestdio.hfloat fint xifx0return floatx-1/x-2;else ifx0 x2return 0.0;else return floatx1/x-2;mainfloat s0;int i;fori-30;i30;isfi;printf.6fn,s;36、编写程序输出如下字符图形(最后一行19颗星)* * * * * * * * * * * * * * * * includestdio.hmainint i,n;forn1;n9;n一共输出9行,n为行数fori1;i9-n;i第n行前面有9-n个空格printf ;fori1;i2*n1;i第n行一共有2*n1个“*”printf*;printfn;换行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、计算下面公式的值。 T11/2*31/3*41/m*m1,当m50时的结果(按四舍五入保留6位小数)。(注所有变量用double数据类型定义) 答案1.480392 includestdio.hmaindouble T0,m;form2;m50;m从第二项开始TT1/m*m1;累加printf.6fn,T1;结果加上第一项1输出39、程序填空输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。程序分析利用while语句,条件为输入的字符不为n.include stdio.hinclude conio.hmain char c; int letters0,space0,digit0,others0; printfplease some charactersn; whilecgetcharn ifcaczcAcZ _ else ifc _ else ifc0c9 _ else _ printfall in allchard spaced digitd othersdn,letters, space,digit,others; getch;第一空letters;第二空space;第三空digit;第四空others;40、打印出如下图案(菱形) * * * includestdio.hmainprintf *n;printf *n;printf *n;printf*n;printf *n;printf *n;printf *n;41、求出2,478以内的 1最大的素数。 *467 2素数数目。 *91 3所有素数之和。 *19580 includestdio.hint Sushuint x判断素数子函数int i;fori2;ix;iifxi0break;ifixreturn 0;else return 1;mainint x,n0,s0,max;x为待检测数,n为素数个数,s为所有素数和,max为最大的素数forx2;x478;x从小到大检测素数ifSushux1maxx;一直赋值给max,最后一次所赋的值即为最大的素数n;素数的个数累加sx;所有素数和累加printf1最大的素数是dn,max;printf2素数的数目为d个n,n;printf3所有的素数之和为dn,s;42、已知 1若N10,求Y 。 *1304735 2若N15

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。