C语言实验题与参考答案.docx

上传人:b****2 文档编号:25752638 上传时间:2023-06-12 格式:DOCX 页数:271 大小:262.10KB
下载 相关 举报
C语言实验题与参考答案.docx_第1页
第1页 / 共271页
C语言实验题与参考答案.docx_第2页
第2页 / 共271页
C语言实验题与参考答案.docx_第3页
第3页 / 共271页
C语言实验题与参考答案.docx_第4页
第4页 / 共271页
C语言实验题与参考答案.docx_第5页
第5页 / 共271页
点击查看更多>>
下载资源
资源描述

C语言实验题与参考答案.docx

《C语言实验题与参考答案.docx》由会员分享,可在线阅读,更多相关《C语言实验题与参考答案.docx(271页珍藏版)》请在冰豆网上搜索。

C语言实验题与参考答案.docx

C语言实验题与参考答案

 

实验一

 

1、计算整数各位数字之和(10分)

输入一个3位正整数,将其每一位的数字相加,输出和。

 

输入格式:

 

输入一个3位正整数。

变量数据种类为unsigned。

 

输出格式:

 

输出整数每一位相加后的整数和。

 

输入样例:

 

输出样例:

 

【参照答案】

#include""

intmain()

{unsignedinta,ge,shi,bai,sum;scanf("%d",&a);ge=a%10;

shi=a/10%10;

bai=a/100;

sum=ge+shi+bai;

printf("%d\n",sum);

return0;

}

 

2、计算代数表达式(10分)

 

求:

 

输入格式:

 

输入角度x。

变量数据种类为double。

π为。

 

输出格式:

 

输出y的值,精准到小数点后2位。

 

输入样例:

 

输出样例:

 

【参照答案】

#include<>

#include<>

#definePI

intmain()

{doublex,y;

scanf("%lf",&x);

y=sqrt((sin(60*PI/180)+1)*(sin(30*PI/180)+1)/cos(x*PI/180));

printf("%.2lf",y);

return0;

}

 

3、逆序的三位数(10分)

程序每次读入一个正3位数,而后输出按位逆序的数字。

注意:

当输入的数字含有结尾的0时,输出不该带有前导的0。

比方输入700,输出应当是7。

 

输入格式:

 

每个测试是一个3位的正整数。

 

输出格式:

 

输出按位逆序的数。

 

输入样例:

 

输出样例:

 

【参照答案】

#include""

intmain()

{inta,ge,shi,bai,b;scanf("%d",&a);

ge=a%10;

shi=a/10%10;

bai=a/100;

b=ge*100+10*shi+bai;

printf("%d\n",b);

return0;

}

 

4、求整数均值(10分)

此题要求编写程序,计算4个整数的和与均匀值。

题目保证输入与输出均在整型范围内。

 

输入格式:

 

输入在一行中给出4个整数,此间以空格分开。

 

输出格式:

 

在一行中依据格式“Sum=和;Average=均匀值”次序输出和与均匀值,此中均匀值精准到小数点后一位。

 

输入样例:

 

输出样例:

 

【参照答案】

#include""

intmain()

 

{inta,b,c,d,sum;

floatave;

scanf("%d%d%d%d",&a,&b,&c,&d);

sum=a+b+c+d;

ave=sum/;

printf("Sum=%d;Average=%.1f\n",sum,ave);

return0;

}

 

5、能否是太胖了(10分)

据一个人的准体重是其身高(位:

厘米)减去100、再乘以所获得的公斤数。

已知市斤是公斤的两倍。

定某人身高,你算其准体重是多少(便也静静自己算一下吧⋯⋯)

 

输入格式:

 

