收藏 分享(赏)

哈尔滨工业大学C语言2016年MOOC在线测试答案.doc

上传人:gnk289057 文档编号:6216640 上传时间:2019-04-02 格式:DOC 页数:57 大小:357.50KB
下载 相关 举报
哈尔滨工业大学C语言2016年MOOC在线测试答案.doc_第1页
第1页 / 共57页
哈尔滨工业大学C语言2016年MOOC在线测试答案.doc_第2页
第2页 / 共57页
哈尔滨工业大学C语言2016年MOOC在线测试答案.doc_第3页
第3页 / 共57页
哈尔滨工业大学C语言2016年MOOC在线测试答案.doc_第4页
第4页 / 共57页
哈尔滨工业大学C语言2016年MOOC在线测试答案.doc_第5页
第5页 / 共57页
点击查看更多>>
资源描述

1、本答案仅供参考,请勿用于商业用途或进行未经同意的转载第 3 周1计算两个数的平方和(3 分)题目内容:从键盘读入两个实数,编程计算并输出它们的平方和,要求使用数学函数 pow(x,y)计算平方值,输出结果保留 2 位小数。提示:使用数学函数需要在程序中加入编译预处理命令 #include 以下为程序的运行结果示例:please input x and y:1.2,3.4result=13.00输入格式: “%f,%f“输出格式:输入提示信息:“Please input x and y:n“输出格式:“Result=%.2fn“为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你

2、的程序中。时间限制:500ms 内存限制:32000kb#include int main()float x,y,S,D;printf(“Please input x and y:n“);scanf(“%f,%f“,S = pow(x,2);D = pow(y,2);printf(“Result=%.2fn“,S+D);return 0;2逆序数的拆分计算(3 分)题目内容:从键盘输入一个 4 位数的整数,编程计算并输出它的逆序数(忽略整数前的正负号)。例如,输入-1234,忽略负号,由 1234 分离出其千位 1、百位 2、十位 3、个位 4,然后计算 4*1000+3*100+2*10+1

3、 = 4321,并输出 4321。再将得到的逆序数 4321 拆分为两个 2 位数的正整数 43 和 21,计算并输出拆分后的两个数的平方和的结果。以下是程序的运行结果示例:Input x:-1234y=4321a=43,b=21result=2290输入格式: “%d“输出格式:输入提示信息:“Input x:n“逆序数输出格式:“y=%dn“逆序数拆分后的输出格式:“a=%d,b=%dn“平方和的输出格式:“result=%dn“为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。时间限制:500ms 内存限制:32000kb#include main()int

4、x,b0,b1,b2,b3,y,a,b,c;printf(“Input x:n“);scanf(“%d“,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=%dn“,y);a = b0*10+b1;b = b2*10+b3;c = (a*a)+(b*b);printf(“a=%d,b

5、=%dn“,a,b);printf(“result=%dn“,c);return 0;3拆分英文名(3 分)题目内容:从键盘输入某同学的英文名(小写输入,假设学生的英文名只包含 3 个字母。如: tom),编写程序在屏幕上输出该同学的英文名,且首字母大写(如: Tom)。同时输出组成该英文名的所有英文字符在 26 个英文字母中的序号。以下为程序的运行结果示例:Input your English name:tomTomt:20o:15m:13输入格式: “%c%c%c“输出格式:输入提示信息:“Input your English name:n“首字母大写的英文姓名的输出格式:“%c%c%cn

6、“姓名中每个字母在 26 个英文字母中的序号的输出格式:“%c:%dn“为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。时间限制:500ms 内存限制:32000kb#include int main()char x,y,z,A;printf(“Input your English name:n“);scanf(“%c%c%cn“,A=x-32; /*首字母改为大写*/printf(“%c%c%cn“,A,y,z);printf(“%c:%dn“,x,x-96);printf(“%c:%dn“,y,y-96);printf(“%c:%dn“,z,z-96);4计算

7、体指数(3 分)题目内容:从键盘输入某人的身高(以厘米为单位,如 174cm)和体重(以公斤为单位,如 70 公斤),将身高(以米为单位,如 1.74m)和体重(以斤为单位,如 140 斤)输出在屏幕上,并按照以下公式计算并输出体指数,要求结果保留到小数点后 2 位。假设体重为 w 公斤,身高为 h 米,则体指数的计算公式为:以下是程序的运行结果示例:Input weight, height:70,174weight=140height=1.74t=23.12输入格式: “%d,%d“输出格式:输入提示信息:“Input weight, height:n“ (注意:在 height 和逗号之间

8、有一个空格)体重输出格式:“weight=%dn“身高输出格式:“height=%.2fn“体指数输出格式:“t=%.2fn“为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。时间限制:500ms 内存限制:32000kb#include int main()float A,b;int x,y;printf(“Input weight, height:n“);scanf(“%d,%d“,printf(“weight=%dn“,x*2);A=(float)y/100;printf(“height=%.2fn“,A);b=(float)x/(A*A);printf(“t

