哈尔滨工业大学C语言MOOC在线测试312周答案.docx

上传人:b****7 文档编号:26045822 上传时间:2023-06-17 格式:DOCX 页数:143 大小:121.29KB
下载 相关 举报
哈尔滨工业大学C语言MOOC在线测试312周答案.docx_第1页
第1页 / 共143页
哈尔滨工业大学C语言MOOC在线测试312周答案.docx_第2页
第2页 / 共143页
哈尔滨工业大学C语言MOOC在线测试312周答案.docx_第3页
第3页 / 共143页
哈尔滨工业大学C语言MOOC在线测试312周答案.docx_第4页
第4页 / 共143页
哈尔滨工业大学C语言MOOC在线测试312周答案.docx_第5页
第5页 / 共143页
点击查看更多>>
下载资源
资源描述

哈尔滨工业大学C语言MOOC在线测试312周答案.docx

《哈尔滨工业大学C语言MOOC在线测试312周答案.docx》由会员分享,可在线阅读,更多相关《哈尔滨工业大学C语言MOOC在线测试312周答案.docx(143页珍藏版)》请在冰豆网上搜索。

哈尔滨工业大学C语言MOOC在线测试312周答案.docx

哈尔滨工业大学C语言MOOC在线测试312周答案

本答案仅供参考

第3周

1

计算两个数的平方和〔3分〕

题目内容:

从键盘读入两个实数,编程计算并输出它们的平方和,要求使用数学函数pow(x,y)计算平方值,输出结果保存2位小数。

提示:

使用数学函数需要在程序中参加编译预处理命令#include

以下为程序的运行结果例如:

pleaseinputxandy:

 

输入格式:

 "%f,%f"

输出格式:

输入提示信息:

"Pleaseinputxandy:

\n"

输出格式:

"Result=%.2f\n"

为防止出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

时间限制:

500ms内存限制:

32000kb

#include

intmain()

