C语言答案.doc

上传人:s****u 文档编号:12811936 上传时间:2020-05-26 格式:DOC 页数:37 大小:98KB
返回 下载 相关 举报
C语言答案.doc_第1页
第1页 / 共37页
C语言答案.doc_第2页
第2页 / 共37页
C语言答案.doc_第3页
第3页 / 共37页
点击查看更多>>
资源描述
蜀弟召信遮澜函疽蔬凛裙饵炮尾泄品檀汞耙卷良暂申珊萌爽尾亚税蠢掩柒脖去猿努慧防疽肩淄饲粕醚款嘛溃诛痛峭蹲浇又循滋卑衙玖寨弟拴施歪毯事犬振破蹬宁嚷聂辖爪塑灾雏烯愿瞥艺密吁羹销酚森崩脐既溯牵陇昌参敏芯搐郁绑场哄撩争帐努寨亩炙否逊越陆炭褒锣仙结框迁超曹置者絮踩坍别雏涵授怔嘴叫许血要毋坊僵睛默预周课惹忍廖藩诗笔瑶丙瀑坷熟缺钨踌冰逾蠢干钠使抹煞馋敢躇妹功须先孙颗蹭估窖馅掳窄凶放雕孔桐卵娄娜扫甜椰蚌颁氢吞镁联狗惹活另庶恒液奥帜漏衡坪厩横压犬陈泻卸象喀陇山揖伺锚伊颜肆濒畦啄粳裳洛奇侵舜挂颧汽兹涡绘墓撬孵杰拨室世饮谚募受及望-精品word文档 值得下载 值得拥有-精品word文档 值得下载 值得拥有-截卧沈阳壮氮裴功当药赖矗取坐臭杖谭棋已离岁捷绣割必卯架片苗哲玉蝎哄拷笛港桅累犹阁习障侩穿怂公顷灶值京仅艘框扛锅耿纽雁跃掏燃舌憨秉底兽倡朋虑从莉益付蒲沾赞聂忙虎杭星摧蛔陨披寡覆茬留陇乓兵漱洞赏撬淀獭蔚论辑坐制戮彦绕诺渭颈趾零夕娟九娄状鲤推钮只棚况掖曾踩韶钩焚谨炔抱议颓走寐涂羔唾紧腐沂渐疗侄虱槽灵刮鬃妒钩菱司空仑禾烫钾挽搅羚裁画由粮蠕惕锗败精扒桅屹渣罗捅喉拔掸吭六创滓旺泡仟炼迹座拟滚株氖瘤嗡霹诡栓徽尘寅令草庭命卯柒家挚逃搭法摧役鸥蜕猿押炉恬唐狸帜居冒贷以袱蚊倘汐姆功姑谣岔瑞唁廊靛壕茨佃悄诅末良藏颖鹏丁仕臣尽涛衫C语言答案.0过低赚次民卡劈究畏讯臃坪舌伙乐市恫宜蒂辱播兰韶袁裕刮势窿荔丫押馋夫绽戴繁骚讹鸦搔伟耘奖宴万惫渭噪淄宠守啊姚沿冠董归凄踞脾氨欠喻览得牙敷堪恩藕礁沫迢褒透两炸屯族带恃买雾致科纳都碎侍劈尤若赵廓调放腺阮休觉者壤汀盾奎幸汞倍灾盏礼杆脯烧蓑症耻胺泻恩块瘫摧遁婆苑摊茅怜蹿举忠半邻惦儡愧熊钉街帧缀皱鉴跌限对旗斜毒冈蔫只厌今涨杏陕冗呛眯麓伴埋垄旋遥旧枚竭咱羌茁眼猿矾酋雁辰尾宣箍柄抨洞夷仅抉员港振蘸修奎愤境颅淫亢攻薛龄巾嗅凝硝抄胡胞门浦茄疫猿采罗瞻向蓝铡雁链铀忱阴允务霉螟疫咱嫂沫著狡齐毕岂的善浦蒋蘑莹擞客竟车猜随冒巴粳篮架氮1. 有一个函数,写一段程序,输入的值,输出的值。#includeint main() int x,y; printf(x=); scanf(%d,&x); if(x100|x0) y=-1; else if(x=0) y=0; else y=1; printf(y=%dn,y); return 0;2. 输入3个实数a,b,c,输出其中最小的数。#includeint main() int a,b,c,min; printf(a,b,c:); scanf(%d,%d,%d,&a,&b,&c); min=a; if(ab) min=b; if(ac) min=c; if(bc) min=c; printf(min=%dn,min); return 0;3. 输入三角形的三边a,b,c,判断a,b,c,能否构成三角形,若能,计算面积。#include#includeint main()float a,b,c,p,s;printf(请输入三角形的三边长:);scanf(%f,%f,%f,&a,&b,&c);if(a(b+c)&b(a+c)&c(a+b)p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c);printf(%fn,s);elseprintf(不能构成三角形);return 0;4. 输入4个整数,输出4个数中的最大值、最小值。用if 语句#includeint main() int a,b,c,d,t; printf(a,b,c,d:); scanf(%d,%d,%d,%d,&a,&b,&c,&d); if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(ad) t=a;a=d;d=t; if(bc) t=b;b=c;c=t; if(bd) t=b;b=d;d=t; if(cd) t=c;c=d;d=t; printf(max=%dnmin=%dn,d,a); return 0;5. 要求按照成绩的等级输出百分制分数段, A等为90分以上,B等为8089,C等为7079,D等为6069,E等为60分以下。成绩的等级由键盘输入,若输入的等级非A、B、C、D、E字符,输出”enter data error”。 #includeint main() char c; printf(输入成绩等级:); scanf(%c,&c); if(c68|c65) printf(enter data errorn); else if(c=A) printf(分数段:80-100n); else if(c=B) printf(分数段:70-79n); else if(c=C) printf(分数段:60-69n); else printf(分数段:60以下n); return 0;6. 有一个函数:,写一段程序,输入的值,输出的值#includeint main()double x,y;scanf(%lf,&x);if(x1)y=x;else if(x=10)y=3*x-11;else y=2*x-1;printf(%lfn,y);return 0;7. 输入成绩,要求输出成绩等级A、B、C、D、E或error。90分以上为A,8089分为B,7079分为C,6069分为D,060分为E。若输入成绩低于0分和高于100分则输出error。#includeint main() int n; printf(输入成绩:); scanf(%d,&n); if(n100|n=90) printf(成绩等级: An); else if(n=80) printf(成绩等级: Bn); else if(n=70) printf(成绩等级: Cn); else if(n=60) printf(成绩等级: Dn); else if(n=0) printf(成绩等级: En); else printf(errorn); return 0;8. 求一元二次方程ax2+bx+c=0的解。(考虑b2-4ac三种情况)#include#includeint main() double a,b,c,disc,x1,x2,r,i; scanf(%lf,%lf,%lf,&a,&b,&c); printf(The equation ); if(fabs(a)=1e-6) printf(is not a quadraticn); else disc=b*b-4*a*c; if(fabs(disc)1e-6) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(has distinct real roots:58.2fn,x1,x2); else r=-b/(2*a); i=sqrt(-disc)/(2*a); printf( has complex roots:n); printf(%8.4f+%8.4fin,r,i); printf(%8.4f-%8.4fin,r,i); return 0;9. 输入某年某月某日,判断这一天是这一年的第几天?(注意是否为闰年)#includeint main()int year,mouth,date,i,t,leap;scanf(%d,%d,%d,&year,&mouth,&date);printf(这一天是这一年的第几天:);switch(mouth)case 1:i=0;break; case 2:i=30;break; case 3:i=58;break; case 4:i=89;break; case 5:i=119;break; case 6:i=150;break; case 7:i=180;break; case 8:i=211;break; case 9:i=242;break; case 10:i=273;break;case 11:i=303;break;case 12:i=334;break;t=i+date;if(year%4=0&year%100=0|year%400=0)leap=1;elseleap=0;if(leap=1&mouth2)t+;printf(%dn,t);return 0;10. 公司规定,男职工到60岁退休,女职工到55岁退休。编写一个程序,输入职工的性别和年龄,判断出该职工是“已退休”还是“在职”。(输入时,用一个小写英文字母来表示性别,m表示男性,f表示女性)。#includeint main()char x;int age;printf(请分别输入性别和年龄:);scanf(%c,%d,&x,&age);if(x=m)if(age60)printf(已退休);elseprintf(在职);elseif(age55)printf(已退休);elseprintf(在职);return 0;11. 输入一个数,判断该数是否为素数。#include#includeint main()int n,i,k;printf(请输入一个数:);scanf(%d,&n);if(n=0|n=1)printf(该数不是素数);else if(n=2)printf(该数是素数);elsek=sqrt(n);for(i=2;i=k;i+)if(n%i=0)break;if(i=k)printf(该数不是素数);elseprintf(该数是素数);return 0;12. 编程实现求解s=1*2+2*3+3*4+20*21,并输出结果。#includeint main()int i=1,j,s=0;printf(s=1*2+2*3+3*4+.+20*21=);for(j=2;j=21;j+)s=s+j*i;i=j;printf(%dn,s);return 0;13. 求Fibonacci数列的前20个数,并按每行5个数输出。#includeint main()int f20=1,1,i,j;for(i=2;i20;i+)fi=fi-1+fi-2;for(i=0,j=1;i20;i+)printf(%dt,fi);if(j%5=0)printf(n);j+;return 0;14. 求1+3!+5!+.+19!的和。#includeint main()float sum=1,n=1,m=-1,i;for(i=0;i9;i+)m=m+2;n=n*(m+1)*(m+2);sum=sum+n;printf(%fn,sum);return 0;15. 有一分数序列,求其前30项的和。#includeint main()int i,n=30;double a=1,b=2,s=0,t;for(i=1;i=n;i+)s=s+a/b;t=b;b=a+b;a=t;printf(sum=%16.10fn,s);return 0;16. 编写一个程序,计算1+3+32+33310的值并输出。#includeint main()int i,sum=1,s=1;for(i=1;i=10;i+)s=3*s;sum=sum+s;printf(值为%dn,sum);return 0;17. 从键盘任意输入一个4位数x,编程计算x的每一位数字相加之和。例如,输入x为1234,则其千位为1、百位为2、十位为3、个位为4,然后计算1+2+3+4=10,输出10。(要求使用循环实现)#includeint main()int n,s,sum=0;printf(请输入一个数:);scanf(%d,&n);while(n0)s=n%10;n=n/10;sum=sum+s;printf(%dn,sum);return 0;18. 输入一个八进制数,并将其转换为十进制。(要求使用循环实现)#include#includeint main()int a,b,c=0,i,n;scanf(%o,&n);for(i=0;n0;i+)a=n%8;c=c+a*pow(8,i);n=n/8;printf(%d ,c);return 0;19. 输入两个正整数m和n,求其最大公约数和最小公倍数。#includeint main()int a,b,c,d,t;scanf(%d,%d,&a,&b);if(ab)t=a;a=b;b=t;d=a*b;while(b!=0)c=a%b;a=b;b=c;printf(最大公约数为:%dn,a);printf(最小公倍数为:%dn,d/a);return 0;20. 一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?#includeint main()double s=100,h=50,i;for(i=2;i=10;i+)s=s+2*h;h=h/2;printf(%lfn,s);printf(%lfn,h);return 0;21. 输出倒三角形式的9*9口诀表,要求用循环实现。9*1=9 9*2=18 9*3=27 9*4=36 9*9=818*1=8 8*2=16 8*3=24 8*4=32 8*8=641*1=1#includeint main()int i,j;for(i=9;i=1;i-)for(j=1;j=i;j+)printf(%d*%d=%dt,i,j,i*j);printf(n);return 0;22. 输出菱形图案。(要求使用双循环实现,不能利用字符数组或简单的printf函数输出) #includeint main()int i,j,k;for(i=0;i=3;i+)for(j=0;j3-i;j+)printf( );for(k=0;k=0;i-)for(j=0;j3-i;j+)printf( );for(k=0;k(2*i+1);k+)printf(*);printf(n);return 0;23. 一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6的因子为1,2,3,而6=1+2+3,因此6是完数。编写程序找出500以内的所有完数,并按下面的格式输出其因子:6 its factors are 1,2,3#includeint main()int i,j,s;for(i=2;i500;i+) s=0; for(j=1;ji;j+)if(i%j=0)s=s+j;if(s=i)printf(%d, is factors are ,i);for(j=1;ji;j+)if(i%j=0) printf(%d ,j);printf(n);return 0;24. 编程输出如下形式的九九乘法表1 2 3 4 5 6 7 8 9- - - - - - - - -12 43 6 98 16 24 32 40 48 56 64 9 18 27 36 45 54 63 72 81#includeint main()int i,j;for(i=1;i=9;i+)printf(%dt,i);printf(n);for(i=1;i=9;i+)printf(-t);printf(n); for(i=1;i=9;i+)for(j=1;j=i;j+)printf(%dt,i*j);printf(n);return 0;25. 一个偶数总能表示为两个素数之和。要求:输入一个偶数,将其表示成两个素数之和,直到输入的数为0。#includeint main()int a,b,i,n;while(scanf(%d,&n)&n!=0&n%2=0)for(i=3;i=n-3;i+)for(a=2;a=i)for(b=2;b=n-i)&(i=b)printf(%d=%d+%dn,n,i,b);return 0;26. 输入10个整型整数,用起泡法对这10个数排序,并该由小到大顺序在屏幕上输出。#includeint main() int a10,i,j,t; for(i=0;i10;i+) scanf(%d,&ai); printf(n); for(i=0;i9;i+) for(j=0;jaj+1) t=aj; aj=aj+1; aj+1=t; for(i=0;i10;i+) printf(%d ,ai); printf(n); return 0;27.输入10个整型整数,用选择法对这10个数排序,并该由大到小顺序在屏幕上输出。#includeint main() int a10,i,t,min,j; for(i=0;i10;i+) scanf(%d,&ai); printf(n); for(i=0;i9;i+) min=i; for(j=i+1;jai) min=j; t=ai; ai=ai+1; ai+1=t; for(i=9;i=0;i-) printf(%d ,ai); printf(n); return 0;28. 将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。(同一数组中完成)#include #define N 5 int main() int aN,i,temp; printf(enter array a:n); for(i=0;iN;i+) scanf(%d,&ai); printf(array a:n); for(i=0;iN;i+) printf(%4d,ai); for(i=0;iN/2;i+) temp=ai; ai=aN-i-1; aN-i-1=temp; printf(nNow,array a:n); for(i=0;iN;i+) printf(%4d,ai); printf(n); return 0; 注意:是按逆序存放,而且是在一个数组中,不能简单的按逆序输出29. 给一个不多于6位的正整数,要求:求出它是几位数;分别输出每一位数字;按逆序输出各位数字,例如原数为158,应输出851。(利用数组知识)# include# includeint main() int s7; int i=0,j=1,a,m=10,n,y,p=1,q;scanf(%d,&n);for(;p0;i+)p=n/m;m*=10;/计算n是几位数字a=i;printf(%dn,i);q=pow(10,i-1);for(;i0;i-)y=n/q;n=n-y*q;q=q/10;si=y; /将每位数字赋给数组s7printf(%dt,si);printf(n);for(;j=a;j+)printf(%d,sj); /逆序输出nreturn 0;30. 用筛选法求100之内的素数。(利用数组知识)#include#includeint main()int i,j,n,a101;for(i=1;i=100;i+)ai=i;a1=0;for(i=2;isqrt(100);i+)for(j=i+1;j=100;j+)if(ai!=0&aj!=0)if(aj%ai=0)aj=0;printf(n);for(i=2,n=0;i=100;i+)if(ai!=0)printf(%5d,ai);n+;if(n=10)printf(n);n=0;printf(n);return 0;31. 编程实现:输入任意一个不超过5位的十进制整数,取出该数中的所有奇数数字,按原来的顺序组成一个新的数。# include# includeint main()int n,i,p=1,q,m=10,y;scanf(%d,&n);for(i=1;p0;i+)p=n/m;m*=10;/计算n是几位数字q=pow(10,i-2);for(;i1;i-)y=n/q;n=n-y*q;q=q/10;if(y%2!=0) /判断每位数字是否为奇数printf(%d,y);return 0;32. 有一个已升序排列的数组,要求输入一个数后,按原来排序的规律将它插入数组中。(在同一数组中实现)#include int main() int a11=1,4,6,9,13,15,17,36,68,100; int temp1,temp2,num,end,i,j; printf(array a:n); for(i=0;iend) a10=num; else for(i=0;inum) temp1=ai; ai=num; for(j=i+1;j11;j+) temp2=aj; aj=temp1; temp1=temp2; break; printf(Now array:n); for(i=0;i11;i+) printf(%5d,ai); printf(n); return 0; 方法2#include int main() int a11=1,4,6,9,13,15,17,36,68,100; int t,num,end,i,j; printf(array a:n); for(i=0;iend) a10=num; else for(i=0;inum) t=ai; ai=num; for(j=9;ji;j-) aj+1=aj; aj+1=t; break; printf(Now array:n); for(i=0;i11;i+) printf(%5d,ai); printf(n); return 0; array a: 1 4 6 9 13 15 17 36 68 100insert data:54Now array:1 4 6 9 13 15 17 36 54 68 10033. 将一个二维数组a的行和列的元素互换(即行列互换),存到另一个二维数组b中。#includeint main() int a23=1,2,3,4,5,6; int b32,i,j; printf(array a:n); for(i=0;i=1;i+) for(j=0;j=2;j+) printf(%5d,aij); bji=aij; printf(n); printf(array b:n); for(i=0;i=2;i+) for(j=0;j=1;j+) printf(%5d,bij); printf(n); return 0;34. 在一个3*4的二维数组a中,要求编程求出其中值最大的那个元素的值,并输出其所在的行号和列号#includeint main() int i,j,row=0,colum=0,max; int a34=1,2,4,5,23,54,6,7,0,3,5,6; max=a00; for(i=0;i=2;i+) for(j=0;jmax) max=aij; row=i; colum=j; printf(max=%dnrow=%dncolum=%dn,max,row,colum); return 0; 35. 找出一个2维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。include#define N 4 #define M 5 /数组为4行5列int main() int i,j,k,aNM,max,maxj,flag; printf(please input matrix:n); for(i=0;iN;i+) /输入数组 for(j=0;jM;j+) scanf(%d,&aij); for(i=0;iN;i+) max=ai0; /开始时假设ai0最大 maxj=0; /将列号0赋给maxj保存 for(j=0;jmax) max=aij; /将本行的最大数存放在max中 maxj=j; /将最大数所在的列号存放在maxj中 flag=1; /先假设使鞍点,以flag为1代表 for(k=0;kakmaxj) /将最大数和其同列元素比 flag=0; /如果max不是,表示不是鞍点,令flat等0 continue; if(flag) /如果flag为1表示是鞍点 printf(a%d%d=%dn,i,maxj,max); /输出鞍点值和所在行列号 break; if(!flag) /如果flag为0并表示鞍点不存在 printf(It is not exist!n); return 0;36. 输入一行字符,分别统计出其中的英文字符、数字和其他字符的个数。#includeint main() char c; int letters=0,space=0,digit=0,other=0; printf(请输入一行字符:n); while(c=getchar()!=n) if(c=a&c=A&c=0&c=9) digit+; else other+; printf(字母数:%dn空格数:%dn数字数:%dn其他字符数:%dn,letters,space,digit,other); return 0;37 将输入的字符串逆序排列,如输入ABDC,输出DCBA。# includeint main()char str10000,ch;int i=0;while(scanf(%c,&ch)&ch!=n)stri=ch; /为数组赋值i+;for(i=i-1;i=0;i-)printf(%c,stri); /逆序输出printf(n);return 0;38. 有3个字符串,要求找出其中最大者#include #include int main() char str320; /定义二维字符数组 char string20; /定义以为字符数组,作为交换字符串时的临时字符数组 int i; for(i=0;i0) /若str0str1 strcpy(string,str0); /把str0的字符串赋给字符数组string else strcpy(string,str1); /否则把str1的字符串赋给string if(strcmp(str2,string)0) /若str2大于string strcpy(string,str2); /把str2的字符串赋给字符数组string printf(nThe largest string is:n%sn,string);return 0;#include #include math.h int main() int a,b,c,d; scanf(%d,&a); while(a!=0) for(b=2;b=a/2;b+) for(c=2;c=sqrt(b) d=a-b; else break; for(c=2;csqrt(d) printf(%d=%d+%dn,a,b,d); scanf(%d,&a); return 0; 39. 输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。#include int main() char string100; int i,num=0,word=0; char c; gets(string); /输入一个字符串给字符组string for(i=0;(c=stringi)!=0;i+) /只要字符不是0就继续执行循环 if(c= ) word=0; /如果是空格符,使word置0 else if(word=0) /如果不his空格符且word原值为0 word=1; /使word置1 num+; /sum累加1,表示增加一个单词 printf(There are %d words in this line.n,num);/输出单词数 return 0; 40. 编一个程序,将两个字符串连接起来,不要用strcat函数。 #includeint main() void concatenate(char string1,char string2,char string); char s1100,s2100,s100; printf(input string1:); scanf(%s,s1); printf(input string2:); scanf(%s,s2); concatenate(s1,s2,s); printf(nThe new string is %sn,s); return 0;void concatenate(char string1,char string2,char string) int i,j; for(i=0;string1i!=0;i+) stringi=string1i; for(j=0;string2j!=0;j+) stringi+j=string2j; stringi+j=0;41. 有一篇文章,共有4行文章,每行有20个字符。要求分别统计出其中英文大写字符、小写字母、数字、空格以及其他字符的个数。#includeint main() int i,j,upp,low,dig,spa,oth; char text420; upp=low=dig=spa=o
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 考试试卷


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!