c语言习题及答案爱课程mooc.docx
《c语言习题及答案爱课程mooc.docx》由会员分享,可在线阅读,更多相关《c语言习题及答案爱课程mooc.docx(54页珍藏版)》请在冰豆网上搜索。
![c语言习题及答案爱课程mooc.docx](https://file1.bdocx.com/fileroot1/2023-1/24/9f92621f-226e-42de-8508-16ac21290318/9f92621f-226e-42de-8508-16ac212903181.gif)
c语言习题及答案爱课程mooc
第一章
题目内容:
使用printf()在屏幕上输出helloworld!
提示:
#include <>
intmain()
{
printf("helloworld!
\n");
return0;
}
输入格式:
无
输出格式:
输出提示信息:
"helloworld!
\n"
输入样例:
输出样例:
helloworld!
#include<>
intmain()
{
printf("helloworld!
\n");
return0;
}
在屏幕上输出多行信息(3分)
题目内容:
使用printf()函数在屏幕上输出以下多行信息:
helloworld!
hellohit!
helloeveryone!
提示:
在printf()函数中转义字符‘\n’表示换行。
输入格式:
输出格式:
输出提示信息:
"helloworld!
\n"
"hellohit!
\n"
"helloeveryone!
\n"
输入样例:
输出样例:
helloworld!
hellohit!
helloeveryone!
#include<>
intmain()
{
printf("helloworld!
\n");
printf("hellohit!
\n");
printf("helloeveryone!
\n");
return0;
}
计算半圆弧的周长及半圆面积(3分)
题目内容:
编程并输出半径r=的半圆弧的周长及该半圆的面积,
的取值为。
要求半径r和
必须利用宏常量表示。
输入格式:
无
输出格式:
半圆的面积输出格式:
"Area=%f\n"
半圆弧的周长输出格式:
"circumference=%f\n"
输入样例:
输出样例:
Area=
circumference=
#include<>
#definePI
#defineR
intmain()
{
printf("Area=%f\n",R*R*PI/2);
printf("circumference=%f\n",2*R*PI/2);
return0;
}
计算长方体体积(3分)
题目内容:
编程并输出长、宽、高的长方体的体积。
要求长方体的长、宽、高必须利用const常量表示。
输入格式:
无
输出格式:
长方体的体积输出格式:
"volume=%.3f\n"
输入样例:
输出样例:
#include<>
intmain()
{
constfloatl=;
constfloatx=;
constfloaty=;
printf("volume=%.3f\n",l*x*y);
return0;
}
第三章
计算两个数的平方和(3分)
题目内容:
从键盘读入两个实数,编程计算并输出它们的平方和,要求使用数学函数pow(x,y)计算平方值,输出结果保留2位小数。
提示:
使用数学函数需要在程序中加入编译预处理命令#include<>
以下为程序的输出示例:
pleaseinputxandy:
↙
result=
输入格式:
"%f,%f"
输出格式:
输入提示信息:
"pleaseinputxandy:
\n"
输出格式:
"result=%.2f\n"
输入样例:
输出样例:
#include<>
#include<>
intmain()
{
printf("pleaseinputxandy:
\n");
floatx,y;
scanf("%f,%f",&x,&y);
printf("result=%.2f\n",pow(x,2)+pow(y,2));
return0;
}
逆序数的拆分计算(3分)
题目内容:
从键盘输入一个4位数的整数,编程计算并输出它的逆序数(忽略整数前的正负号)。
例如,输入-1234,忽略负号,由1234分离出其千位1、百位2、十位3、个位4,然后计算4*1000+3*100+2*10+1=4321,并输出4321。
再将得到的逆序数4321拆分为两个2位数的正整数43和21,计算并输出拆分后的两个数的平方和的结果。
以下是程序的输出示例:
Inputx:
-1234↙
y=4321
a=43,b=21
result=2290
输入格式:
"%d"
输出格式:
输入提示信息:
"Inputx:
\n"
逆序数输出格式:
"y=%d\n"
逆序数拆分后的输出格式:
"a=%d,b=%d\n"
平方和的输出格式:
"result=%d\n"
输入样例:
输出样例:
#include<>
intmain()
{
printf("Inputx:
\n");
intx;
scanf("%d",&x);
if(x<=0)
{
x=-x;
}
inta,b,c,d;
a=x/1000;
b=x/100%10;
c=x/10%10;
d=x%10;
printf("y=%d\n",d*1000+c*100+b*10+a);
printf("a=%d,b=%d\n",d*10+c,b*10+a);
printf("result=%d\n",(b*10+a)*(b*10+a)+(d*10+c)*(d*10+c));
return0;
}
拆分英文名(3分)
题目内容:
从键盘输入某同学的英文名(小写输入,假设学生的英文名只包含3个字母。
如:
tom),编写程序在屏幕上输出该同学的英文名,且首字母大写(如:
Tom)。
同时输出组成该英文名的所有英文字符在26个英文字母中的序号。
以下为程序的输出示例:
inputyourEnglishname:
tom↙
Tom
t:
20
o:
15
m:
13
输入格式:
"%c%c%c"
输出格式:
输入提示信息:
"inputyourEnglishname:
\n"
首字母大写的英文姓名的输出格式:
"%c%c%c\n"
姓名中每个字母在26个英文字母中的序号的输出格式:
"%c:
%d\n"
输入样例:
输出样例:
#include<>
intmain()
{
printf("inputyourEnglishname:
\n");
chara,b,c;
scanf("%c%c%c",&a,&b,&c);
printf("%c%c%c\n",a+'A'-'a',b,c);
printf("%c:
%d\n",a,a-'a'+1);
printf("%c:
%d\n",b,b-'a'+1);
printf("%c:
%d\n",c,c-'a'+1);
return0;
}
计算体指数(3分)
题目内容:
从键盘输入某人的身高(以厘米为单位,如174cm)和体重(以公斤为单位,如70公斤),将身高(以米为单位,如)和体重(以斤为单位,如140斤)输出在屏幕上,并按照以下公式计算并输出体指数,要求结果保留到小数点后2位。
假设体重为w公斤,身高为h米,则体指数的计算公式为:
以下是程序的输出示例:
inputweight,height:
70,174↙
weight=140
height=
t=
输入格式:
"%d,%d"
输出格式:
输入提示信息:
"inputweight,height:
\n" (注意:
在height和逗号之间有一个空格)
体重输出格式:
"weight=%d\n"
身高输出格式:
"height=%.2f\n"
体指数输出格式:
"t=%.2f\n"
输入样例:
输出样例:
#include<>
intmain()
{
intx,y;
printf("inputweight,height:
\n");
scanf("%d,%d",&x,&y);
printf("weight=%d\n",x*2);
printf("height=%.2f\n",y/;
printf("t=%.2f\n",x/((y/*(y/));
return0;
}
第四章
数位拆分(4分)
题目内容:
从键盘上输入一个4位数的整数n,编写程序将其拆分为两个2位数的整数a和b,计算并输出拆分后的两个数的加、减、乘、除和求余运算的结果。
例如n=-4321,设拆分后的两个整数为a,b,则a=-43,b=-21。
除法运算结果要求精确到小数点后2位。
求余和除法运算需要考虑除数为0的情况,即如果拆分后b=0,则输出提示信息"thesecondoperateriszero!
"
程序的运行结果示例1:
pleaseinputn:
1200↙
12,0
sum=12,sub=12,multi=0
thesecondoperateriszero!
程序的运行结果示例2:
pleaseinputn:
-2304↙
-23,-4
sum=-27,sub=-19,multi=92
dev=,mod=-3
输入格式:
"%d"
输出格式:
输入提示信息:
"pleaseinputn:
\n"
拆分后的两个整数的输出格式:
"%d,%d\n"
加法、减法、乘法的输出格式:
"sum=%d,sub=%d,multi=%d\n"
除法和求余的输出格式:
"dev=%.2f,mod=%d\n"
除数为0的提示信息:
"thesecondoperateriszero!
\n"
输入样例:
输出样例:
#include<>
main()
{
intm,x,y;
printf("pleaseinputn:
\n");
scanf("%d",&m);
x=m/100;
y=m%100;
printf("%d,%d\n",x,y);
printf("sum=%d,sub=%d,multi=%d\n",x+y,x-y,x*y);
if(y!
=0){
printf("dev=%.2f,mod=%d\n",(float)x/y,x%y);
}
else{
printf("thesecondoperateriszero!
\n");
}
}
快递费用计算(4分)
题目内容:
上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域:
0区
1区
2区
3区
4区
同城
临近两省
1500公里(含)以内
1500——2500公里
2500公里以上
上海
江苏,浙江
北京,天津,河北,辽宁,河南,安微,陕西,湖北,江西,湖南,福建,广东,山西。
吉林,辽宁,甘肃,四川,重庆,青海,广西,云南,海南,内蒙古,黑龙江,贵州。
新疆,西藏。
快递费按邮件重量计算,由起重费用、续重费用两部分构成:
(1)起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费;
(2)同城起重资费10元,续重3元/公斤;
(3)寄往1区(江浙两省)的邮件,起重资费10元,续重4元;
(4)寄往其他地区的邮件,起重资费统一为15元。
而续重部分,不同区域价格不同:
2区的续重5元/公斤,3区的续重元/公斤,4区的续重10元/公斤。
编写程序,从键盘输入邮件的目的区域编码和重量,计算并输出运费,计算结果保留2位小数。
提示:
续重部分不足一公斤,按1公斤计算。
因此,如包裹重量公斤:
1公斤算起重,剩余的公斤算续重,不足1公斤按1公斤计算,公斤折合续重为2公斤。
如果重量应大于0、区域编号不能超出0-4的范围。
程序运行结果示例1:
4,↙
Price:
程序运行结果示例2:
5,↙
ErrorinArea
Price:
输入格式:
用逗号分隔的两个数字,第一个表示区域、第二个是重量:
"%d,%f"
输出格式:
价格的输出格式:
"Price:
%\n"
区域错误的提示信息:
"ErrorinArea\n"
输入样例:
输出样例:
#include<>
#include<>
intmain()
{
intarea;
floatweight,price,x1,x2;
scanf("%d,%f",&area,&weight);
if(weight<=1){
x1=;
}
else{
x1=;
x2=ceil(weight-1);
}
if(area>0&&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*;break;
case(4):
price=x1*15+x2*10;break;
}
printf("Price:
%\n",price);
}
else{
printf("ErrorinArea\n");
printf("Price:
\n");
}
return0;
}
数据区间判断(5分)
题目内容:
从键盘输入一个int型的正整数n(已知:
0如果用户输入的数据不在指定的范围里,程序输出"error!
"。
例如,输入265,则该数属于区间100-999。
程序运行结果示例1:
Pleaseenterthenumber:
2563↙
2563:
1000-9999
程序运行结果示例2:
Pleaseenterthenumber:
156↙
156:
100-999
程序运行结果示例3:
Pleaseenterthenumber:
36↙
36:
10-99
程序运行结果示例4:
Pleaseenterthenumber:
3↙
3:
0-9
程序运行结果示例5:
Pleaseenterthenumber:
10923↙
error!
输入格式:
"%d"
输出格式:
输入提示信息:
"Pleaseenterthenumber:
\n"
输出的区间判断:
"%d:
1000-9999\n"
"%d:
100-999\n"
"%d:
10-99\n"
"%d:
0-9\n"
输入错误提示信息:
"error!
\n"
输入样例:
输出样例:
#include<>
#include<>
intmain()
{
intx;
printf("Pleaseenterthenumber:
\n");
scanf("%d",&x);
if(x>=1000&&x<=9999)printf("%d:
1000-9999\n",x);
elseif(x>=0&&x<=9)printf("%d:
0-9\n",x);
elseif(x>=10&&x<=99)printf("%d:
10-99\n",x);
elseif(x>=100&&x<=999)printf("%d:
100-999\n",x);
elseprintf("error!
\n");
return0;
}
计算一元二次方程的根(3分)
题目内容:
根据下面给出的求根公式,计算并输出一元二次方程
的两个实根,要求精确到小数点后4位。
其中a,b,c的值由用户从键盘输入。
如果用户输入的系数不满足求实根的要求,输出错误提示 "error!
"。
程序运行结果示例1:
Pleaseenterthecoefficientsa,b,c:
1,2,1↙
x1=,x2=
程序运行结果示例2:
Pleaseenterthecoefficientsa,b,c:
2,6,1↙
x1=,x2=
程序运行结果示例3:
Pleaseenterthecoefficientsa,b,c:
2,1,6↙
error!
输入格式:
"%f,%f,%f"
输出格式:
输入提示信息:
"Pleaseenterthecoefficientsa,b,c:
\n"
输出格式:
"x1=%,x2=%\n"
输入错误提示信息:
"error!
\n"
输入样例:
输出样例:
#include<>
#include<>
intmain()
{
floata,b,c,x1,x2,m;
printf("Pleaseenterthecoefficientsa,b,c:
\n");
scanf("%f,%f,%f",&a,&b,&c);
m=b*b-4*a*c;
if(m<0){
printf("error!
\n");
}
else{
x1=(-b+sqrt(m))/(2*a);
x2=(-b-sqrt(m))/(2*a);
printf("x1=%,x2=%\n",x1,x2);
}
return0;
}
第五章
6位密码输入检测(3分)
题目内容:
从键盘输入6位仅由数字0~9组成的密码。
用户每输入一个密码并按回车键后,程序给出判断:
如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示"error",并让用户继续输入下一位密码。
直到用户输入的密码全部是数字为止。
以下为程序的运行结果示例:
Inputyourpassword:
1↙
1,youhaveenter1-bitsnumber
6↙
6,youhaveenter2-bitsnumber
a↙
error
d↙
error
4↙
4,youhaveenter3-bitsnumber
6↙
6,youhaveenter4-bitsnumber
8↙
8,youhaveenter5-bitsnumber
2↙
2,youhaveenter6-bitsnumber
输入格式:
数字字符输入格式:
"%c"
输出格式:
输入提示信息:
"Inputyourpassword:
\n"
如果输入的是数字,输出格式为:
"%c,youhaveenter%d-bitsnumber\n"
如果输入的不是数字,输出提示信息:
"error\n"
输入样例:
输出样例:
#include<>
intmain()
{
chara;
inti=0;
printf("Inputyourpassword:
\n");
while(i<6)
{
scanf("%c",&a);
if(a>=48&&a<=57)
{
printf("%c,youhaveenter%d-bitsnumber\n",a,++i);
}
else
printf("error\n");
getchar();
}
return0;
}
判断一个整型数据有几位(4分)
题目内容:
从键盘输入一个整型数据(int型),编写程序判断该整数共有几位。
例如,从键盘输入整数16644,该整数共有5位。
程序运行结果示例1:
Pleaseenterthenumber:
21125↙
21125:
5bits
程序运行结果示例2:
Pleaseenterthenumber:
-12234↙
-12234:
5bits
输入格式:
"%d"
输出格式:
输入提示信息:
"Pleaseenterthenumber:
\n"
判断该整数共有几位:
"%d:
%dbits\n"
输入样例:
输出样例:
#include<>
intmain(){
intx,y,n;
printf("Pleaseenterthenumber:
\n");
scanf("%d",&x);
n=x;
for(y=1;x/=10;y++);
printf("%d:
%dbits\n",n,y);
return0;
}
检测输入数据中奇数和偶数的个数(4分)
题目内容:
从键盘输入一系列正整数,输入-1表示输入结束(-1本身不是输入的数据)。
编写程序判断输入数据中奇数和偶数的个数。
如果用户输入的第一个数据就是-1,则程序输出"over!
"。
否则。
用户每输入一个数据,输出该数据是奇数还是偶数,直到用户输入-1为止,分别统计用户输入数据中奇数和偶数的个数。
程序运行结果示例1:
Pleaseenterthenumber:
1↙
1:
odd
5↙
5:
odd
8↙
8:
even
9↙
9:
odd
12↙
12:
even
17↙
17:
odd
-1↙
Thetotalnumberofoddis4
Thetotalnumberofevenis2
程序运行结果示例2:
Pleaseenterthenumber:
-1↙
over!
Thetotalnumberofoddis0
Thetotalnumberofevenis0
输入格式:
"%d"
输出格式:
输入提示信息:
"Pleaseenterthenumber:
\n"
用户输入的第一个数据就是-1,输出格式:
"over!
\n"
奇数的输出格式:
"%d:
odd\n"
偶数的输出格式:
"%d:
even\n"
输入数据中奇数的个数统计:
"Thetotalnumberofoddis%d\n"
输入数据中偶数的个数统计:
"Thetotalnumberofevenis%d\n"
输入样例:
输出样例:
#include<>
intmain(){
ints,odd=0,even=0;
printf("Pleaseenterthenumber:
\n");
do{
scanf("%d",&s);
if(s==-1&&odd==0&&even==0)printf("over!
\n");
elseif(s%2!
=0&&s!
=-1){printf("%d:
odd\n",s);odd++;}
elseif(s%2==0){printf("%d:
even\n",s);even++;}
elseeven+=0;
}while(s!
=-1);
printf("Thetotalnumberofoddis%d\n",odd);
printf("Thetotalnumberofevenis%d\n",even)