9、=%.2fn“,b);第 4 周1数位拆分 v2.0(4 分)题目内容:从键盘上输入一个 4 位数的整数 n,编写程序将其拆分为两个 2 位数的整数 a 和 b,计算并输出拆分后的两个数的加、减、乘、除和求余运算的结果。例如 n=-4321,设拆分后的两个整数为 a,b,则 a=-43,b=-21。除法运算结果要求精确到小数点后 2 位。求余和除法运算需要考虑除数为 0 的情况,即如果拆分后b=0,则输出提示信息“The second operater is zero!“程序的运行结果示例 1:Please input n:120012,0sum=12,sub=12,multi=0The se

10、cond operater is zero!程序的运行结果示例 2:Please input n:-2304-23,-4sum=-27,sub=-19,multi=92dev=5.75,mod=-3输入格式: “%d“输出格式:输入提示信息:“Please input n:n“拆分后的两个整数的输出格式:“%d,%dn“加法、减法、乘法的输出格式:“sum=%d,sub=%d,multi=%dn“除法和求余的输出格式:“dev=%.2f,mod=%dn“除数为 0 的提示信息: “The second operater is zero!n“为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串

11、和提示信息到你的程序中。时间限制:500ms 内存限制:32000kb#include main()float c;int x,b0,b1,b2,b3,a,b,d;printf(“Please input n:n“);scanf(“%d“,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,%dn“,a,b);printf(“

12、sum=%d,sub=%d,multi=%dn“,a+b,a-b,a*b); /*输出两段数的加,减,乘*/if(0=b)printf(“The second operater is zero!n“);elsec=(float)a/b;d=a%b;printf(“dev=%.2f,mod=%dn“,c,d);return 0;2快递费用计算(4 分)题目内容:上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成 5 个区域:0 区 1 区 2 区 3 区 4 区同城 临近两省 1500 公里(含) 以内 15002500 公里 2500 公里以上上海 江苏,浙 江北京,天津,河北,辽宁

13、,河南,安微,陕西,湖北,江西,湖南,福建,广东,山西。吉林,辽宁,甘肃,四川,重庆,青海,广西,云南,海南,内蒙古,黑龙江,贵州。新疆,西藏。快递费按邮件重量计算,由起重费用、续重费用两部分构成:(1) 起重(首重)1 公斤按起重资费计算(不足 1 公斤,按 1 公斤计算),超过首重的重量,按公斤(不足 1 公斤,按 1 公斤计算)收取续重费;(2) 同城起重资费 10 元,续重 3 元/公斤;(3) 寄往 1 区(江浙两省)的邮件,起重资费 10 元,续重 4 元;(4) 寄往其他地区的邮件,起重资费统一为 15 元。而续重部分,不同区域价格不同:2 区的续重 5元/公斤,3 区的续重 6

14、.5 元/公斤, 4 区的续重 10 元/公斤。编写程序,从键盘输入邮件的目的区域编码和重量,计算并输出运费,计算结果保留 2 位小数。提示:续重部分不足一公斤,按 1 公斤计算。因此,如包裹重量 2.3 公斤:1 公斤算起重,剩余的 1.3 公斤算续重,不足 1 公斤按 1 公斤计算, 1.3 公斤折合续重为 2 公斤。如果重量应大于 0、区域编号不能超出 0-4 的范围。程序运行结果示例 1:4,4.5Price: 55.00程序运行结果示例 2:5,3.2Error in AreaPrice: 0.00输入格式:用逗号分隔的两个数字,第一个表示区域、第二个是重量:“%d,%f“输出格式:

15、价格的输出格式:“Price: %5.2fn“区域错误的提示信息:“Error in Arean“为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。时间限制:500ms 内存限制:32000kb#include #include #define eps 1E-5main()float b,c,d;int a;scanf(“%d,%f“,switch(a)case 0:if (b#include int main()int x,b0,b1,b2,b3,y,a,b,c;printf(“Please enter the number:n“);scanf(“%d“,if (

