C语言实验题及参考答案文档格式.docx
《C语言实验题及参考答案文档格式.docx》由会员分享,可在线阅读,更多相关《C语言实验题及参考答案文档格式.docx(76页珍藏版)》请在冰豆网上搜索。
每个测试是一个3位的正整数。
输出格式:
输出按位逆序的数。
输入样例:
输出样例:
321
{inta,ge,shi,bai,b;
b=ge*100+10*shi+bai;
b);
4、求整数均值(10分)
本题要求编写程序,计算4个整数的和与平均值。
题目保证输入与输出均在整型范围内。
输入在一行中给出4个整数,其间以空格分隔。
在一行中按照格式“Sum=和;
Average=平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。
1234
Sum=10;
Average=
{inta,b,c,d,sum;
floatave;
%d%d%d%d"
a,&
b,&
c,&
d);
sum=a+b+c+d;
ave=sum/;
Sum=%d;
Average=%.1f\n"
sum,ave);
5、是不是太胖了(10分)
据说一个人的标准体重应该是其身高(单位:
厘米)减去100、再乘以所得到的公斤数。
已知市斤是公斤的两倍。
现给定某人身高,请你计算其标准体重应该是多少(顺便也悄悄给自己算一下吧……)
输入第一行给出一个正整数H(100<
H≤300),为某人身高。
在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。
169
{
inth;
floatw;
h);
w=(h-100)**2;
%.1f\n"
w);
6、日期格式化(10分)
世界上不同国家有不同的写日期的习惯。
比如美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。
下面请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。
输入在一行中按照“mm-dd-yyyy”的格式给出月、日、年。
题目保证给出的日期是1900年元旦至今合法的日期。
在一行中按照“yyyy-mm-dd”的格式给出年、月、日。
03-15-2017
2017-03-15
{intyear,month,day;
%d-%d-%d"
month,&
day,&
year);
%d-%02d-%02d\n"
year,month,day);
}
7、整数四则运算(10分)
本题要求编写程序,计算2个正整数的和、差、积、商并输出。
题目保证输入和输出全部在整型范围内。
输入在一行中给出2个正整数A和B。
在4行中按照格式“A运算符B=结果”顺序输出和、差、积、商。
32
3+2=5
3-2=1
3*2=6
3/2=1
{inta,b;
%d%d"
b);
%d+%d=%d\n"
a,b,a+b);
%d-%d=%d\n"
a,b,a-b);
%d*%d=%d\n"
a,b,a*b);
%d/%d=%d\n"
a,b,a/b);
8、计算存款利息(10分)
本题目要求计算存款利息,计算公式为interest=money×
(1+rate)?
year?
?
money,其中interest为存款到期时的利息(税前),money是存款金额,year是存期,rate是年利率。
输入在一行中顺序给出三个正实数money、year和rate,以空格分隔。
在一行中按“interest=利息”的格式输出,其中利息保留两位小数。
10003
interest=
floatmoney,rate,year,interest;
%f%f%f"
money,&
year,&
rate);
interest=money*pow((1+rate),year)-money;
interest=%.2f\n"
interest);
实验二
1、比较大小(15分)
本题要求将输入的任意3个整数从小到大输出。
输入在一行中给出3个整数,其间以空格分隔。
在一行中将3个整数从小到大输出,其间以“->
”相连。
428
2->
4->
8
{
inta,b,c,t;
%d%d%d"
c);
if(a>
b){t=a;
a=b;
b=t;
c){t=a;
a=c;
c=t;
if(b>
c){t=b;
b=c;
%d->
a,b,c);
2、计算运费(15分)
运输公司对用户计算运费。
路程(s)越远,每千米运费就越低。
标准如下:
s<250km,没有折扣;
250km≤s<500km,2%的折扣;
500km≤s<1000km,5%的折扣;
1000km≤s<2000km,8%的折扣;
2000km≤s<3000km,10%的折扣;
3000km≤s,15%的折扣。
设每千米每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为:
f=p×
w×
s×
(1-d)
在一行中以小数形式输入基本运费、货重和距离,以空格作为分隔符。
在一行输出计算出来的运费,精确到小数点后2位的值。
在这里给出一组输入。
例如:
10020300
在这里给出相应的输出。
freight=
{
intc,s;
floatp,w,d,f;
scanf("
%f%f%d"
p,&
w,&
s);
if(s>
=3000)c=12;
elsec=s/250;
switch(c)
case0:
d=0;
break;
case1:
d=2;
case2:
case3:
d=5;
case4:
case5:
case6:
case7:
d=8;
case8:
case9:
case10:
case11:
d=10;
case12:
d=15;
f=p*w*s*(1-d/;
freight=%.2f\n"
f);
3、三天打鱼两天晒网(15分)
中国有句俗语叫“三天打鱼两天晒网”。
假设某人从某天起,开始“三天打鱼两天晒网”,问这个人在以后的第N天中是“打鱼”还是“晒网”
输入在一行中给出一个不超过1000的正整数N。
在一行中输出此人在第N天中是“Fishing”(即“打鱼”)还是“Drying”(即“晒网”),并且输出“indayN”。
输入样例1:
103
输出样例1:
Fishinginday103
输入样例2:
34
输出样例2:
Dryinginday34
{intN,x;
N);
x=N%5;
if(x>
=1&
&
x<
=3)printf("
Fishinginday%d\n"
N);
elseprintf("
Dryinginday%d\n"
4、计算分段函数[2](15分)
本题目要求计算下列分段函数f(x)的值:
注:
可在头文件中包含,并调用sqrt函数求平方根,调用pow函数求幂。
输入在一行中给出实数x。
在一行中按“f(x)=result”的格式输出,其中x与result都保留两位小数。
输入样例1:
10
输出样例1:
f=
输入样例2:
输出样例2:
floatx,y;
%f"
=0)y=sqrt(x);
elsey=(x+1)*(x+1)+2*x+1/x;
f(%.2f)=%.2f\n"
x,y);
5、判断输入的字符是哪种类型(15分)
通过键盘输入一个字符,编程判断并输出用户输入的是什么类型的字符。
输入一个字符。
在一行中输出该字符是哪种类型的字符。
若用户输入字符为'
0'
和'
9'
之间,输出Thisisadigit.
若用户输入字符在'
A'
Z'
之间,输出Thisisacapitalletter.
a'
z'
之间,输出Thisisasmallletter.
其他情况,输出Othercharacter.
Thisisadigit.
charc;
c=getchar();
if(c>
='
c<
)printf("
Thisisadigit."
);
elseif(c>
Thisisacapitalletter."
Thisisasmallletter."
Othercharacter."
6、求一元二次方程的根(15分)
本题目要求一元二次方程的根,结果保留2位小数。
输入在一行中给出3个浮点系数a、b、c,中间用空格分开。
根据系数情况,输出不同结果:
1)如果方程有两个不相等的实数根,则每行输出一个根,先大后小;
2)如果方程有两个不相等复数根,则每行按照格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;
3)如果方程只有一个根,则直接输出此根;
4)如果系数都为0,则输出"
ZeroEquation"
;
5)如果a和b为0,c不为0,则输出"
NotAnEquation"
。
123
+
输入样例3:
024
输出样例3:
输入样例4:
000
输出样例4:
ZeroEquation
输入样例5:
001
输出样例5:
NotAnEquation
floata,b,c;
floatx1,x2,p,y;
if(a==0&
b==0&
c==0){printf("
return0;
c!
=0){printf("
p=b*b-4*a*c;
if(a==0){x1=-c/b;
%.2f\n"
x1);
if(p>
=0&
a!
=0)
0)
{x1=(-b+sqrt(p))/(2*a);
x2=(-b-sqrt(p))/(2*a);
%.2f\n%.2f\n"
x1,x2);
else
{x1=-b/(2*a);
elseif(b!
=0){p=sqrt(-p);
x1=-b/(2*a);
y=p/(2*a);
%.2f+%.2fi\n"
x1,y);
%.2f-%.2fi\n"
else{y=sqrt(-p)/(2*a);
if(y>
0)printf("
+%.2fi\%.2fi\n"
y,y);
-y,-y);
7、A除以B(15分)
真的是简单题哈——给定两个绝对值不超过100的整数A和B,要求你按照“A/B=商”的格式输出结果。
输入在第一行给出两个整数A和B(?
100≤A,B≤100),数字间以空格分隔。
在一行中输出结果:
如果分母是正数,则输出“A/B=商”;
如果分母是负数,则要用括号把分母括起来输出;
如果分母为零,则输出的商应为Error。
输出的商应保留小数点后2位。
-12
-1/2=
1-3
1/(-3)=
输入样例3:
50
输出样例3:
5/0=Error
{intA,B;
A,&
B);
if(B==0)
%d/%d=Error\n"
A,B);
if(B<
%d/(%d)=%.2f\n"
A,B,(float)A/B);
%d/%d=%.2f\n"
8、计算火车运行时间(15分)
本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。
输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。
每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。
在一行输出该旅途所用的时间,格式为“hh:
mm”,其中hh为2位小时数、mm为2位分钟数。
12011530
03:
29
{inth1,h2,hour1,hour2,men1,men2,a,b;
h1,&
h2);
hour1=h1/100;
men1=h1%100;
hour2=h2/100;
men2=h2%100;
if(men2<
men1)
men2=men2+60;
hour2--;
a=hour2-hour1;
b=men2-men1;
%02d:
%02d\n"
a,b);
实验三
1、求交错序列前N项和(15分)
本题要求编写程序,计算交错序列1-2/3+3/5-4/7+5/9-6/11+...的前N项之和。
输入在一行中给出一个正整数N。
在一行中输出部分和的值,结果保留三位小数。
5
inti,N,s=1;
floata,b,t,sum=0;
a=1;
b=1;
for(i=1;
i<
=N;
i++)
{t=a/b;
sum+=s*t;
s=-s;
a++;
b=b+2;
%.3f\n"
2、统计整数的位数(15分)
从键盘读入一个整数,统计该数的位数。
例如,输入12534,输出5;
输入-99,输出2;
输入0,输出1。
输入一个整数N(?
10?
5?
≤N≤10?
)。
在一行中按如下格式输出该数的位数。
Itcontains位数digits.
12534
Itcontains5digits.
intN,s=0;
if(N==0)printf("
Itcontains%ddigits.\n"
++s);
else{
if(N<
0)N=-N;
while(N!
s++;
N=N/10;
s);
3、最大公约数和最小公倍数(15分)
本题要求两个给定正整数的最大公约数和最小公倍数。
输入在一行中给出两个正整数M和N(≤1000)。
在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。
511292
732044
intmain()
intM,N,gys,gbs;
intt;
&
M,&
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;
gys,gbs);
4、统计字符(15分)
本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
输入为10个字符。
最后一个回车表示输入结束,不算在内。
在一行内按照
letter=英文字母个数,blank=空格或回车个数,digit=数字字符个数,other=其他字符个数
的格式输出。
aZ&
09Az
letter=4,blank=3,digit=2,other=1
inti,letter,blank,digit,other;
letter=blank=digit=other=0;
for(i=0;
10;
{scanf("
%c"
if((c>
)||(c>
))letter++;
)digit++;
elseif(c=='
'
||c=='
\n'
)blank++;
elseother++;
letter=%d,blank=%d,digit=%d,other=%d\n"
letter,blank,digit,other);
5、简写转全称(15分)
在一行中输入若干个字符作为简写字符,字符之间没有空格间隔,并按如下规则产生输出:
每个简写字母对应一行输出
若字符为C或c,则该行输出"
BEIJINGOLYMPICGAMES"
若字符为J或j,则该行输出"
JAPANWORLDCUP"
若字符为K或k,则该行输出"
KOREAWORLDCUP"
若为其他字符,则该行原样输出该字符。
输入在一行中输入若干个字符,字符之间没有空格间隔,以回车结束。
按题目要求产生若干行输出。
kijckj
KOREAWORLDCUP
i
JAPANWORLDCUP
BEIJINGOLYMPICGAMES
#includ