1、C语言实验题及参考答案实验一1、计算整数各位数字之和 (10 分)输入一个3位正整数,将其每一位的数字相加,输出和。输入格式:输入一个3位正整数。 变量数据类型为unsigned。输出格式:输出整数每一位相加后的整数和。输入样例:123输出样例:6【参考答案】#include int main() unsigned int a,ge,shi,bai,sum; scanf(%d,&a); ge=a%10; shi=a/10%10; bai=a/100; sum=ge+shi+bai; printf(%dn,sum); return 0;2、计算代数表达式 (10 分)求: 输入格式:输入角度x。
2、变量数据类型为double。为。输出格式:输出y的值,精确到小数点后2位。输入样例:输出样例:【参考答案】#include #include #define PI int main()double x,y;scanf(%lf,&x);y=sqrt(sin(60*PI/180)+1)*(sin(30*PI/180)+1)/cos(x*PI/180); printf(%.2lf,y); return 0;3、逆序的三位数 (10 分)程序每次读入一个正3位数,然后输出按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。输入格式:每个测试是一个3位的
3、正整数。输出格式:输出按位逆序的数。输入样例:123输出样例:321【参考答案】#include int main() int a,ge,shi,bai,b; scanf(%d,&a); ge=a%10; shi=a/10%10; bai=a/100; b=ge*100+10*shi+bai; printf(%dn,b); return 0;4、求整数均值 (10 分)本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。输入格式:输入在一行中给出4个整数,其间以空格分隔。 输出格式:在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其
4、中平均值精确到小数点后一位。 输入样例:1 2 3 4输出样例:Sum = 10; Average = 【参考答案】#include int main()int a,b,c,d,sum; float ave; scanf(%d %d %d %d,&a,&b,&c,&d); sum=a+b+c+d; ave=sum/; printf(Sum = %d; Average = %.1fn,sum,ave); return 0;5、是不是太胖了 (10 分)据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以所得到的公斤数。已知市斤是公斤的两倍。现给定某人身高,请你计算其标准体重应该是多少
5、(顺便也悄悄给自己算一下吧)输入格式:输入第一行给出一个正整数H(100 H 300),为某人身高。输出格式:在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。输入样例:169输出样例:【参考答案】#include int main() int h; float w; scanf(%d,&h); w=(h-100)*2; printf(%.1fn, w); return 0;6、日期格式化 (10 分)世界上不同国家有不同的写日期的习惯。比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。输入格式:输入在一
6、行中按照“mm-dd-yyyy”的格式给出月、日、年。题目保证给出的日期是1900年元旦至今合法的日期。输出格式:在一行中按照“yyyy-mm-dd”的格式给出年、月、日。输入样例:03-15-2017输出样例:2017-03-15【参考答案】#include int main() int year,month,day; scanf(%d-%d-%d,&month,&day,&year); printf(%d-%02d-%02dn,year,month,day); return 0; 7、整数四则运算 (10 分)本题要求编写程序,计算2个正整数的和、差、积、商并输出。题目保证输入和输出全部在
7、整型范围内。输入格式:输入在一行中给出2个正整数A和B。 输出格式:在4行中按照格式“A 运算符 B = 结果”顺序输出和、差、积、商。 输入样例:3 2输出样例:3 + 2 = 53 - 2 = 13 * 2 = 63 / 2 = 1【参考答案】#include int main() int a,b; scanf(%d %d,&a,&b); printf(%d + %d = %dn,a,b,a+b); printf(%d - %d = %dn,a,b,a-b); printf(%d * %d = %dn,a,b,a*b); printf(%d / %d = %dn,a,b,a/b); ret
8、urn 0;8、计算存款利息 (10 分)本题目要求计算存款利息,计算公式为interest=money(1+rate)?year?money,其中interest为存款到期时的利息(税前),money是存款金额,year是存期,rate是年利率。输入格式:输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。输出格式:在一行中按“interest = 利息”的格式输出,其中利息保留两位小数。输入样例:1000 3 输出样例:interest = 【参考答案】#include #include int main() float money,rate,year,interes
9、t; scanf(%f %f %f,&money,&year,&rate); interest=money*pow(1+rate),year)-money; printf(interest = %.2fn, interest); return 0;实验二1、比较大小 (15 分)本题要求将输入的任意3个整数从小到大输出。输入格式:输入在一行中给出3个整数,其间以空格分隔。输出格式:在一行中将3个整数从小到大输出,其间以“-”相连。 输入样例:4 2 8输出样例:2-4-8【参考答案】#include int main() int a,b,c,t; scanf(%d %d %d,&a,&b,&c
10、); if(ab) t=a;a=b;b=t; if(ac) t=a;a=c;c=t; if(bc) t=b;b=c;c=t; printf(%d-%d-%dn,a,b,c); return 0; 2、计算运费 (15 分)运输公司对用户计算运费。路程(s)越远,每千米运费就越低。标准如下: s250km ,没有折扣; 250kms500km, 2%的折扣; 500kms1000km, 5%的折扣; 1000kms2000km,8的折扣; 2000kms3000km,10的折扣; 3000kms,15的折扣。设每千米每吨货物的基本运费为p,货物重为 w,距离为s,折扣为d,则总运费f的计算公式为
11、: fpws(d)输入格式:在一行中以小数形式输入基本运费、货重和距离,以空格作为分隔符。输出格式:在一行输出计算出来的运费,精确到小数点后位的值。输入样例:在这里给出一组输入。例如:100 20 300输出样例:在这里给出相应的输出。例如:freight=【参考答案】#include int main() int c,s; float p,w,d,f; scanf (%f %f %d,&p,&w,&s); if (s=3000) c=12; else c=s/250; switch(c) case 0: d=0;break; case 1: d=2;break; case 2: case 3
12、: d=5;break; case 4: case 5: case 6: case 7: d=8;break; case 8: case 9: case 10: case 11: d=10;break; case 12: d=15;break; f=p*w*s*(1-d/; printf(freight=%.2fn,f); return 0; 3、三天打鱼两天晒网 (15 分)中国有句俗语叫“三天打鱼两天晒网”。假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”输入格式:输入在一行中给出一个不超过1000的正整数N。输出格式:在一行中输出此人在第N天中是
13、“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“in day N”。输入样例1:103输出样例1:Fishing in day 103输入样例2:34输出样例2:Drying in day 34【参考答案】#include int main() int N,x; scanf(%d,&N); x=N%5; if(x=1&x=3)printf(Fishing in day %dn,N); else printf(Drying in day %dn,N); return 0;4、计算分段函数2 (15 分)本题目要求计算下列分段函数f(x)的值:注:可在头文件中包含,并
14、调用sqrt函数求平方根,调用pow函数求幂。 输入格式:输入在一行中给出实数x。输出格式:在一行中按“f(x) = result”的格式输出,其中x与result都保留两位小数。输入样例1:10输出样例1:f = 输入样例2:输出样例2:f = 【参考答案】#include #include int main() float x,y; scanf(%f,&x); if(x=0) y=sqrt(x); else y=(x+1)*(x+1)+2*x+1/x; printf(f(%.2f) = %.2fn, x,y); return 0;5、判断输入的字符是哪种类型 (15 分)通过键盘输入一个字
15、符,编程判断并输出用户输入的是什么类型的字符。输入格式:输入一个字符。输出格式:在一行中输出该字符是哪种类型的字符。 若用户输入字符为0和9之间,输出This is a digit. 若用户输入字符在A和Z之间,输出This is a capital letter. 若用户输入字符在a和z之间,输出This is a small letter. 其他情况,输出Other character.输入样例:6输出样例:This is a digit.【参考答案】#include int main() char c; c=getchar(); if(c=0&c=A&c=a&c=z)printf(Thi
16、s is a small letter.); else printf(Other character.); return 0; 6、求一元二次方程的根 (15 分)本题目要求一元二次方程的根,结果保留2位小数。输入格式:输入在一行中给出3个浮点系数a、b、c,中间用空格分开。输出格式:根据系数情况,输出不同结果:1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;3)如果方程只有一个根,则直接输出此根;4)如果系数都为0,则输出Zero Equation;5)如果a和b为0,
17、c不为0,则输出Not An Equation。输入样例1: 输出样例1:输入样例2:1 2 3输出样例2:+输入样例3:0 2 4输出样例3:输入样例4:0 0 0输出样例4:Zero Equation输入样例5:0 0 1输出样例5:Not An Equation【参考答案】#include #include int main() float a,b,c; float x1,x2,p,y; scanf(%f %f %f,&a,&b,&c); if(a=0&b=0&c=0) printf(Zero Equation);return 0; if(a=0&b=0&c!=0) printf(Not
18、 An Equation); return 0; p=b*b-4*a*c; if(a=0) x1=-c/b; printf(%.2fn,x1);return 0; if(p=0&a!=0) if(p0) x1=(-b+sqrt(p)/(2*a); x2=(-b-sqrt(p)/(2*a); printf(%.2fn%.2fn,x1,x2); else x1=-b/(2*a); printf(%.2fn,x1); else if(b!=0) p=sqrt(-p);x1=-b/(2*a);y=p/(2*a); printf(%.2f+%.2fin,x1,y); printf(%.2f-%.2fin
19、,x1,y); else y=sqrt(-p)/(2*a); if(y0)printf(+%.2fi%.2fin,y,y); else printf(+%.2fi%.2fin,-y,-y); return 0; 7、A除以B (15 分)真的是简单题哈 给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。输入格式:输入在第一行给出两个整数A和B(?100A,B100),数字间以空格分隔。输出格式:在一行中输出结果:如果分母是正数,则输出“A/B=商”;如果分母是负数,则要用括号把分母括起来输出;如果分母为零,则输出的商应为Error。输出的商应保留小数点后2位。输入
20、样例1:-1 2输出样例1:-1/2=输入样例2:1 -3输出样例2:1/(-3)=输入样例3:5 0输出样例3:5/0=Error【参考答案】#include #include int main()int A,B; scanf(%d %d,&A,&B); if(B=0) printf(%d/%d=Errorn,A,B); else if(B0) printf(%d/(%d)=%.2fn,A,B,(float)A/B); else printf(%d/%d=%.2fn,A,B,(float)A/B); return 0;8、计算火车运行时间 (15 分)本题要求根据火车的出发时间和达到时间,编
21、写程序计算整个旅途所用的时间。输入格式:输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。输出格式:在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。输入样例:1201 1530输出样例:03:29【参考答案】#include int main() int h1,h2,hour1,hour2,men1,men2,a,b; scanf(%d %d,&h1,&h2); hour1=h1/100; men1=h1%100; hour2=
22、h2/100; men2=h2%100; if(men2men1) men2=men2+60; hour2-; a=hour2-hour1; b=men2-men1; printf(%02d:%02dn,a,b); return 0;实验三1、求交错序列前N项和 (15 分)本题要求编写程序,计算交错序列 1-2/3+3/5-4/7+5/9-6/11+. 的前N项之和。输入格式:输入在一行中给出一个正整数N。输出格式:在一行中输出部分和的值,结果保留三位小数。输入样例:5输出样例:【参考答案】#include int main() int i,N,s=1; float a,b,t,sum=0;
23、 a=1; b=1; scanf(%d,&N); for(i=1;i=N;i+) t=a/b; sum+=s*t; s=-s; a+; b=b+2; printf(%.3fn,sum); return 0; 2、统计整数的位数 (15 分)从键盘读入一个整数,统计该数的位数。例如,输入12534,输出5;输入-99,输出2;输入0,输出1。输入格式:输入一个整数N(?10?5?N10?5?)。输出格式:在一行中按如下格式输出该数的位数。It contains 位数 digits.输入样例:12534输出样例:It contains 5 digits.【参考答案】#include int mai
24、n() int N,s=0; scanf(%d,&N); if(N=0) printf(It contains %d digits.n,+s); else if(N0) N=-N; while(N!=0) s+; N=N/10; printf(It contains %d digits.n,s); return 0; 3、最大公约数和最小公倍数 (15 分)本题要求两个给定正整数的最大公约数和最小公倍数。输入格式:输入在一行中给出两个正整数M和N(1000)。输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。输入样例:511 292输出样例:73 2044【参考答
25、案】#include int main() int M, N, gys, gbs; int t; scanf(%d %d, &M, &N); if (M N) t = M; M = N; N = t; for (gys = N; gys-) if (M%gys = 0 & N%gys = 0) break; gbs = M*N / gys; printf(%d %d, gys, gbs); return 0;4、统计字符 (15 分)本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。输入格式:输入为10个字符。最后一个回车表示输入结束,不算在内。输出格式
26、:在一行内按照letter = 英文字母个数, blank = 空格或回车个数, digit = 数字字符个数, other = 其他字符个数的格式输出。输入样例:aZ &09 Az输出样例:letter = 4, blank = 3, digit = 2, other = 1【参考答案】#include int main() int i,letter,blank,digit,other; char c; letter=blank=digit=other=0; for(i=0;i=a&c=A&c=0&c=9) digit+; else if(c= |c=n) blank+; else othe
27、r+; printf(letter = %d, blank = %d, digit = %d, other = %dn,letter,blank,digit,other); return 0; 5、简写转全称 (15 分)在一行中输入若干个字符作为简写字符,字符之间没有空格间隔,并按如下规则产生输出: 每个简写字母对应一行输出 若字符为C或c,则该行输出BEIJING OLYMPIC GAMES 若字符为J或j,则该行输出JAPAN WORLD CUP 若字符为K或k,则该行输出KOREA WORLD CUP 若为其他字符,则该行原样输出该字符。输入格式:输入在一行中输入若干个字符,字符之间没有空格间隔,以回车结束。输出格式:按题目要求产生若干行输出。输入样例:kijckj输出样例:KOREA WORLD CUPiJAPAN WORLD CUPBEIJING OLYMPIC GAMESKOREA WORLD CUPJAPAN WORLD CUP【参考答案】#includ
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1