16、x=10000)printf(“error!n“);elseb3 = 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-9999n“,x);else if(b3=0else if(b3=0elseprintf(“%d: 0-9n“,x);return 0;4计算一元二次方程的根 v2.0( 4 分)题目内容:根据下面给出的求根公式,计算并输出一元二次方程 的两个实根,要求精确到

17、小数点后 4 位。其中 a,b,c 的值由用户从键盘输入。如果用户输入的系数不满足求实根的要求,输出错误提示 “error!“。程序运行结果示例 1:Please enter the coefficients a,b,c:1,2,1x1=-1.0000, x2=-1.0000程序运行结果示例 2:Please enter the coefficients a,b,c:2,6,1x1=-0.1771, x2=-2.8229程序运行结果示例 3:Please enter the coefficients a,b,c:2,1,6error!输入格式: “%f,%f,%f“输出格式:输入提示信息:“P

18、lease enter the coefficients a,b,c:n“输出格式:“x1=%7.4f, x2=%7.4fn“输入错误提示信息:“error!n“为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。时间限制:500ms 内存限制:32000kb#include #include int main()float a,b,c,disc,p,q;printf(“Please enter the coefficients a,b,c:n“);scanf(“%f,%f,%f“,disc=b*b-4*a*c;if(discint main()int i;char

19、c;printf(“Input your password:n“);i=0;while (i=48)printf(“Please enter the number:n“);scanf(“%d“,nn=fabs(n);b=1;sum=1;i=1;j=10;while (b=1)if (nn=i)odd=0;even=0;printf(“Please enter the number:n“);a=0;while (a!=-1)scanf(“%d“,if (a!=-1)if (a%2=1)odd+;printf(“%d:oddn“,a);else even+;printf(“%d:evenn“,a)

20、;if (even+odd=0)printf(“over!n“);printf(“The total number of odd is %dn“,odd);printf(“The total number of even is %dn“,even);return 0;4计算球的反弹高度(4 分)题目内容:一个球从 100 米高度自由落下,每次落地后反跳回原高度的一半,再落下并反弹 ,求它在第 5 次和第10 次落地时,分别共经过了多少米?第 5 次和第 10 次反弹分别是多高 ?要求计算结果保留到小数点后 3位。用户从键盘输入想要计算的第 n 次(nint main()double h,sum

21、=0;int n,i;printf(“Input:n“);scanf(“%d“,h=100;for (i=1;i2. int main()3. 4. int score;5. char grade;6. printf(“Please input score:“);7. scanf(“%d“, 8. if (score 100) 9. printf(“Input error!n“);10. else if (score = 90) 11. grade = A;12. else if (score = 80)13. grade = B; 14. else if (score = 70)15. gr

22、ade = C; 16. else if (score = 60)17. grade = D; 18. else19. grade = E; 20. printf(“grade:%cn“, grade);21. return 0;22.程序运行结果示例 1:Please input score:aInput error!Please input score:-12Input error!Please input score:230Input error!Please input score:92grade: A程序运行结果示例 2:Please input score:88grade: B程序

23、运行结果示例 3:Please input score:73grade: C程序运行结果示例 4:Please input score:65grade: D程序运行结果示例 5:Please input score:27grade: E输入提示信息:“Please input score:n“输入格式: “%d“输出格式:输入错误时的提示信息:“Input error!n“输出格式:“grade: %cn“ (注意:%c 前面有一个空格)为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。时间限制:500ms 内存限制:32000kb#includeint main(

24、)int score=-1;char grade;printf(“Please input score:n“);scanf(“%d“, while(score 100)getchar();printf(“Input error!n“);printf(“Please input score:n“);scanf(“%d“, if (score = 90)grade = A;else if (score = 80)grade = B;else if (score = 70)grade = C;else if (score = 60)grade = D;elsegrade = E;printf(“gr

25、ade: %cn“, grade);return 0;2编程计算 a+aa+aaa+aaa(n 个 a)的值(4 分)题目内容:编程计算 a+aa+aaa+aaa( n 个 a)的值,n 和 a 的值由键盘输入。例如,当 n=4,a=2,表示计算2+22+222+2222 的值。程序运行结果示例:Input a,n:2,4sum=2468输入提示信息:“Input a,n:n“输入格式: “%d,%d“(先输入 a,后输入 n)输出格式: “sum=%ldn“为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。时间限制:500ms 内存限制:31kb#include

26、main()long term=0,sum=0;int a,i,n;printf(“Input a,n:n“);scanf(“%d,%d“,for(i=1;iint main()int a;int man, wman, child;printf(“Input n(27int main( )int y,m;printf(“Input year,month:n“);scanf(“%d,%d“,if (m12) printf(“Input error!n“);return 0;switch (m)case 1:case 3:case 5:case 7:case 8:case 10:case 12:p

27、rintf(“31 daysn“);break;case 4:case 6:case 9:case 11:printf(“30 daysn“);break;case 2:if (y%100=0) y/=100;if (y%4=0) printf(“29 daysn“);else printf(“28 daysn“);return 0;第七周1递归法计算游戏人员的年龄(4 分)题目内容:有 n 个人围坐在一起,问第 n 个人多大年纪,他说比第 n-1 个人大 2 岁;问第 n-1 个人,他说比第 n-2 个人大 2 岁 ,.,问第 3 个人,他说比第 2 个人大 2 岁;问第 2 个人,他说比第

28、 1 个人大 2 岁。第 1 个人说自己 10 岁,问第 n 个人多大年纪。递归函数原型:unsigned int ComputeAge(unsigned int n);提示:计算年龄的递归公式为:输入格式: “%u“输出格式: “The persons age is %un“输入样例 1:5输出样例 1:The_persons_age_is_18输入样例 2:10输出样例 2:The_persons_age_is_28注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)时间

29、限制:500ms 内存限制:32000kb#include#includeunsigned int ComputeAge(unsigned int n);unsigned int ComputeAge(unsigned int n)int a;if (n = 1)a = 10;elsea = ComputeAge(n - 1) + 2;return a;int main()unsigned int n,f;scanf(“%u“,f=ComputeAge(n);printf(“The persons age is %un“,f);return 0;2.魔术师猜数(4 分)题目内容:在一种室内互动

30、游戏中,魔术师要每位观众心里想一个三位数 abc(a、b、c 分别是百位、十位和个位数字),然后魔术师让观众心中记下 acb、bac、bca、cab、cba 五个数以及这 5 个数的和值。只要观众说出这个和是多少,则魔术师一定能猜出观众心里想的原数 abc 是多少。例如,观众甲说他计算的和值是1999,则魔术师立即说出他想的数是 443,而观众乙说他计算的和值是 1998,则魔术师说:“ 你算错了!”。请编程模拟这个数字魔术游戏。要求用函数实现,函数原型为:int Magic(int m);其中形参 m 代表观众计算的和值。输入格式:“%d“输出格式:观众计算错误,魔术师给出的结论:“The

31、sum you calculated is wrong!n“观众计算正确,魔术师给出的结论:“The number is %dn“输入样例 1:1998输出样例 1:The_sum_you_calculated_is_wrong!输入样例 2:1999输出样例 2:The_number_is_443注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)参考:#include#include#include#include#include/函数的声明void magician()

32、;void decision();void mainmenu();void exitgame();void hellp();void playerchoice();void mainPage()/主界面int i;printf(“t_vvvvvv_系统正在加载中,请稍等 ._vvvvvv_tn“);printf(“t_ zzzzzzzzzzz 电脑不给力,请稍等一会_ zzzzzzzzzzzztn“);for(i=0;i80;i+)printf(“%“);Sleep(200); printf(“ttt 终于结束了( )tttn“);system(“CLS“);system(“color 8B“

33、);printf(“ *n“);printf(“ *n“);printf(“ * *n“);printf(“ * *n“);printf(“ * 第五组 *n“);printf(“ * 成员:林可、王丽婕、张婷婷、许春雪、 *n“);printf(“ * 裴月娥、钱鹏辰 *n“);printf(“ * *n“);printf(“ * *n“);printf(“ *n“);printf(“ *n“);int a;int b;int c;int sum;/计算的和值int e;/三位数的值void main ()/主函数mainPage();mainmenu();/*acb+bca+bac+cab+cba+abc=sum-abc222(a+b+c)=sum-abc本代码的核心思想*/void mainmenu()/系统主菜单int select;while(1)printf(“%Main Menu%n“);printf(“Menun“);printf(“t 1 退出n“);printf(“t 2 进入游戏n“);printf(“t 3 游戏帮助n“);printf(“请输入相应的数字,进入不同的模块: n“);printf(“n“);scanf(“%d“,getchar();fflush(stdin);if(select=1)exitgame();else if(select=2)

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

当前位置:首页 > 网络科技 > C/C++资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报