入第一行出一个正整数(100

 

输出格式:

 

在一行中出的准体重,位市斤,保存小数点后1位。

 

输入样例:

 

输出样例:

 

【参照答案】

#include<>

intmain()

{

inth;

floatw;

scanf("%d",&h);

w=(h-100)**2;

printf("%.1f\n",w);

return0;

}

 

6、日期格式化(10分)

世界上不一样国家有不一样的写日期的习惯。

比方美国人习惯写成“月-日-年”,而中国人习惯写成“年-月-日”。

下边请你写个程序,自动把读入的美国格式的日期改写成中国习惯的日期。

 

输入格式:

 

输入在一行中依据“mm-dd-yyyy”的格式给出月、日、年。

题目保证给出的日期是1900年元旦到现在合法的日期。

 

输出格式:

 

在一行中依据“yyyy-mm-dd”的格式给出年、月、日。

 

输入样例:

 

输出样例:

 

【参照答案】

#include<>

intmain()

{intyear,month,day;

scanf("%d-%d-%d",&month,&day,&year);

printf("%d-%02d-%02d\n",year,month,day);

return0;

}

 

7、整数四则运算(10分)

此题要求编写程序,计算2个正整数的和、差、积、商并输出。

题目保证输入和输出所有在整型范围内。

 

输入格式:

 

输入在一行中给出2个正整数A和B。

 

输出格式:

 

在4行中依据格式“A运算符B=结果”次序输出和、差、积、商。

 

输入样例:

 

输出样例:

 

【参照答案】

#include""

intmain()

{inta,b;

scanf("%d%d",&a,&b);

printf("%d+%d=%d\n",a,b,a+b);

printf("%d-%d=%d\n",a,b,a-b);

printf("%d*%d=%d\n",a,b,a*b);

printf("%d/%d=%d\n",a,b,a/b);

return0;

}

 

8、计算存款利息(10分)

此题目要求计算存款利息,计算公式为

interest=money×(1+rate)year?

money,此中interest为存款到期时的

 

利息(税前),money是存款金额,year是存期,rate是年利率。

 

输入格式:

 

输入在一行中次序给出三个正实数money、year和rate,以空格分开。

 

输出格式:

 

在一行中按“interest=利息”的格式输出,此中利息保存两位小数。

 

输入样例:

 

输出样例:

 

【参照答案】

#include<>

#include<>

intmain()

{

floatmoney,rate,year,interest;

scanf("%f%f%f",&money,&year,&rate);

interest=money*pow((1+rate),year)-money;

printf("interest=%.2f\n",interest);

return0;

 

}

 

实验二

 

1、比较大小(15分)

此题要求将输入的随意3个整数从小到大输出。

 

输入格式:

 

输入在一行中给出3个整数,此间以空格分开。

 

输出格式:

 

在一行中将3个整数从小到大输出,此间以“->”相连。

 

输入样例:

 

输出样例:

 

【参照答案】

#include<>

intmain()

 

{

inta,b,c,t;

scanf("%d%d%d",&a,&b,&c);

if(a>b){t=a;a=b;b=t;}

if(a>c){t=a;a=c;c=t;}

if(b>c){t=b;b=c;c=t;}

printf("%d->%d->%d\n",a,b,c);

return0;

}

 

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位的值。

 

输入样例:

 

在这里给出一组输入。

比如:

 

输出样例:

 

在这里给出相应的输出。

比如:

 

【参照答案】

#include<>

 

intmain()

{

intc,s;

floatp,w,d,f;

scanf("%f%f%d",&p,&w,&s);

if(s>=3000)c=12;

elsec=s/250;

switch(c)

{

case

0:

d=0;break;

case

1:

d=2;break;

case

2:

case

3:

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=%.2f\n",f);

 

return0;

}

 

3、三天捕鱼两天晒网(15分)

中国有句俗语叫“三天捕鱼两天晒网”。

假定某人从某天起,开始“三天捕鱼两天晒网”,问这个人在此后的第N天中是“捕鱼”仍是“晒网”

 

输入格式:

 

输入在一行中给出一个不超出1000的正整数N。

 

输出格式:

 

在一行中输出这人在第N天中是“Fishing”(即“捕鱼”)仍是“Drying”(即“晒网”),而且输出“indayN”。

 

输入样例1:

 

输出样例1:

 

输入样例2:

 

输出样例2:

 

【参照答案】

#include""

intmain()

{intN,x;scanf("%d",&N);

x=N%5;

if(x>=1&&x<=3)printf("Fishinginday%d\n",N);elseprintf("Dryinginday%d\n",N);

return0;

}

 

4、计算分段函数[2](15分)

 

此题目要求计算以下分段函数f(x)的值:

 

注:

可在头文件中包括,并调用函数求平方根,调用函数求幂。

 

输入格式:

 

输入在一行中给出实数x。

 

输出格式:

 

在一行中按“f(x)=result”的格式输出,此中x与result都保存两位小数。

 

输入样例1:

 

输出样例1:

 

输入样例2:

 

输出样例2:

 

【参照答案】

#include<>

#include""

intmain()

{

floatx,y;

scanf("%f",&x);

if(x>=0)y=sqrt(x);

elsey=(x+1)*(x+1)+2*x+1/x;

printf("f(%.2f)=%.2f\n",x,y);

return0;

}

 

5、判断输入的字符是哪一种种类(15分)

经过键盘输入一个字符,编程判断并输出用户输入的是什么种类的字符。

 

输入格式:

 

输入一个字符。

 

输出格式:

 

在一行中输出该字符是哪一种种类的字符。

 

若用户输入字符为和之间,输出

 

若用户输入字符在和之间,输出

若用户输入字符在和之间,输出

其余状况,输出

 

输入样例:

 

输出样例:

 

【参照答案】

#include<>

intmain()

{

charc;

c=getchar();

if(c>='0'&&c<='9')printf("Thisisadigit.");

elseif(c>='A'&&c<='Z')printf("Thisisacapitalletter.");

elseif(c>='a'&&c<='z')printf("Thisisasmallletter.");

elseprintf("Othercharacter.");

return0;

}

 

6、求一元二次方程的根(15分)

此题目要求一元二次方程的根,结果保存2位小数。

 

输入格式:

 

输入在一行中给出3个浮点系数a、b、c,中间用空格分开。

 

输出格式:

 

依据系数状况,输出不一样结果:

1)假如方程有两个不相等的实数根,则每行输出一个根,先大后小;

2)假如方程有两个不相等复数根,则每行依据格式“实部+虚部i”输出一个根,先输出虚部为正的,后输出虚部为负的;