{

floatx,y,S,D;

printf("Pleaseinputxandy:

\n");

scanf("%f,%f",&x,&y);

S=pow(x,2);

D=pow(y,2);

printf("Result=%.2f\n",S+D);

return0;

}

2

逆序数的拆分计算〔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"

为防止出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

时间限制:

500ms内存限制:

32000kb

#include

main()

{

intx,b0,b1,b2,b3,y,a,b,c;

printf("Inputx:

\n");

scanf("%d",&x);

x=(int)fabs(x);/*取x绝对值*/

b3=x/1000;/*取x千位*/

b2=(x-b3*1000)/100;/*取x百位*/

b1=(x-b3*1000-b2*100)/10;/*取x十位*/

b0=x%10;/*取x个位*/

y=b3+b2*10+b1*100+b0*1000;

printf("y=%d\n",y);

a=b0*10+b1;

b=b2*10+b3;

c=(a*a)+(b*b);

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

printf("result=%d\n",c);

 

return0;

}

3

拆分英文名〔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"

为防止出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

时间限制:

500ms内存限制:

32000kb

#include

intmain()

{

charx,y,z,A;

printf("InputyourEnglishname:

\n");

scanf("%c%c%c\n",&x,&y,&z);

A=x-32;/*首字母改为大写*/

printf("%c%c%c\n",A,y,z);

 

printf("%c:

%d\n",x,x-96);

printf("%c:

%d\n",y,y-96);

printf("%c:

%d\n",z,z-96);

}

4

计算体指数〔3分〕

题目内容:

从键盘输入某人的身高〔以厘米为单位,如174cm〕和体重〔以公斤为单位,如70公斤〕,将身高〔以米为单位,如〕和体重〔以斤为单位,如140斤〕输出在屏幕上,并按照以下公式计算并输出体指数,要求结果保存到小数点后2位。

假设体重为w公斤,身高为h米,那么体指数的计算公式为:

        

以下是程序的运行结果例如:

Inputweight,height:

70,174↙

weight=140

 

输入格式:

 "%d,%d"

输出格式:

输入提示信息:

"Inputweight,height:

\n"  (注意:

在height和逗号之间有一个空格)

体重输出格式:

"weight=%d\n"

身高输出格式:

"height=%.2f\n"

体指数输出格式:

"t=%.2f\n"

为防止出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

时间限制:

500ms内存限制:

32000kb

#include

intmain()

{

floatA,b;

intx,y;

printf("Inputweight,height:

\n");

scanf("%d,%d",&x,&y);

printf("weight=%d\n",x*2);

A=(float)y/100;

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

b=(float)x/(A*A);

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

}

 

第4周

1

数位拆分v2.0〔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=5.75,mod=-3

输入格式:

 "%d"

输出格式:

输入提示信息:

"Pleaseinputn:

\n"

拆分后的两个整数的输出格式:

"%d,%d\n"

加法、减法、乘法的输出格式:

"sum=%d,sub=%d,multi=%d\n"

除法和求余的输出格式:

"dev=%.2f,mod=%d\n"

除数为0的提示信息:

"Thesecondoperateriszero!

\n"

为防止出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

时间限制:

500ms内存限制:

32000kb

#include

main()

{

floatc;

intx,b0,b1,b2,b3,a,b,d;

printf("Pleaseinputn:

\n");

scanf("%d",&x);

b3=x/1000;/*取x千位*/

b2=(x-b3*1000)/100;/*取x百位*/

b1=(x-b3*1000-b2*100)/10;/*取x十位*/

b0=x%10;/*取x个位*/

a=b3*10+b2;/*拆分输入的整数为两段*/

b=b1*10+b0;

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

printf("sum=%d,sub=%d,multi=%d\n",a+b,a-b,a*b);/*输出两段数的加,减,乘*/

if(0==b)

{

printf("Thesecondoperateriszero!

\n");

}

else

{

c=(float)a/b;

d=a%b;

printf("dev=%.2f,mod=%d\n",c,d);

}

return0;

}

2

快递费用计算〔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区的续重6.5元/公斤,4区的续重10元/公斤。

编写程序,从键盘输入邮件的目的区域编码和重量,计算并输出运费,计算结果保存2位小数。

提示:

续重局部缺乏一公斤,按1公斤计算。

因此,如包裹重量:

1公斤算起重,剩余的算续重,缺乏1公斤按1公斤计算,折合续重为2公斤。

如果重量应大于0、区域编号不能超出0-4的范围。

程序运行结果例如1:

程序运行结果例如2:

ErrorinArea

 

输入格式:

用逗号分隔的两个数字,第一个表示区域、第二个是重量:

"%d,%f"

输出格式:

价格的输出格式:

"Price:

%5.2f\n"

区域错误的提示信息:

"ErrorinArea\n"

为防止出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

时间限制:

500ms内存限制:

32000kb

>

#include

#defineeps1E-5

main()

{

floatb,c,d;

inta;

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

switch(a)

{

case0:

if(b<=1+eps)

{

c=10.0;

}

else

{

d=ceil(b-1.0);

c=d*3+10.0;

}

printf("Price:

%\n",c);

break;

case1:

if(b<=1+eps)

{

c=10.0;

}

else

{

d=ceil(b-1.0);

c=d*4+10.0;

}

printf("Price:

%\n",c);

break;

case2:

if(b<=1+eps)

{

c=15.0;

}

else

{

d=ceil(b-1.0);

c=d*5+15.0;

}

printf("Price:

%\n",c);

break;

case3:

if(b<=1+eps)

{

c=15.0;

}

else

{

d=ceil(b-1.0);

c=d*6.5+15;

}

printf("Price:

%\n",c);

break;

case4:

if(b<=1+eps)

{

c=15.0;

}

else

{

d=ceil(b-1.0);

c=d*10+15.0;

}

printf("Price:

%\n",c);

break;

default:

printf("ErrorinArea\n");

printf("Price:

0.00");

 

}

 

return0;

}

3

数据区间判断〔6分〕

题目内容:

从键盘输入一个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"

为防止出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

时间限制:

500ms内存限制:

32000kb

 

#include

#include

intmain()

{

 

intx,b0,b1,b2,b3,y,a,b,c;

printf("Pleaseenterthenumber:

\n");

scanf("%d",&x);

if(x<=0||x>=10000)

{

printf("error!

\n");

}

else

{

b3=x/1000;/*取x千位*/

b2=(x-b3*1000)/100;/*取x百位*/

b1=(x-b3*1000-b2*100)/10;/*取x十位*/

b0=x%10;/*取x个位*/

if(b3!

=0)

{

printf("%d:

1000-9999\n",x);

}

elseif(b3==0&&b2!

=0)

{

printf("%d:

100-999\n",x);

}

elseif(b3==0&&b2==0&&b1!

=0)

{

printf("%d:

10-99\n",x);

}

else

{

printf("%d:

0-9\n",x);

}

}

return0;

}

4

计算一元二次方程的根v2.0〔4分〕

题目内容:

根据下面给出的求根公式,计算并输出一元二次方程

的两个实根,要求精确到小数点后4位。

其中a,b,c的值由用户从键盘输入。

如果用户输入的系数不满足求实根的要求,输出错误提示 "error!

"。

程序运行结果例如1:

Pleaseenterthecoefficientsa,b,c:

1,2,1↙

 

程序运行结果例如2:

Pleaseenterthecoefficientsa,b,c:

2,6,1↙

 

程序运行结果例如3:

Pleaseenterthecoefficientsa,b,c:

2,1,6↙

error!

输入格式:

 "%f,%f,%f"

输出格式:

输入提示信息:

"Pleaseenterthecoefficientsa,b,c:

\n"

输出格式:

"x1=%,x2=%7.4f\n"

输入错误提示信息:

"error!

\n"

为防止出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

时间限制:

500ms内存限制:

32000kb

#include

#include

intmain()

{

floata,b,c,disc,p,q;

printf("Pleaseenterthecoefficientsa,b,c:

\n");

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

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

if(disc<0)

{

printf("error!

\n");

}

else

{

p=-b/(2*a);

q=sqrt(disc)/(2*a);

printf("x1=%,x2=%\n",q+p,p-q);

}

return0;

}

 

第五周

1

6位密码输入检测〔4分〕

题目内容:

从键盘输入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"

为防止出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

时间限制:

500ms内存限制:

32000kb

#include

 

intmain()

{

inti;

charc;

printf("Inputyourpassword:

\n");

i=0;

while(i<6)

{

scanf("%c%*c",&c);

if((c>=48)&&(c<=57))

{

i=i+1;

printf("%c,youhaveenter%d-bitsnumber\n",c,i);

}

else

{

printf("error\n");

}

}

return0;

}

2

判断一个整型数据有几位v1.0〔4分〕

题目内容:

从键盘输入一个整型数据(int型),编写程序判断该整数共有几位。

例如,从键盘输入整数16644,该整数共有5位。

程序运行结果例如1:

Pleaseenterthenumber:

21125↙

21125:

5bits

程序运行结果例如2:

Pleaseenterthenumber:

-12234↙

-12234:

5bits

输入格式:

 "%d"

输出格式:

输入提示信息:

"Pleaseenterthenumber:

\n"

判断该整数共有几位:

 "%d:

%dbits\n"

为防止出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。

时间限制:

500ms内存限制:

32000kb

#include

#include

intmain()

{

intn,nn,b,i,j,sum;

printf("Pleaseenterthenumber:

\n");

scanf("%d",&n);

nn=fabs(n);

b=1;

sum=1;

i=1;

j=10;

while(b=1)

{

if((nn>=i)&&(nn

{

printf("%d:

%dbits\n",n,sum);

b=0;

break;

}

else

{

i=i*10;

j=j*10;

sum=sum+1;

}

}

return0;

}

3

检测输入数据中奇数和偶数的个数〔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"

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

当前位置:首页 > 工程科技 > 信息与通信

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

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