哈尔滨工业大学C语言2016年MOOC在线测试答案
更新时间:2024-01-28 14:56:01 阅读量: 教育文库 文档下载
本答案仅供参考,请勿用于商业用途或进行未经同意的转载
第3周 1
计算两个数的平方和(3分)
题目内容:
从键盘读入两个实数,编程计算并输出它们的平方和,要求使用数学函数pow(x,y)计算平方值,输出结果保留2位小数。
提示:使用数学函数需要在程序中加入编译预处理命令 #include
以下为程序的运行结果示例: please input x and y: 1.2,3.4↙ result=13.00
输入格式: \输出格式:
输入提示信息:\输出格式:\
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb
#include
int main() {
float x,y,S,D;
printf(\ scanf(\
S = pow(x,2); D = pow(y,2);
printf(\ }
return 0;
2
逆序数的拆分计算(3分)
题目内容:
从键盘输入一个4位数的整数,编程计算并输出它的逆序数(忽略整数前的正负号)。例如,输入-1234,忽略负号,由1234分离出其千位1、百位2、十位3、个位4,然后计算4*1000+3*100+2*10+1 = 4321,并输出4321。再将得到的逆序数4321拆分为两个2位数的正整数43和21,计算并输出拆分后的两个数的平方和的结果。
以下是程序的运行结果示例: Input x: -1234↙ y=4321 a=43,b=21 result=2290
输入格式: \输出格式:
输入提示信息:\逆序数输出格式:\
逆序数拆分后的输出格式:\平方和的输出格式:\
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb
#include
int x,b0,b1,b2,b3,y,a,b,c;
printf(\ scanf(\
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; /*取x个位*/
y = b3+b2*10+b1*100+b0*1000; printf(\
a = b0*10+b1; b = b2*10+b3; c = (a*a)+(b*b);
printf(\ printf(\ }
return 0;
3
拆分英文名(3分)
题目内容:
从键盘输入某同学的英文名(小写输入,假设学生的英文名只包含3个字母。如: tom),编写程序在屏幕上输出该同学的英文名,且首字母大写(如: Tom)。同时输出组成该英文名的所有英文字符在26个英文字母中的序号。
以下为程序的运行结果示例: Input your English name: tom↙ Tom t:20 o:15 m:13
输入格式: \输出格式:
输入提示信息:\首字母大写的英文姓名的输出格式:\
姓名中每个字母在26个英文字母中的序号的输出格式:\
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb
#include
int main() {
char x,y,z,A;
A=x-32; /*首字母改为大写*/ printf(\
printf(\ printf(\ printf(\ }
printf(\ scanf(\
4
计算体指数(3分)
题目内容:
从键盘输入某人的身高(以厘米为单位,如174cm)和体重(以公斤为单位,如70公斤),将身高(以米为单位,如1.74m)和体重(以斤为单位,如140斤)输出在屏幕上,并按照以下公式计算并输出体指数,要求结果保留到小数点后2位。
假设体重为w公斤,身高为h米,则体指数的计算公式为:
以下是程序的运行结果示例: Input weight, height: 70,174↙ weight=140 height=1.74 t=23.12
输入格式: \输出格式:
输入提示信息:\ (注意:在height和逗号之间有一个空格) 体重输出格式:\身高输出格式:\
体指数输出格式:\
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb
#include
int main() {
float A,b; int x,y;
printf(\
A=(float)y/100;
printf(\
b=(float)x/(A*A);
printf(\ }
printf(\ scanf(\
第4周 1
数位拆分v2.0(4分)
题目内容:
从键盘上输入一个4位数的整数n,编写程序将其拆分为两个2位数的整数a和b,计算并输出拆分后的两个数的加、减、乘、除和求余运算的结果。例如n=-4321,设拆分后的两个整数为a,b,则a=-43,b=-21。除法运算结果要求精确到小数点后2位。求余和除法运算需要考虑除数为0的情况,即如果拆分后b=0,则输出提示信息\
程序的运行结果示例1: Please input n: 1200↙
12,0
sum=12,sub=12,multi=0 The second operater is zero!
程序的运行结果示例2: Please input n: -2304↙ -23,-4
sum=-27,sub=-19,multi=92 dev=5.75,mod=-3
输入格式: \输出格式:
输入提示信息:\拆分后的两个整数的输出格式:\
加法、减法、乘法的输出格式:\除法和求余的输出格式:\除数为0的提示信息:\
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb
#include
float c;
int x,b0,b1,b2,b3,a,b,d;
b3 = x/1000; /*取x千位*/ b2 = (x-b3*1000)/100; /*取x百位*/ b1 = (x-b3*1000-b2*100)/10; /*取x十位*/ b0 = x; /*取x个位*/
a=b3*10+b2; /*拆分输入的整数为两段*/ b=b1*10+b0;
printf(\
printf(\ /*输出两段数的加,减,乘*/
if(0==b)
printf(\ scanf(\
{
printf(\ } else {
c=(float)a/b; d=a%b;
printf(\ } }
return 0;
2
快递费用计算(4分)
题目内容:
上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域:
0区 同城 2区 1500公里(含)以临近两省 内 北京,天津,河北,辽宁,河南,安微,江苏,浙陕西,湖北,江西,江 湖南,福建,广东,山西。 1区 3区 4区 1500——2500公里 2500公里以上 吉林,辽宁,甘肃,四川,重庆,青海,广西,云南,海南,新疆,西藏。 内蒙古,黑龙江,贵州。 上海
快递费按邮件重量计算,由起重费用、续重费用两部分构成: (1)
起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤
(不足1公斤,按1公斤计算)收取续重费; (2) (3) (4)
同城起重资费10元,续重3元/公斤;
寄往1区(江浙两省)的邮件,起重资费10元,续重4元;
寄往其他地区的邮件,起重资费统一为15元。而续重部分,不同区域价格不同:2区的续重5
元/公斤,3区的续重6.5元/公斤,4区的续重10元/公斤。
编写程序,从键盘输入邮件的目的区域编码和重量,计算并输出运费,计算结果保留2位小数。 提示:续重部分不足一公斤,按1公斤计算。因此,如包裹重量2.3公斤:1公斤算起重,剩余的1.3公斤算续重,不足1公斤按1公斤计算,1.3公斤折合续重为2公斤。如果重量应大于0、区域编号不能超出0-4的范围。
程序运行结果示例1: 4,4.5↙
Price: 55.00
程序运行结果示例2: 5,3.2↙ Error in Area Price: 0.00
输入格式:
用逗号分隔的两个数字,第一个表示区域、第二个是重量:\
输出格式:
价格的输出格式:\区域错误的提示信息:\
为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb
#include
float b,c,d; int a;
scanf(\ switch(a) {
case 0:
if (b<=1+eps) {
c=10.0; } else {
d=ceil(b-1.0); c=d*3+10.0; }
printf(\ break;
case 1:
if (b<=1+eps)
{
c=10.0; } else {
d=ceil(b-1.0); c=d*4+10.0; }
printf(\ break;
case 2:
if (b<=1+eps) {
c=15.0; } else {
d=ceil(b-1.0); c=d*5+15.0; }
printf(\ break;
case 3:
if (b<=1+eps) {
c=15.0; } else {
d=ceil(b-1.0); c=d*6.5+15; }
printf(\ break;
case 4:
if (b<=1+eps) {
c=15.0; } else {
d=ceil(b-1.0); c=d*10+15.0; }
printf(\ break;
default:
printf(\ printf(\ 0.00\ } }
return 0;
3
数据区间判断(6分)
题目内容:
从键盘输入一个int型的正整数n(已知:0 程序运行结果示例1: Please enter the number: 2563↙ 2563: 1000-9999 程序运行结果示例2: Please enter the number: 156↙ 156: 100-999 程序运行结果示例3: Please enter the number: 36↙ 36: 10-99 程序运行结果示例4: Please enter the number: 3↙ 3: 0-9 程序运行结果示例5: Please enter the number: 10923↙ error! 输入格式: \输出格式: 输入提示信息:\输出的区间判断: \\\\ 输入错误提示信息:\ 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb #include int main() { int x,b0,b1,b2,b3,y,a,b,c; if (x<=0||x>=10000) { printf(\ } else { b3 = x/1000; /*取x千位*/ b2 = (x-b3*1000)/100; /*取x百位*/ b1 = (x-b3*1000-b2*100)/10; /*取x十位*/ b0 = x; /*取x个位*/ if(b3!=0) printf(\ scanf(\ { printf(\ } else if(b3==0&&b2!=0) { printf(\ } else if(b3==0&&b2==0&&b1!=0) { printf(\ } else { printf(\ } } return 0; } 4 计算一元二次方程的根v2.0(4分) 题目内容: 根据下面给出的求根公式,计算并输出一元二次方程 的两个实根,要求精确到小 数点后4位。其中a,b,c的值由用户从键盘输入。如果用户输入的系数不满足求实根的要求,输出错误提示 \。 程序运行结果示例1: Please enter the coefficients a,b,c: 1,2,1↙ x1=-1.0000, x2=-1.0000 程序运行结果示例2: Please enter the coefficients a,b,c: 2,6,1↙ x1=-0.1771, x2=-2.8229 程序运行结果示例3: Please enter the coefficients a,b,c: 2,1,6↙ error! 输入格式: \输出格式: 输入提示信息:\输出格式:\输入错误提示信息:\ 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb #include int main() { float a,b,c,disc,p,q; disc=b*b-4*a*c; if(disc<0) { printf(\ } else { p=-b/(2*a); q=sqrt(disc)/(2*a); printf(\ } return 0; } printf(\ scanf(\ 第五周 1 6位密码输入检测(4分) 题目内容: 从键盘输入6位仅由数字0~9组成的密码。用户每输入一个密码并按回车键后,程序给出判断:如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示\,并让用户继续输入下一位密码。直到用户输入的密码全部是数字为止。 以下为程序的运行结果示例: Input your password: 1↙ 1, you have enter 1-bits number 6↙ 6, you have enter 2-bits number a↙ error d↙ error 4↙ 4, you have enter 3-bits number 6↙ 6, you have enter 4-bits number 8↙ 8, you have enter 5-bits number 2↙ 2, you have enter 6-bits number 输入格式: 数字字符输入格式:\ 输出格式: 输入提示信息:\ 如果输入的是数字,输出格式为:\如果输入的不是数字,输出提示信息:\ 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb #include int main() { int i; char c; printf(\ i=0; while (i<6) { scanf(\ if ((c>=48)&&(c<=57)) { i=i+1; printf(\ } else { printf(\ } } return 0; } 2 判断一个整型数据有几位v1.0(4分) 题目内容: 从键盘输入一个整型数据(int型),编写程序判断该整数共有几位。例如,从键盘输入整数16644,该整数共有5位。 程序运行结果示例1: Please enter the number: 21125↙ 21125: 5 bits 程序运行结果示例2: Please enter the number: -12234↙ -12234: 5 bits 输入格式: \输出格式: 输入提示信息:\判断该整数共有几位: \ 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb #include int main() { int n,nn,b,i,j,sum; printf(\ scanf(\ nn=fabs(n); b=1; sum=1; i=1; j=10; while (b=1) { if ((nn>=i)&&(nn printf(\ b=0; break; } else { i=i*10; j=j*10; sum=sum+1; } } return 0; } 3 检测输入数据中奇数和偶数的个数(4分) 题目内容: 从键盘输入一系列正整数,输入-1表示输入结束(-1本身不是输入的数据)。编写程序判断输入数据中奇数和偶数的个数。如果用户输入的第一个数据就是-1,则程序输出\。否则。用户每输入一个数据,输出该数据是奇数还是偶数,直到用户输入-1为止,分别统计用户输入数据中奇数和偶数的个数。 程序运行结果示例1: Please enter the number: 1↙ 1:odd 5↙ 5:odd 8↙ 8:even 9↙ 9:odd 12↙ 12:even 17↙ 17:odd -1↙ The total number of odd is 4 The total number of even is 2 程序运行结果示例2: Please enter the number: -1↙ over! The total number of odd is 0 The total number of even is 0 输入格式: \ 输出格式: 输入提示信息:\用户输入的第一个数据就是-1,输出格式:\奇数的输出格式:\偶数的输出格式:\ 输入数据中奇数的个数统计:\输入数据中偶数的个数统计:\ 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb #include int a,odd,even; odd=0;even=0; printf(\ a=0; while (a!=-1) { scanf(\ if (a!=-1) { if (a%2==1) { odd++; printf(\ } else { even++; printf(\ } } } if (even+odd==0) { printf(\ } printf(\ printf(\ return 0; } 4 计算球的反弹高度(4分) 题目内容: 一个球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下并反弹......,求它在第5次和第10次落地时,分别共经过了多少米?第5次和第10次反弹分别是多高?要求计算结果保留到小数点后3位。用户从键盘输入想要计算的第n次(n<=15)。 程序运行结果示例1: Input: 5↙ 5 times: 287.500 3.125 程序运行结果示例2: Input: 10↙ 10 times: 299.609 0.098 输入格式: \输出格式: 反弹次数:\ 第n次反弹共经过多少米:\第n次的反弹高度:\输入提示信息:\ 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb #include int main() { double h,sum=0; int n,i; printf(\ scanf(\ h=100; for (i=1;i<=n;i++) { sum+=h; h/=2; sum+=h; }sum-=h; printf(\ printf(\ printf(\ return 0; } 第六周 1 程序改错v2.0(5分) 下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。 1. #include 程序运行结果示例1: Please input score: a↙ Input error! Please input score: -12↙ Input error! Please input score: 230↙ Input error! Please input score: 92↙ grade: A 程序运行结果示例2: Please input score: 88↙ grade: B 程序运行结果示例3: Please input score: 73↙ grade: C 程序运行结果示例4: Please input score: 65↙ grade: D 程序运行结果示例5: Please input score: 27↙ grade: E 输入提示信息:\输入格式: \输出格式: 输入错误时的提示信息:\ 输出格式:\注意:%c前面有一个空格) 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb #include int score=-1; char grade; printf(\ scanf(\ while(score < 0 || score > 100) { getchar(); printf(\ printf(\ scanf(\ } if (score >= 90) grade = 'A'; else if (score >= 80) grade = 'B'; else if (score >= 70) grade = 'C'; else if (score >= 60) grade = 'D'; else grade = 'E'; printf(\ return 0; } 2 编程计算a+aa+aaa+…+aa…a(n个a)的值(4分) 题目内容: 编程计算 a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入。例如,当n=4,a=2,表示计算2+22+222+2222的值。 程序运行结果示例: Input a,n: 2,4↙ sum=2468 输入提示信息:\ 输入格式: \(先输入a,后输入n) 输出格式: \ 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:31kb #include long term=0,sum=0; int a,i,n; printf(\ scanf(\ for(i=1;i<=n;i++) { term=term*10+a; sum =sum+term; } printf(\} 3 搬砖问题(4分) 题目内容: n块砖( 27 程序的运行结果示例1: Input n(27 men=0,women=4,children=32 程序的运行结果示例2: Input n(27 men=3,women=3,children=30 程序的运行结果示例3: Input n(27 men=2,women=14,children=20 men=7,women=7,children=22 men=12,women=0,children=24 输入提示: \ 输入格式: \ 输出格式:\ 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 #include int a; int man, wman, child; printf(\ scanf(\ for (man = 0; man <= 15; man++) { for (wman = 0; wman <= 20; wman++) { child = 36 - wman - man; if (a == child / 2 + 3 * wman + 4 * man && child % 2 == 0) { printf(\ } } } } 4 编程输出某年某月有多少天(考虑到闰年)。(5分) 题目内容: 从键盘输入一个年份和月份,输出该月有多少天(考虑闰年),用switch语句编程。 程序运行结果示例1: Input year,month: 2015,3↙ 31 days 程序运行结果示例2: Input year,month: 2015,4↙ 30 days 程序运行结果示例3: Input year,month: 2016,2↙ 29 days 程序运行结果示例4: Input year,month: 2014,2↙ 28 days 程序运行结果示例5: Input year,month: 2015,13↙ Input error! 输入提示信息:\ 输入格式: \ 输出格式: 输入错误时的提示信息:\ 输出格式: \ \ \ \ 为避免出现格式错误,请直接拷贝粘贴题目中给的格式字符串和提示信息到你的程序中。 时间限制:500ms内存限制:32000kb #include int y,m; printf(\ scanf(\ if (m< 0||m>12) {printf(\ switch (m) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: printf(\ break; case 4: case 6: case 9: case 11: printf(\ break; case 2: if (y0==0) y/=100; if (y%4==0) printf(\ else printf(\ } return 0; } 第七周 1 递归法计算游戏人员的年龄(4分) 题目内容: 有n个人围坐在一起,问第n个人多大年纪,他说比第n-1个人大2岁;问第n-1个人,他说比第n-2个人大2岁,.....,问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。第1个人说自己10岁,问第n个人多大年纪。 递归函数原型:unsigned int ComputeAge(unsigned int n); 提示: 计算年龄的递归公式为: 输入格式: \ 输出格式: \ 输入样例1: 5↙ 输出样例1: The_person's_age_is_18 输入样例2: 10↙ 输出样例2: The_person's_age_is_28 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! (注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。) 时间限制:500ms内存限制:32000kb #include unsigned int ComputeAge(unsigned int n); unsigned int ComputeAge(unsigned int n) { int a; if (n == 1) a = 10; else a = ComputeAge(n - 1) + 2; return a; } int main() { unsigned int n,f; scanf(\ f=ComputeAge(n); printf(\ return 0; } 2.魔术师猜数(4分) 题目内容: 在一种室内互动游戏中,魔术师要每位观众心里想一个三位数abc(a、b、c分别是百位、十位和个位数字),然后魔术师让观众心中记下acb、bac、bca、cab、cba五个数以及这5个数的和值。只要观众说出这个和是多少,则魔术师一定能猜出观众心里想的原数abc是多少。例如,观众甲说他计算的和值是1999,则魔术师立即说出他想的数是443,而观众乙说他计算的和值是1998,则魔术师说:“你算错了!”。请编程模拟这个数字魔术游戏。要求用函数实现,函数原型为: int Magic(int m); 其中形参m代表观众计算的和值。 输入格式:\ 输出格式: 观众计算错误,魔术师给出的结论:\ 观众计算正确,魔术师给出的结论:\ 输入样例1: 1998↙ 输出样例1: The_sum_you_calculated_is_wrong! 输入样例2: 1999↙ 输出样例2: The_number_is_443 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! (注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。) 参考: #include void mainPage()//主界面 { int i; printf(\系统正在加载中,请稍printf(\—__— zzzzzzzzzzz电脑不给力,请稍等一 等......______vvvvvv______\\t\\n\会......—__—zzzzzzzzzzzz\\t\\n\ **\\n\ **\\n\ **\\n\ **\\n\ **\\n\ **\\n\ **\\n\ } int a; int b; int c; for(i=0;i<80;i++) { printf(\Sleep(200); } printf(\—— 终于结束了╮(╯▽╰)╭\\t\\t\\t\\n\system(\system(\ printf(\ *****************************************************************\\n\printf(\ *******************************************************************\\n\ printf(\ ** printf(\ ** printf(\ ** 第五组 printf(\ ** 成员:林可、王丽婕、张婷婷、许春雪、 printf(\ ** 裴月娥、钱鹏辰 printf(\ ** printf(\ ** printf(\ *******************************************************************\\n\printf(\ *****************************************************************\\n\ int sum;//计算的和值 int e;//三位数的值 void main ()//主函数 { } mainPage(); mainmenu(); /*acb+bca+bac+cab+cba+abc=sum-abc 222(a+b+c)=sum-abc 本代码的核心思想 */ void mainmenu()//系统主菜单 { printf(\ @@@@@Menu@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\\n\ printf(\ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\\n\ scanf(\getchar(); fflush(stdin); if(select==1) { } else if(select==2) exitgame(); printf(\ 1 退出\\n\printf(\ 2 进入游戏\\n\printf(\ 3 游戏帮助\\n\ printf(\请输入相应的数字,进入不同的模块: \\n\ int select; while(1) { printf(\ Menu%%%%%%%%%%%%%%%%%%%%%%%%\\n\ } } { } else if(select==3) { } else { } printf(\选择非法,请重新输入进行再次选择\\n\hellp(); playerchoice(); void viewer()//玩家是观众 { g=a+b+c; f=e+(222*g); if (f==sum) { if(sum"2==0) { m=(sum/222)/5; e=222*m; printf(\ printf(\ int sum;//键盘输入的和值 int f; int m; printf(\请输入得到的数:\\n\scanf(\e=222-sum"2; b=(e/10); c=e; int e;//得出的三位数 int g; a=e/100; else } } } else { } e=e+222; a=e/100; b=(e/10); c=e; f=e+(222*g); printf(\ void playerchoice()//选择玩家的身份 { } void hellp() { int select; printf(\输入 1 你是魔术师 \\n\printf(\输入 2 你是观众 \\n\ printf(\请输入相应的数字,进入不同的模块: \\n\scanf(\getchar(); fflush(stdin); if(select==1) { } else if(select==2) { } else { } printf(\选择非法,请重新输入进行再次选择\\n\viewer(); magician(); \\n\ } system(\ printf(\欢 迎 寻 求 帮 助$$$$$$$$$$$$$$$$\\n\printf(\ printf(\游戏规则:输入1,表示退出游戏 @@@\\n\printf(\ 输入2,表示游戏系统设置 @@@\\n\printf(\ 输入3,表示游戏帮助 @@@\\n\printf(\ 输入4,表示游戏开始 @@@\\n\printf(\输入2时,进行下一轮选择:\\n\printf(\ 输入2 你是观众 \\n\printf(\ printf(\游 戏 简 要 说 明!!!!!!!!!!!!!\\n\printf(\ printf(\ 在一种室内互动游戏中,魔术师要每位观众心里想一个3位数abcprintf(\和个位数字),然后魔术师让观众心中记下acb bac bca cab cba 5个数以printf(\只要观众说出这个和值多少,则魔术师一定能猜出观众心里想的原数abcprintf(\ printf(\本游戏玩家自由选择所担任的职业,即魔术师或观众,根据提示完成游戏printf(\结 束 帮 助$$$$$$$$$$$$$$$$$$$$$\\n\ //退出 printf(\ 输入1 你是魔术师 \\n\ (a.b.c分别是百位.十位\\n\及这5个数的和值。\\n\是多少。\\n\ void exitgame() { char select; printf(\你确定退出游戏吗?退出请输入Y或y,继续点任意键\\n\ scanf(\ getchar(); fflush(stdin); if(select=='Y'||select=='y') { } printf(\欢迎再来游戏\\n\ exit(1); } else { } return; void magician()//玩家是魔术师 { } int l,f; srand(time(0)); a=rand()%9+1; b=rand(); c=rand(); e=100*a+10*b+c; //acb+bac+bca+cab+cba=122a+212b+211c=f f=122*a+212*b+221*c; printf(\ printf(\请输入你得到的三位数: \\n\scanf(\if (e==l) else printf(\魔术失败了,下次努力\\n\ printf(\恭喜你,魔术成功了 \\n\ 答案: #include int j=0,ii=i; while (ii){j+=ii;ii/=10;} if (j*222==k+i) return 1; else return 0; } int main() { int i,j,k,sum; scanf(\ k=0; for (i=100;i<=999;i++) if (is(i,sum)) {k=i;break;} if (k==0) printf(\ else printf(\ return 0; } 3 寻找中位数v1.0(4分) 题目内容: 编写一个函数返回三个整数中的中间数。函数原型为: int mid(int a, int b, int c); 函数功能是返回a,b,c三数中大小位于中间的那个数。 输入格式: \ 输出格式:\ 输入样例1: 12 6 18↙ 输出样例1: The_result_is_12 输入样例2: -9 7 -2↙ 输出样例2: The_result_is_-2 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! (注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。) 时间限制:500ms内存限制:32000kb #include int main() { int a, b, c ,sum; scanf(\ sum=mid(a,b,c); printf(\ } int mid(int a,int b,int c) { if ( a >= b ) if ( a >= c ) return (b>=c ? b : c); else return a; else if ( b >= c ) return (a>=c ? a : c); else return b; } 还原算术表达式(4分) 题目内容: 编写程序求以下算式中XYZ的值,其中两数XYZ与YZZ相加的和n(99 程序运行结果示例1: Input n(n<1000): 532↙ X=3,Y=2,Z=1 程序运行结果示例2: Input n(n<1000): 977↙ Invalid 输入格式: \ 输出格式: 输入提示:\Input n(n<1000):\\n\ 输出格式:\ 计算不成功(无解)的输出提示:\ 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 时间限制:500ms内存限制:31kb #include int a; int x = 0; int y = 0; int z = 0; printf(\ scanf(\ for (x = 1; x < 10; x++) { for (y = 0; y < 10; y++) { for (z = 0; z < 10; z++) { if (x * 100 + y * 10 + z + y * 100 + z * 10 + z == a) { printf(\ } else { printf(\ exit(0); } } } } return 0; } #include int x,y,z; for (x=0;x<=9;x++) for (y=0;y<=9;y++) for (z=0;z<=9;z++) if (x*100+y*110+z*12==532) printf(\ return 0; } 第8周 1 计算礼炮声响次数(4分) 题目内容: 在海军节开幕式上,有A、B、C三艘军舰要同时开始鸣放礼炮各21响。已知A舰每隔5秒放1次,B舰每隔6秒放1次,C舰每隔7秒放1次。假设各炮手对时间的掌握非常准确,请编程计算观众总共可以听到几次礼炮声。 输入格式:无 输出格式:\n=%d\ 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 时间限制:500ms内存限制:32000kb #include int n = 0, t; for (t = 0; t <= 20 * 7; t++) { if (t % 5 == 0 && t <= 20 * 5) { n++; continue; } if (t % 6 == 0 && t <= 20 * 6) { n++; continue; } if (t % 7 == 0) { n++; } } printf(\} 2 兔子生崽问题(4分) 题目内容: 假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,n(n<=12)月以后可有多少对兔子(即当年第n月份总计有多少对兔子,含成兔和小兔)?请编程求解该问题,n的值要求从键盘输入。 参考答案:依题意,兔子的繁殖情况如图所示。图中实线表示成兔仍是成兔或者小兔长成成兔;虚线表示成兔生小兔。观察分析此图可发现如下规律: (1)每月小兔对数 = 上个月成兔对数。 (2)每月成兔对数 = 上个月成兔对数 + 上个月小兔对数。 综合(1)和(2)有:每月成兔对数 = 前两个月成兔对数之和。 用fn(n=1,2,…)表示第n个月成兔对数,于是可将上述规律表示为如下递推公式: 程序运行示例: Input n(n<=12): 10↙ 1 2 3 5 8 13 21 34 55 89 Total=89 输入格式:\输出格式: 输入提示:\每个月兔子对数的输出格式: \ 第12个月的兔子总数的输出格式: \ 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 时间限制:500ms内存限制:32000kb #include { int n; int i,a[13]; a[1]=1;a[0]=1; printf(\ scanf(\ for (i=2;i<=n;i++) a[i]=a[i-1]+a[i-2]; for (i=1;i<=n;i++) printf(\ printf(\ return 0; } 3 抓交通肇事犯(4分) 题目内容: 一辆卡车违犯交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。现在请根据以上线索帮助警方找出车号以便尽快破案。 [提示]:假设这个4位数的前两位数字都是i,后两位数字都是j,则这个可能的4位数 k = 1000*i + 100*i + 10*j + j 式中,i和j都在0~9变化。此外,还应使k=m*m,m是整数。由于k是一个4位数,所以m值不可能小于31。 输入格式: 无 输出格式:\k=%d,m=%d\\n\ 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 时间限制:500ms内存限制:32000kb #include int i,m,ans; for (m=31;m<=100;m++) { ans=m*m; if (((ans/100)==0)&&((ans0)==0)) printf(\ } return 0; } 4 检验并打印幻方矩阵。(4分) 题目内容: 幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个5×5的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。 输入格式: \输出格式: 如果是幻方矩阵,输出提示信息: \ 矩阵元素的输出: \(换行使用\) 如果不是幻方矩阵,输出提示信息: \ 输入样例1: 17_24_1_8_15 23_5_7_14_16 4_6_13_20_22 10_12_19_21_3 11_18_25_2_9 (输人样例中“_”代表空格) 输出样例1: It is a magic square! **17**24***1**8**15 **23***5***7**14**16 ***4***6**13**20**22 **10**12**19**21***3 **11**18**25***2***9 (输出样例中“*”代表空格) 输入样例2: 1_0_1_6_1 3_1_1_1_1 1_1_1_1_2 1_1_1_1_1 9_1_7_1_1 (输人样例中“_”代表空格) 输出样例2: It is not a magic square! 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! (输人样例中“_”代表空格,输出样例中“*”代表空格) 时间限制:500ms内存限制:32000kb #include int a[6][6]; int i,j; for (i=1;i<=5;i++) for (j=1;j<=5;j++) scanf(\ for (i=1;i<=5;i++) { a[i][0]=0; for (j=1;j<=5;j++) a[i][0]+=a[i][j]; if (a[i][0]!=a[1][0]) {printf(\ } for (i=1;i<=5;i++) { a[0][i]=0; for (j=1;j<=5;j++) a[0][i]+=a[j][i]; if (a[0][i]!=a[0][1]) {printf(\ } if (a[1][0]!=a[0][1]) {printf(\ a[0][0]=0; for (i=1;i<=5;i++) a[0][0]+=a[i][i]; if (a[0][0]!=a[1][0]) {printf(\ a[0][0]=0; for (i=1;i<=5;i++) a[0][0]+=a[i][6-i]; if (a[0][0]!=a[1][0]) {printf(\ printf(\ for (i=1;i<=5;i++) { for (j=1;j<=5;j++) printf(\ printf(\ } return 0; } 第九周 1 ISBN识别码判断(4分) 题目内容: 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字、1位识别码和3位分隔符,其规定格式如“x-xxx-xxxxx-x”,其中符号“-”就是分隔符(键盘上的减号),最后一位是识别码,例如0-670-82162-4就是一个标准的ISBN码。ISBN码的首位数字表示书籍的出版语言,例如0代表英语;第一个分隔符“-”之后的三位数字代表出版社,例如670代表维京出版社;第二个分隔符后的五位数字代表该书在该出版社的编号;最后一位为识别码。 识别码的计算方法如下: 首位数字乘以1加上次位数字乘以2……以此类推,用所得的结果mod 11,所得的余数即为识别码,如果余数为10,则识别码为大写字母X。例如ISBN号码0-670-82162-4中的识别码4是这样得到的:对067082162这9个数字,从左至右,分别乘以1,2,...,9,再求和,即0×1+6×2+……+2×9=158,然后取158 mod 11的结果4作为识别码。 你的任务是编写程序判断输入的ISBN号码中识别码是否正确,如果正确,则仅输出“Right”;如果错误,则输出你认为是正确的ISBN号码。 程序运行结果示例1: 0-123-41562-4↙ Right 程序运行结果示例2: 0-123-41562-7↙ 0-123-41562-4 输入格式: 用gets()输入字符串 输入只有一行,是一个字符序列,表示一本书的ISBN号码(保证输入符合ISBN的格式要求)。 输出格式: 输入的ISBN号码的识别码正确,输出信息: \ 输入的ISBN号码的识别码错误,按照规定的格式,输出正确的ISBN号码(包括分隔符“-”),输出格式:\ 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 时间限制:500ms内存限制:32000kb #include #include char isbn[13];//13位isbn码 int i; int j = 1; int sum = 0; gets(isbn); for (i = 0; i < 11; i++) if ((i != 1) && (i != 5)) sum += ((isbn[i] - '0') * (j++)); if (sum % 11 == (isbn[12] - '0')) printf(\ else { isbn[12] = (sum % 11) + '0'; printf(\ } return 0; } 2 摘苹果(4分) 题目内容: 陶陶家的院子里有一棵苹果树,每到秋天树上就会结出10个苹果。苹果成熟的时候,陶陶就会跑去摘苹果。陶陶有个30厘米高的板凳,当她不能直接用手摘到苹果的时候,就会踩到板凳上再试试。现在已知10个苹果到地面的高度,以及陶陶把手伸直的时候能够达到的最大高度,请帮陶陶算一下她能够摘到的苹果的数目。假设她碰到苹果,苹果就会掉下来。 程序运行结果示例1: 100 110 130 200 140 150 156 187 197 149↙ 110↙ 4 程序运行结果示例2: 90 210 102 153 147 110 130 182 88 113↙ 100↙ 6 输入格式: \ 输入包括两行数据: 第1行包含10个100到210之间的整数(包括100和210,以厘米为单位),分别表示10个苹果到地面的高度。两个相邻的整数之间用一个空格隔开。 第2行只包括一个100到120之间的整数(包含100和120,以厘米为单位),表示陶陶把手伸直的时候能够达到的最大高度。 输出格式: \ 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 时间限制:500ms内存限制:32000kb #include int a,n[11],i,c,x=0; for(i=1;i<=10;i++) { scanf(\ } scanf(\ c=c+30; for(i=1;i<=10;i++) { if(n[i]<=c)x++; } printf(\ return 0; } 3 求最大素数(4分) 题目内容: 求n(n<=500)以内的10个最大素数及其和,并分别输出这10个最大素数及其和。n的值要求从键盘输入。 要求10个素数按从大到小的顺序输出。 程序运行结果示例: Input n(n<=500): 270↙ 269 263 257 251 241 239 233 229 227 223 sum=2432 输入提示: \ 输入格式: \ 输出格式: 10个最大素数的输出格式:\ 总和的输出格式:\ 时间限制:500ms内存限制:32000kb #include { int i=1; while(ss[i]*ss[i]<=k) { if (k%ss[i]==0) return 0; i++; } return 1; } int main() { int a; int n=2,i,sum=0; ss[1]=2;ss[2]=3; printf(\ scanf(\ for (i=4;i<=a;i++) if (is(i)) ss[++n]=i; for (i=n;i>=n-9;i--) { printf(\ sum+=ss[i]; } printf(\ return 0; } 4 字符串逆序(4分) 题目内容: 用字符数组作函数参数编程,利用一个数组实现字符串(允许输入带空格的字符串)的逆序存放。要求如下: (1)在主函数中从键盘输入字符串,字符串的最大长度为80个字符。 调用Inverse()函数将字符串逆序存放,然后在主函数中输出逆序后的字符串。 (2)在子函数Inverse()中实现字符串的逆序存放。函数原型为: void Inverse(char str[]); 程序运行结果示例1: Input a string: abcde↙ Inversed results: edcba 程序运行结果示例2: Input a string: hello↙ Inversed results: olleh 输入格式: 用gets()输入字符串 输出格式: 输入提示信息:\ 输出提示信息:\\\n\用puts()输出字符串 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 时间限制:500ms内存限制:32000kb #include int i;char c; for (i=0;i<=len/2;i++) { c=*(s+i); *(s+i)=*(s+len-i); *(s+len-i)=c; } } int main() { char s[80],len=0; printf(\ gets(s); while (s[len]!='\\0') len++; len--; dh(s,len); printf(\ puts(s); return 0; } 第10周. 1 水手分椰子(4分) 题目内容: n(n<=5)个水手在岛上发现一堆椰子,先由第1个水手把椰子分为等量的5堆,还剩下1个给了猴子,自己藏起1堆。然后,第2个水手把剩下的4堆混合后重新分为等量的5堆,还剩下1个给了猴子,自己藏起1堆。以后第3、4个水手依次按此方法处理。最后,第5个水手把剩下的椰子分为等量的5堆后,同样剩下1个给了猴子。请用迭代法编程计算并输出原来这堆椰子至少有多少个,n的值要求从键盘输入。 程序运行结果示例: Input n(n<=5): 5↙ y=3121 输入格式: \输出格式: 输入提示: \输出格式: \ 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 时间限制:500ms内存限制:32000kb #include int i; for (i=1;i<=5;i++) { if ((k-1)%5!=0||k< 5) return 0; k=(k-1)/5*4; } return 1; } int main() { int ans=1; while (!can(ans)) ans++; printf(\ return 0; } 2 找最值(4分) 题目内容: 从键盘任意输入10个整数,用指针变量作函数参数编程计算最大值和最小值,并返回它们所在数组中的位置。函数原型如下所示: int FindMax(int num[], int n, int *pMaxPos);//函数返回最大值,pMaxPos返回最大值所在的下标 int FindMin(int num[], int n, int *pMinPos);//函数返回最小值,pMaxPos返回最小值所在的下标 程序运行结果示例: Input 10 numbers: -1 2 3 45 92 8 9 12 7 8↙ Max=92,Position=4,Min=-1,Position=0 输入格式: \ 输出格式: 提示信息:\ 输出结果:\ 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 时间限制:500ms内存限制:32000kb #include int Findmax(int *a,int *p) { int i; *p=0; for (i=1;i< 10;i++) if (*(a+*p)<*(a+i)) *p=i; return 0; } int Findmin(int *a,int *p) { int i; *p=0; for (i=1;i< 10;i++) if (*(a+*p)>*(a+i)) *p=i; return 0; } int main() { int a[10],maxp,minp,i; printf(\ for (i=0;i< 10;i++) scanf(\ Findmax(a,&maxp); Findmin(a,&minp); printf(\ return 0; } 3 星期查找(4分) 题目内容: 任意输入英文的星期几,通过查找如图所示的星期表,输出其对应的数字,若查到表尾,仍未找到,则输 出错误提示信息。 提示:用一个二维字符数组weekDay来存放如图所示的星期表的内容(字符串)。输入待查找的字符串,然后在星期表中顺序查找与输入字符串相匹配的字符串。找到的字符串在星期表数组中的第一维下标(行号)即为题目所求。 程序运行结果示例1: Please enter a string: Friday↙ Friday is 5 程序运行结果示例2: Please enter a string: Fruday↙ Not found! 输入格式: 字符串输入采用gets()函数 输出格式: 输入提示信息:\:\\n\ 找到了,输出:\ 没找到,输出:\ 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! 时间限制:500ms内存限制:32000kb
正在阅读:
哈尔滨工业大学C语言2016年MOOC在线测试答案01-28
如何理解企业文化冲突的含义08-25
军训教学法 - 图文10-09
慈溪梅林小区第二批人才公寓购房对象择房时间安排 - 图文10-31
游标卡尺和千分尺使用及注意事项 - 图文09-24
(升级版)高中数学公式及知识点速记05-26
实用类文本阅读教学反思11-12
变压器防雷措施和接地要求03-15
浅析余热发电与熟料生产系统的协调操作10-20
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 哈尔滨工业大学
- 在线测试
- 答案
- 语言
- 2016
- MOOC
- 学雷锋志愿服务工作制度
- 12.供电设备评级管理标准
- 苏教版小学奥数举一反三(四年级)整理
- 江苏省盐城市2018届高三历史上学期第一次学情调研试题2017103102107
- 河南安阳师范学院数字化校园信息化建设方案 - 图文
- 板球培训
- MySQL数据库考试试题及答案
- 叉车安全管理制度及目录
- 党支部创先争优活动实施方案
- 承台系梁首件工程施工方案
- Oracle分析函数与分组关键字的用法
- 俗世奇人检测卷
- 定型机涂料套色 艳蓝 妃红 还原靛蓝生产情况及成本计算
- 磁共振的基本原理 - 图文
- 2016年商业补充医疗保险索赔需知-试行
- 37205-00 - SQL Server 2005课后实训参考答案
- 箱涵首件开工报告
- 河北省石家庄2018届高三教学质量检测(二)理综化学
- 奥鹏南开16春学期《中国近代人物研究(尔雅)》在线作业
- 《现代管理学》2018年10月自考复习资料和参考答案