3)假如方程只有一个根,则直接输出此根;

4)假如系数都为0,则输出"ZeroEquation";

5)假如a和b为0,c不为0,则输出"NotAnEquation"。

 

输入样例1:

 

输出样例1:

 

输入样例2:

 

输出样例2:

 

输入样例3:

 

输出样例3:

 

输入样例4:

 

输出样例4:

 

输入样例5:

 

输出样例5:

 

【参照答案】

 

#include<>

 

#include<>

 

intmain()

 

{

 

floata,b,c;

 

floatx1,x2,p,y;

 

scanf("%f%f%f",&a,&b,&c);

 

if(a==0&&b==0&&c==0){printf("ZeroEquation");return0;}

 

if(a==0&&b==0&&c!

=0){printf("NotAnEquation");return0;}

 

p=b*b-4*a*c;

 

if(a==0){x1=-c/b;printf("%.2f\n",x1);return0;}

 

if(p>=0&&a!

=0)

 

if(p>0)

 

{x1=(-b+sqrt(p))/(2*a);

 

x2=(-b-sqrt(p))/(2*a);

 

printf("%.2f\n%.2f\n",x1,x2);

 

}

 

else

 

{x1=-b/(2*a);printf("%.2f\n",x1);}

 

elseif(b!

=0){p=sqrt(-p);x1=-b/(2*a);y=p/(2*a);

 

printf("%.2f+%.2fi\n",x1,y);

 

printf("%.2f-%.2fi\n",x1,y);

 

}

 

else{y=sqrt(-p)/(2*a);

 

if(y>0)printf("+%.2fi\%.2fi\n",y,y);

 

elseprintf("+%.2fi\%.2fi\n",-y,-y);

 

}

 

return0;

 

}

 

7、A除以B(15分)

 

真的是简单题哈——给定两个绝对值不超出100的整数A和B,要求你依据

 

“A/B=商”的格式输出结果。

 

输入格式:

 

输入在第一行给出两个整数A和B(?

100≤A,B≤100),数字间以空格分开。

 

输出格式:

 

在一行中输出结果:

假如分母是正数,则输出“A/B=商”;假如分母是负数,

则要用括号把分母括起来输出;假如分母为零,则输出的商应为。

输出的商应保存小数点后2位。

 

输入样例1:

 

输出样例1:

 

输入样例2:

 

输出样例2:

 

