《c语言学习知识习题集及其规范标准答案爱课程.doc》由会员分享,可在线阅读,更多相关《c语言学习知识习题集及其规范标准答案爱课程.doc(53页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第一章1.1题目内容:使用printf()在屏幕上输出 hello world!提示:#include int main()printf(hello world!n);return 0;输入格式:无输出格式:输出提示信息:hello world!n输入样例:输出样例:hello world!#include int main()printf(hello world!n);return 0;1.2在屏幕上输出多行信息(3分)题目内容:使用printf()函数在屏幕上输出以下多行信息:hello world!hello hit!hello everyone!提示:在printf()函数中转义字符n
2、表示换行。输入格式:输出格式:输出提示信息:hello world!nhello hit!nhello everyone!n输入样例:输出样例:hello world!hello hit!hello everyone!#include int main() printf(hello world!n); printf(hello hit!n); printf(hello everyone!n); return 0;1.3计算半圆弧的周长及半圆面积(3分)题目内容:编程并输出半径r=5.3的半圆弧的周长及该半圆的面积,的取值为3.14159。要求半径r和必须利用宏常量表示。输入格式:无输出格式:半
3、圆的面积输出格式:Area=%fn半圆弧的周长输出格式:circumference=%fn输入样例:输出样例:Area=44.123632circumference=16.650427#include#define PI 3.14159#define R 5.3int main() printf(Area=%fn, R*R*PI/2); printf(circumference=%fn, 2*R*PI/2); return 0;1.4计算长方体体积(3分)题目内容:编程并输出长1.2、宽4.3、高6.4的长方体的体积。要求长方体的长、宽、高必须利用const常量表示。输入格式:无输出格式:长方
4、体的体积输出格式:volume=%.3fn输入样例:输出样例:#includeint main() const float l=1.2; const float x=4.3; const float y=6.4; printf(volume=%.3fn, l*x*y); return 0;第三章3.1计算两个数的平方和(3分)题目内容:从键盘读入两个实数,编程计算并输出它们的平方和,要求使用数学函数pow(x,y)计算平方值,输出结果保留2位小数。提示:使用数学函数需要在程序中加入编译预处理命令 #include 以下为程序的输出示例:please input x and y:1.2,3.4r
5、esult=13.00输入格式:%f,%f输出格式:输入提示信息:please input x and y:n输出格式:result=%.2fn输入样例:输出样例:#include#includeint main() printf(please input x and y:n); float x, y; scanf(%f,%f, &x, &y); printf(result=%.2fn, pow(x,2)+pow(y,2); return 0;3.2逆序数的拆分计算(3分)题目内容:从键盘输入一个4位数的整数,编程计算并输出它的逆序数(忽略整数前的正负号)。例如,输入-1234,忽略负号,由1
6、234分离出其千位1、百位2、十位3、个位4,然后计算4*1000+3*100+2*10+1 = 4321,并输出4321。再将得到的逆序数4321拆分为两个2位数的正整数43和21,计算并输出拆分后的两个数的平方和的结果。以下是程序的输出示例:Input x:-1234y=4321a=43,b=21result=2290输入格式:%d输出格式:输入提示信息:Input x:n逆序数输出格式:y=%dn逆序数拆分后的输出格式:a=%d,b=%dn平方和的输出格式:result=%dn输入样例:输出样例:#includeint main() printf(Input x:n); int x; s
7、canf(%d, &x); if(x=0) x=-x; int a, b, c, d; a=x/1000; b=x/100%10; c=x/10%10; d=x%10; printf(y=%dn, d*1000+c*100+b*10+a); printf(a=%d,b=%dn, d*10+c, b*10+a); printf(result=%dn, (b*10+a)*(b*10+a)+(d*10+c)*(d*10+c); return 0;3.3拆分英文名(3分)题目内容:从键盘输入某同学的英文名(小写输入,假设学生的英文名只包含3个字母。如: tom),编写程序在屏幕上输出该同学的英文名,且
8、首字母大写(如: Tom)。同时输出组成该英文名的所有英文字符在26个英文字母中的序号。以下为程序的输出示例:input your English name:tomTomt:20o:15m:13输入格式:%c%c%c输出格式:输入提示信息:input your English name:n首字母大写的英文姓名的输出格式:%c%c%cn姓名中每个字母在26个英文字母中的序号的输出格式:%c:%dn输入样例:输出样例:#includeint main() printf(input your English name:n); char a, b, c; scanf(%c%c%c, &a, &b, &
9、c); printf(%c%c%cn, a+A-a, b, c); printf(%c:%dn, a, a-a+1); printf(%c:%dn, b, b-a+1); printf(%c:%dn, c, c-a+1); return 0;3.4计算体指数(3分)题目内容:从键盘输入某人的身高(以厘米为单位,如174cm)和体重(以公斤为单位,如70公斤),将身高(以米为单位,如1.74m)和体重(以斤为单位,如140斤)输出在屏幕上,并按照以下公式计算并输出体指数,要求结果保留到小数点后2位。假设体重为w公斤,身高为h米,则体指数的计算公式为: 以下是程序的输出示例:input weigh
10、t, height:70,174weight=140height=1.74t=23.12输入格式:%d,%d输出格式:输入提示信息:input weight, height:n (注意:在height和逗号之间有一个空格)体重输出格式:weight=%dn身高输出格式:height=%.2fn体指数输出格式:t=%.2fn输入样例:输出样例:#includeint main() int x, y; printf(input weight, height:n); scanf(%d,%d, &x, &y); printf(weight=%dn, x*2); printf(height=%.2fn,
11、 y/100.0); printf(t=%.2fn, x/(y/100.0)*(y/100.0); return 0;第四章4.1数位拆分v2.0(4分)题目内容:从键盘上输入一个4位数的整数n,编写程序将其拆分为两个2位数的整数a和b,计算并输出拆分后的两个数的加、减、乘、除和求余运算的结果。例如n=-4321,设拆分后的两个整数为a,b,则a=-43,b=-21。除法运算结果要求精确到小数点后2位。求余和除法运算需要考虑除数为0的情况,即如果拆分后b=0,则输出提示信息the second operater is zero!程序的运行结果示例1:please input n:120012,
12、0sum=12,sub=12,multi=0the second operater is zero!程序的运行结果示例2:please input n:-2304-23,-4sum=-27,sub=-19,multi=92dev=5.75,mod=-3输入格式:%d输出格式:输入提示信息:please input n:n拆分后的两个整数的输出格式:%d,%dn加法、减法、乘法的输出格式:sum=%d,sub=%d,multi=%dn除法和求余的输出格式:dev=%.2f,mod=%dn除数为0的提示信息:the second operater is zero!n输入样例:输出样例:#inclu
13、de main() int m,x,y; printf(please input n:n); scanf(%d,&m); x=m/100; y=m%100; printf(%d,%dn,x,y); printf(sum=%d,sub=%d,multi=%dn,x+y,x-y,x*y); if (y!=0) printf(dev=%.2f,mod=%dn,(float)x/y,x%y); else printf(the second operater is zero!n); 4.2快递费用计算(4分)题目内容:上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域:0区1区2区3区
14、4区同城临近两省1500公里(含)以内15002500公里2500公里以上上海江苏,浙江北京,天津,河北,辽宁,河南,安微,陕西,湖北,江西,湖南,福建,广东,山西。吉林,辽宁,甘肃,四川,重庆,青海,广西,云南,海南,内蒙古,黑龙江,贵州。新疆,西藏。快递费按邮件重量计算,由起重费用、续重费用两部分构成:(1)起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费;(2)同城起重资费10元,续重3元/公斤;(3)寄往1区(江浙两省)的邮件,起重资费10元,续重4元;(4)寄往其他地区的邮件,起重资费统一为15元。而续重部分,
15、不同区域价格不同:2区的续重5元/公斤,3区的续重6.5元/公斤,4区的续重10元/公斤。编写程序,从键盘输入邮件的目的区域编码和重量,计算并输出运费,计算结果保留2位小数。提示:续重部分不足一公斤,按1公斤计算。因此,如包裹重量2.3公斤:1公斤算起重,剩余的1.3公斤算续重,不足1公斤按1公斤计算,1.3公斤折合续重为2公斤。如果重量应大于0、区域编号不能超出0-4的范围。程序运行结果示例1:4,4.5Price: 55.00程序运行结果示例2:5,3.2Error in AreaPrice: 0.00输入格式:用逗号分隔的两个数字,第一个表示区域、第二个是重量:%d,%f输出格式:价格的
16、输出格式:Price: %5.2fn区域错误的提示信息:Error in Arean输入样例:输出样例:#include #include int main() int area; float weight,price,x1,x2; scanf(%d,%f,&area,&weight); if (weight0&area=4) switch(area) case(0):price=x1*10+x2*3;break; case(1):price=x1*10+x2*4;break; case(2):price=x1*15+x2*5;break; case(3):price=x1*15+x2*6.5
17、;break; case(4):price=x1*15+x2*10;break; printf(Price: %5.2fn,price); else printf(Error in Arean); printf(Price: 0.00n); return 0;4.3数据区间判断(5分)题目内容:从键盘输入一个int型的正整数n(已知:0n10000),编写程序判断n落在哪个区间。如果用户输入的数据不在指定的范围里,程序输出 error!。例如,输入265,则该数属于区间 100-999。程序运行结果示例1:Please enter the number:25632563: 1000-9999程
18、序运行结果示例2:Please enter the number:156156: 100-999程序运行结果示例3:Please enter the number:3636: 10-99程序运行结果示例4:Please enter the number:33: 0-9程序运行结果示例5:Please enter the number:10923error!输入格式:%d输出格式:输入提示信息:Please enter the number:n输出的区间判断:%d: 1000-9999n%d: 100-999n%d: 10-99n%d: 0-9n输入错误提示信息:error!n输入样例:输出样例
19、:#include#includeint main() int x; printf(Please enter the number:n); scanf(%d,&x); if (x=1000&x=0&x=10&x=100&x=999) printf(%d: 100-999n,x); else printf(error!n); return 0;4.4计算一元二次方程的根v2.0(3分)题目内容:根据下面给出的求根公式,计算并输出一元二次方程的两个实根,要求精确到小数点后4位。其中a,b,c的值由用户从键盘输入。如果用户输入的系数不满足求实根的要求,输出错误提示error!。程序运行结果示例1:P
20、lease enter the coefficients a,b,c:1,2,1x1=-1.0000, x2=-1.0000程序运行结果示例2:Please enter the coefficients a,b,c:2,6,1x1=-0.1771, x2=-2.8229程序运行结果示例3:Please enter the coefficients a,b,c:2,1,6error!输入格式:%f,%f,%f输出格式:输入提示信息:Please enter the coefficients a,b,c:n输出格式:x1=%7.4f, x2=%7.4fn输入错误提示信息:error!n输入样例:输
21、出样例:#include#includeint main() float a,b,c,x1,x2,m; printf(Please enter the coefficients a,b,c:n); scanf(%f,%f,%f,&a,&b,&c); m=b*b-4*a*c; if (m0) printf(error!n); else x1=(-b+sqrt(m)/(2*a); x2=(-b-sqrt(m)/(2*a); printf(x1=%7.4f, x2=%7.4fn,x1,x2); return 0;第五章5.16位密码输入检测(3分)题目内容:从键盘输入6位仅由数字09组成的密码。用户
22、每输入一个密码并按回车键后,程序给出判断:如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示error,并让用户继续输入下一位密码。直到用户输入的密码全部是数字为止。以下为程序的运行结果示例:Input your password:11, you have enter 1-bits number66, you have enter 2-bits numberaerrorderror44, you have enter 3-bits number66, you have enter 4-bits number88, you have enter
23、 5-bits number22, you have enter 6-bits number输入格式:数字字符输入格式:%c输出格式:输入提示信息:Input your password:n如果输入的是数字,输出格式为:%c, you have enter %d-bits numbern如果输入的不是数字,输出提示信息:errorn输入样例:输出样例:#include int main() char a; int i=0; printf(Input your password:n); while(i=48&a=57) printf(%c, you have enter %d-bits numb
24、ern,a,+i); else printf(errorn); getchar(); return 0;5.2判断一个整型数据有几位v1.0(4分)题目内容:从键盘输入一个整型数据(int型),编写程序判断该整数共有几位。例如,从键盘输入整数16644,该整数共有5位。程序运行结果示例1:Please enter the number:2112521125: 5 bits程序运行结果示例2:Please enter the number:-12234-12234: 5 bits输入格式:%d输出格式:输入提示信息:Please enter the number:n判断该整数共有几位:%d: %
25、d bitsn输入样例:输出样例:#include int main() int x,y,n; printf(Please enter the number:n); scanf(%d,&x); n=x; for(y=1;x/=10;y+); printf(%d: %d bitsn,n,y); return 0;5.3检测输入数据中奇数和偶数的个数(4分)题目内容:从键盘输入一系列正整数,输入-1表示输入结束(-1本身不是输入的数据)。编写程序判断输入数据中奇数和偶数的个数。如果用户输入的第一个数据就是-1,则程序输出over!。否则。用户每输入一个数据,输出该数据是奇数还是偶数,直到用户输入-
26、1为止,分别统计用户输入数据中奇数和偶数的个数。程序运行结果示例1:Please enter the number:11:odd55:odd88:even99:odd1212:even1717:odd-1The total number of odd is 4The total number of even is 2程序运行结果示例2:Please enter the number:-1over!The total number of odd is 0The total number of even is 0输入格式:%d输出格式:输入提示信息:Please enter the number:
27、n用户输入的第一个数据就是-1,输出格式:over!n奇数的输出格式:%d:oddn偶数的输出格式:%d:evenn输入数据中奇数的个数统计:The total number of odd is %dn输入数据中偶数的个数统计:The total number of even is %dn输入样例:输出样例:#include int main() int s,odd=0,even=0; printf(Please enter the number:n); do scanf(%d,&s); if (s=-1&odd=0&even=0) printf(over!n); else if( s%2!=
28、0 &s!=-1) printf(%d:oddn,s);odd+; else if (s%2=0)printf(%d:evenn,s);even+; else even+=0; while (s!=-1); printf(The total number of odd is %dn,odd); printf(The total number of even is %dn,even); return 0;5.4计算球的反弹高度(4分)题目内容:一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下并反弹.,求它在第5次和第10次落地时,分别共经过了多少米?第5次和第10次反弹分别是多
29、高?要求计算结果保留到小数点后3位。用户从键盘输入想要计算的第n次(n=15)。程序运行结果示例1:input:55 times:287.5003.125程序运行结果示例2:input:1010 times:299.6090.098输入格式:%d输出格式:反弹次数:%d times:n第n次反弹共经过多少米:%.3fn第n次的反弹高度:%.3fn输入提示信息:input:n输入样例:输出样例:#include int main() int time,i; float each=0,sum=0,h=100; printf(input:n); scanf(%d,&time); for (i=0;i
30、time;i+) sum+=h; h/=2; each=h; sum+=each; printf(%d times:n,time); printf(%.3fn,sum-each); printf(%.3fn,each); return 0;第六章6.1程序改错v2.0(5分)下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。1.
31、 #include2. intmain()3. 4. intscore;5. chargrade;6. printf(Pleaseinputscore:);7. scanf(%d,&score);8. if(score100)9. printf(Inputerror!n);10. elseif(score=90)11. grade=A;12. elseif(score=80)13. grade=B;14. elseif(score=70)15. grade=C;16. elseif(score=60)17. grade=D;18. else19. grade=E;20. printf(grad
32、e:%cn,grade);21. return0;22. 程序运行结果示例1:Please input score:aInput error!Please input score:-12Input error!Please input score:230Input error!Please input score:92grade: A程序运行结果示例2:Please input score:88grade: B程序运行结果示例3:Please input score:73grade: C程序运行结果示例4:Please input score:65grade: D程序运行结果示例5:Pleas
33、e input score:27grade: E输入格式:%d输出格式:输入提示信息:Please input score:n输入错误提示信息:Input error!n输出格式:grade: %cn (注意:%c前面有一个空格)输入样例:输出样例:#includeint main() int score,m=0; char grade; printf(Please input score:n); do m=scanf(%d, &score); getchar(); if (m!=1 |score 100) printf(Input error!nPlease input score:n);m
34、=0; while (m=0); if (score = 90) grade = A; else if (score = 80) grade = B; else if (score = 70) grade = C; else if (score = 60) grade = D; else grade = E; printf(grade: %cn, grade); return 0;6.2编程计算a+aa+aaa+aaa(n个a)的值(4分)题目内容:编程计算 a+aa+aaa+aaa(n个a)的值,n和a的值由键盘输入。例如,当n=4,a=2,表示计算2+22+222+2222的值。程序运行结
35、果示例:Input a,n:2,4sum=2468输入格式: %d,%d(先输入a,后输入n)输出格式: 输入提示信息:Input a,n:n输出格式:sum=%ldn%ldn输入样例:输出样例:#include int main() int a,n,sum=0,tem=1; printf(Input a,n:n); scanf(%d,%d,&a,&n); int i; for (i=1;i=n;i+) sum+=(a*tem); tem=tem*10+1; printf(sum=%dn,sum); return 0;6.3搬砖问题(4分)题目内容:36块砖,36人搬,男搬4,女搬3,两个小孩
36、抬一块砖,要求一次搬完,问男人、女人和小孩各需多少人?请用穷举法编程求解。程序的运行结果示例:men=3,women=3,children=30输入格式: 输出格式:men=%d,women=%d,children=%dn输入样例:输出样例:#include int main() int woman,man,kid; for (woman=0;woman=12;woman+) for (man=0;man=9;man+) kid=36-man-woman; if (4*man+3*woman+0.5*kid=36) printf(men=%d,women=%d,children=%dn,man,woman,kid); return 0;6.4编程输出某年某月有多少天(考虑闰年)。(5分)题目内容:从键盘输入一个年份和月份,输出该月有多少天(考虑闰年),用switch语句编程。程序运行结果示例1:Input year,month:2015,3