输入样例3:

 

输出样例3:

 

【参照答案】

 

#include<>

 

#include<>

 

intmain()

 

{intA,B;

 

scanf("%d%d",&A,&B);

 

if(B==0)

 

printf("%d/%d=Error\n",A,B);

 

else

 

if(B<0)

 

printf("%d/(%d)=%.2f\n",A,B,(float)A/B);

 

else

 

printf("%d/%d=%.2f\n",A,B,(float)A/B);

 

return0;

 

}

 

8、计算火车运转时间(15分)

此题要求依据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。

 

输入格式:

 

输入在一行中给出2个4位正整数,此间以空格分开,分别表示火车的出发时间和抵达时间。

每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假定出发和抵达在同一天内。

 

输出格式:

 

在一行输出该旅途所用的时间,格式为“

 

hh:

mm”,此中

 

hh为

 

2位小时数、

 

mm

为2位分钟数。

 

输入样例:

 

输出样例:

 

【参照答案】

 

#include""

 

intmain()

 

{inth1,h2,hour1,hour2,men1,men2,a,b;scanf("%d%d",&h1,&h2);hour1=h1/100;

men1=h1%100;

 

hour2=h2/100;

 

men2=h2%100;

 

if(men2

 

{

 

men2=men2+60;

 

hour2--;

 

}

 

a=hour2-hour1;

 

b=men2-men1;

 

printf("%02d:

%02d\n",a,b);

 

return0;

 

}

 

实验三

 

1、求交织序列前N项和(15分)

此题要求编写程序,计算交织序列1-2/3+3/5-4/7+5/9-6/11+...的前N项之

和。

 

输入格式:

 

输入在一行中给出一个正整数N。

 

输出格式:

 

在一行中输出部分和的值,结果保存三位小数。

 

输入样例:

 

输出样例:

 

【参照答案】

 

#include<>

 

intmain()

 

{

 

inti,N,s=1;

 

floata,b,t,sum=0;

 

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("%.3f\n",sum);

 

return0;

 

}

 

2、统计整数的位数(15分)

从键盘读入一个整数,统计该数的位数。

比如,输入12534,输出5;输入-99,输出2;输入0,输出1。

 

输入格式:

 

输入一个整数N(?

105?

≤N≤105?

)。

 

输出格式:

 

在一行中按以下格式输出该数的位数。

 

输入样例:

 

输出样例:

 

【参照答案】

 

#include<>

 

intmain()

 

{

 

intN,s=0;

 

scanf("%d",&N);

 

if(N==0)printf("Itcontains%ddigits.\n",++s);

 

else{

 

if(N<0)N=-N;

 

while(N!

=0)

 

{

 

s++;

 

N=N/10;

 

}

 

printf("Itcontains%ddigits.\n",s);

 

}

 

return0;

 

}

 

3、最大条约数和最小公倍数(15分)

此题要求两个给定正整数的最大条约数和最小公倍数。

 

输入格式:

 

输入在一行中给出两个正整数M和N(≤1000)。

 

输出格式:

 

在一行中次序输出M和N的最大条约数和最小公倍数,两数字间以1空格分开。

 

输入样例:

 

输出样例:

 

【参照答案】

 

#include<>

 

intmain()

 

{

 

intM,N,gys,gbs;

 

intt;

 

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);

 

return0;

 

}

 

4、统计字符(15分)

此题要求编写程序,输入10个字符,统计此中英文字母、空格或回车、数字字符和其余字符的个数。

 

输入格式:

 

输入为10个字符。

最后一个回车表示输入结束,不算在内。

 

输出格式:

 

在一行内依据

 

的格式输出。

 

输入样例:

 

输出样例:

 

【参照答案】

 

#include<>

 

intmain()

 

{

 

inti,letter,blank,digit,other;

 

charc;

 

letter=blank=digit=other=0;

 

for(i=0;i<10;i++)

 

{scanf("%c",&c);if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))letter++;elseif(c>='0'&&c<='9')digit++;

elseif(c==''||c=='\n')blank++;elseother++;

}

 

printf("letter=%d,blank=%d,digit=%d,other

 

=%d\n",letter,blank,digit,other);return0;

}

 

5、简写转

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 小升初

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1