哈工大C语言学习知识实验题
哈尔滨工业大学C语言MOOC在线测试周答案

本答案仅供参考第3周1计算两个数(de)平方和(3分)题目内容:从键盘读入两个实数,编程计算并输出它们(de)平方和,要求使用数学函数pow(x,y)计算平方值,输出结果保留2位小数.提示:使用数学函数需要在程序中加入编译预处理命令 include <>以下为程序(de)运行结果示例:please input x and y:,↙result=输入格式: "%f,%f"输出格式:输入提示信息:"Please input x and y:\n"输出格式:"Result=%.2f\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <> <>int main(){float x,y,S,D;printf("Please input x and y:\n");scanf("%f,%f",&x,&y);S = pow(x,2);D = pow(y,2);printf("Result=%.2f\n",S+D);return 0;}2逆序数(de)拆分计算(3分)题目内容:从键盘输入一个4位数(de)整数,编程计算并输出它(de)逆序数(忽略整数前(de)正负号).例如,输入-1234,忽略负号,由1234分离出其千位1、百位2、十位3、个位4,然后计算41000+3100+210+1 = 4321,并输出4321.再将得到(de)逆序数4321拆分为两个2位数(de)正整数43和21,计算并输出拆分后(de)两个数(de)平方和(de)结果.以下是程序(de)运行结果示例:Input x:-1234↙y=4321a=43,b=21result=2290输入格式: "%d"输出格式:输入提示信息:"Input x:\n"逆序数输出格式:"y=%d\n"逆序数拆分后(de)输出格式:"a=%d,b=%d\n"平方和(de)输出格式:"result=%d\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <> <>main(){int x,b0,b1,b2,b3,y,a,b,c;printf("Input x:\n");scanf("%d",&x);x = (int)fabs(x); /取x绝对值/b3 = x/1000; /取x千位/b2 = (x-b31000)/100; /取x百位/b1 = (x-b31000-b2100)/10; /取x十位/b0 = x%10; /取x个位/y = b3+b210+b1100+b01000;printf("y=%d\n",y);a = b010+b1;b = b210+b3;c = (aa)+(bb);printf("a=%d,b=%d\n",a,b);printf("result=%d\n",c);return 0;}3拆分英文名(3分)题目内容:从键盘输入某同学(de)英文名(小写输入,假设学生(de)英文名只包含3个字母.如: tom),编写程序在屏幕上输出该同学(de)英文名,且首字母大写(如: Tom).同时输出组成该英文名(de)所有英文字符在26个英文字母中(de)序号.以下为程序(de)运行结果示例:Input your English name:tom↙Tomt:20o:15m:13输入格式: "%c%c%c"输出格式:输入提示信息:"Input your English name:\n"首字母大写(de)英文姓名(de)输出格式:"%c%c%c\n"姓名中每个字母在26个英文字母中(de)序号(de)输出格式:"%c:%d\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <> <>int main(){char x,y,z,A;printf("Input your English name:\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分)题目内容:从键盘输入某人(de)身高(以厘米为单位,如174cm)和体重(以公斤为单位,如70公斤),将身高(以米为单位,如1.74m)和体重(以斤为单位,如140斤)输出在屏幕上,并按照以下公式计算并输出体指数,要求结果保留到小数点后2位.假设体重为w公斤,身高为h米,则体指数(de)计算公式为:以下是程序(de)运行结果示例:Input weight, height:70,174↙weight=140height=t=输入格式: "%d,%d"输出格式:输入提示信息:"Input weight, height:\n" (注意:在height和逗号之间有一个空格)体重输出格式:"weight=%d\n"身高输出格式:"height=%.2f\n"体指数输出格式:"t=%.2f\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <> <>int main(){float A,b;int x,y;printf("Input weight, height:\n");scanf("%d,%d",&x,&y);printf("weight=%d\n",x2);A=(float)y/100;printf("height=%.2f\n",A);b=(float)x/(AA);printf("t=%.2f\n",b);}第4周1数位拆分(4分)题目内容:从键盘上输入一个4位数(de)整数n,编写程序将其拆分为两个2位数(de)整数a和b,计算并输出拆分后(de)两个数(de)加、减、乘、除和求余运算(de)结果.例如n=-4321,设拆分后(de)两个整数为a,b,则a=-43,b=-21.除法运算结果要求精确到小数点后2位.求余和除法运算需要考虑除数为0(de)情况,即如果拆分后b=0,则输出提示信息"The second operater is zero"程序(de)运行结果示例1:Please input n:1200↙12,0sum=12,sub=12,multi=0The second operater is zero程序(de)运行结果示例2:Please input n:-2304↙-23,-4sum=-27,sub=-19,multi=92dev=,mod=-3输入格式: "%d"输出格式:输入提示信息:"Please input n:\n"拆分后(de)两个整数(de)输出格式:"%d,%d\n"加法、减法、乘法(de)输出格式:"sum=%d,sub=%d,multi=%d\n"除法和求余(de)输出格式:"dev=%.2f,mod=%d\n"除数为0(de)提示信息:"The second operater is zero\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <> <>main(){float c;int x,b0,b1,b2,b3,a,b,d;printf("Please input n:\n");scanf("%d",&x);b3 = x/1000; /取x千位/b2 = (x-b31000)/100; /取x百位/b1 = (x-b31000-b2100)/10; /取x十位/b0 = x%10; /取x个位/a=b310+b2; /拆分输入(de)整数为两段/b=b110+b0;printf("%d,%d\n",a,b);printf("sum=%d,sub=%d,multi=%d\n",a+b,a-b,ab); /输出两段数(de)加,减,乘/if(0==b){printf("The second operater is zero\n");}else{c=(float)a/b;d=a%b;printf("dev=%.2f,mod=%d\n",c,d);}return 0;}2快递费用计算(4分)题目内容:上海市(de)某快递公司根据投送目(de)地距离公司(de)远近,将全国划分成5个区域:快递费按邮件重量计算,由起重费用、续重费用两部分构成:(1)起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重(de)重量,按公斤(不足1公斤,按1公斤计算)收取续重费;(2)同城起重资费10元,续重3元/公斤;(3)寄往1区(江浙两省)(de)邮件,起重资费10元,续重4元;(4)寄往其他地区(de)邮件,起重资费统一为15元.而续重部分,不同区域价格不同:2区(de)续重5元/公斤,3区(de)续重元/公斤,4区(de)续重10元/公斤.编写程序,从键盘输入邮件(de)目(de)区域编码和重量,计算并输出运费,计算结果保留2位小数.提示:续重部分不足一公斤,按1公斤计算.因此,如包裹重量2.3公斤:1公斤算起重,剩余(de)1.3公斤算续重,不足1公斤按1公斤计算,1.3公斤折合续重为2公斤.如果重量应大于0、区域编号不能超出0-4(de)范围.程序运行结果示例1:4,↙Price:程序运行结果示例2:5,↙Error in AreaPrice:输入格式:用逗号分隔(de)两个数字,第一个表示区域、第二个是重量:"%d,%f"输出格式:价格(de)输出格式:"Price: %\n"区域错误(de)提示信息:"Error in Area\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <>include <>define eps 1E-5main(){float b,c,d;int a;scanf("%d,%f",&a,&b);switch(a){case 0:if (b<=1+eps){c=;}else{d=ceil;c=d3+;}printf("Price: %5.2f\n",c); break;case 1:if (b<=1+eps){c=;}else{d=ceil;c=d4+;}printf("Price: %5.2f\n",c); break;case 2:if (b<=1+eps){c=;}else{d=ceil;c=d5+;}printf("Price: %5.2f\n",c); break;case 3:if (b<=1+eps){c=;}else{d=ceil;c=d+15;}printf("Price: %5.2f\n",c); break;case 4:if (b<=1+eps){c=;}else{d=ceil;c=d10+;}printf("Price: %5.2f\n",c);break;default:printf("Error in Area\n");printf("Price: ");}return 0;}3数据区间判断(6分)题目内容:从键盘输入一个int型(de)正整数n(已知:0<n<10000),编写程序判断n落在哪个区间.如果用户输入(de)数据不在指定(de)范围里,程序输出"error".例如,输入265,则该数属于区间 100-999.程序运行结果示例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输入格式: "%d"输出格式:输入提示信息:"Please enter the number:\n"输出(de)区间判断:"%d: 1000-9999\n""%d: 100-999\n""%d: 10-99\n""%d: 0-9\n"输入错误提示信息:"error\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <>include <>int main(){int x,b0,b1,b2,b3,y,a,b,c;printf("Please enter the number:\n");scanf("%d",&x);if (x<=0||x>=10000){printf("error\n");}else{b3 = x/1000; /取x千位/b2 = (x-b31000)/100; /取x百位/b1 = (x-b31000-b2100)/10; /取x十位/ b0 = x%10; /取x个位/if(b3=0){printf("%d: 1000-9999\n",x);}else if(b3==0&&b2=0){printf("%d: 100-999\n",x);}else if(b3==0&&b2==0&&b1=0){printf("%d: 10-99\n",x);}else{printf("%d: 0-9\n",x);}}return 0;}4计算一元二次方程(de)根(4分)题目内容:根据下面给出(de)求根公式,计算并输出一元二次方程(de)两个实根,要求精确到小数点后4位.其中a,b,c(de)值由用户从键盘输入.如果用户输入(de)系数不满足求实根(de)要求,输出错误提示"error".程序运行结果示例1:Please enter the coefficients a,b,c:1,2,1↙x1=, x2=程序运行结果示例2:Please enter the coefficients a,b,c:2,6,1↙x1=, x2=程序运行结果示例3:Please enter the coefficients a,b,c:2,1,6↙error输入格式: "%f,%f,%f"输出格式:输入提示信息:"Please enter the coefficients a,b,c:\n"输出格式:"x1=%7.4f, x2=%\n"输入错误提示信息:"error\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <>include <>int main(){float a,b,c,disc,p,q;printf("Please enter the coefficients a,b,c:\n");scanf("%f,%f,%f",&a,&b,&c);disc=bb-4ac;if(disc<0){printf("error\n");}else{p=-b/(2a);q=sqrt(disc)/(2a);printf("x1=%7.4f, x2=%7.4f\n",q+p,p-q);}return 0;}第五周16位密码输入检测(4分)题目内容:从键盘输入6位仅由数字0~9组成(de)密码.用户每输入一个密码并按回车键后,程序给出判断:如果是数字,则原样输出该数字,并提示用户目前已经输入了几位密码,同时继续输入下一位密码;否则,程序提示"error",并让用户继续输入下一位密码.直到用户输入(de)密码全部是数字为止.以下为程序(de)运行结果示例:Input your password:1↙1, you have enter 1-bits number6↙6, you have enter 2-bits numbera↙errord↙error4↙4, you have enter 3-bits number6↙6, you have enter 4-bits number8↙8, you have enter 5-bits number2↙2, you have enter 6-bits number输入格式:数字字符输入格式:"%c"输出格式:输入提示信息:"Input your password:\n"如果输入(de)是数字,输出格式为:"%c, you have enter %d-bits number\n"如果输入(de)不是数字,输出提示信息:"error\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <>int main(){int i;char c;printf("Input your password:\n");i=0;while (i<6){scanf("%c%c",&c);if ((c>=48)&&(c<=57)){i=i+1;printf("%c, you have enter %d-bits number\n",c,i); }else{printf("error\n");}}return 0;}2判断一个整型数据有几位(4分)题目内容:从键盘输入一个整型数据(int型),编写程序判断该整数共有几位.例如,从键盘输入整数16644,该整数共有5位.程序运行结果示例1:Please enter the number:21125↙21125: 5 bits程序运行结果示例2:Please enter the number:-12234↙-12234: 5 bits输入格式: "%d"输出格式:输入提示信息:"Please enter the number:\n"判断该整数共有几位: "%d: %d bits\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <>include <>int main(){int n,nn,b,i,j,sum;printf("Please enter the number:\n");scanf("%d",&n);nn=fabs(n);b=1;sum=1;i=1;j=10;while (b=1){if ((nn>=i)&&(nn<j)){printf("%d: %d bits\n",n,sum);b=0;break;}else{i=i10;j=j10;sum=sum+1;}}return 0;}3检测输入数据中奇数和偶数(de)个数(4分)题目内容:从键盘输入一系列正整数,输入-1表示输入结束(-1本身不是输入(de)数据).编写程序判断输入数据中奇数和偶数(de)个数.如果用户输入(de)第一个数据就是-1,则程序输出"over".否则.用户每输入一个数据,输出该数据是奇数还是偶数,直到用户输入-1为止,分别统计用户输入数据中奇数和偶数(de)个数.程序运行结果示例1:Please enter the number:1↙1:odd5↙5:odd8↙8:even9↙9:odd12↙12:even17↙17:odd-1↙The total number of odd is 4The total number of even is 2程序运行结果示例2:Please enter the number:-1↙overThe total number of odd is 0The total number of even is 0输入格式: "%d"输出格式:输入提示信息:"Please enter the number:\n"用户输入(de)第一个数据就是-1,输出格式:"over\n"奇数(de)输出格式:"%d:odd\n"偶数(de)输出格式:"%d:even\n"输入数据中奇数(de)个数统计:"The total number of odd is %d\n"输入数据中偶数(de)个数统计:"The total number of even is %d\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <>int main(){int a,odd,even;odd=0;even=0;printf("Please enter the number:\n");a=0;while (a=-1){scanf("%d",&a);if (a=-1){if (a%2==1){odd++;printf("%d:odd\n",a); }else {even++;printf("%d:even\n",a); }}}if (even+odd==0){printf("over\n");}printf("The total number of odd is %d\n",odd);printf("The total number of even is %d\n",even);return 0;}4计算球(de)反弹高度(4分)题目内容:一个球从100米高度自由落下,每次落地后反跳回原高度(de)一半,再落下并反弹......,求它在第5次和第10次落地时,分别共经过了多少米第5次和第10次反弹分别是多高要求计算结果保留到小数点后3位.用户从键盘输入想要计算(de)第n次(n<=15).程序运行结果示例1:Input:5↙5 times:程序运行结果示例2:Input:10↙10 times:输入格式: "%d"输出格式:反弹次数:"%d times:\n"第n次反弹共经过多少米:"%.3f\n"第n次(de)反弹高度:"%.3f\n"输入提示信息:"Input:\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <>int main(){double h,sum=0;int n,i;printf("Input:\n");scanf("%d",&n);h=100;for (i=1;i<=n;i++){sum+=h;h/=2;sum+=h;}sum-=h;printf("%d times:\n",n);printf("%.3f\n",sum);printf("%.3f\n",h);return 0;}第六周1程序改错(5分)下面代码(de)功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入(de)是非法字符或者不在合理区间内(de)数据(例如输入(de)是a,或者102,或-45等),则程序输出 Input error,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出.目前程序存在错误,请将其修改正确.并按照下面给出(de)运行示例检查程序.1.include<>2. int main()3. {4. int score;5. char grade;6. printf("Please input score:");7. scanf("%d", &score);8. if (score < 0 || 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. grade = 'C';16. else if (score >= 60)17. grade = 'D';18. else19. grade = 'E';20. printf("grade:%c\n", grade);21. return 0;22.}程序运行结果示例1:Please input score:a↙Input errorPlease input score: -12↙Input errorPlease input score: 230↙Input errorPlease 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输入提示信息:"Please input score:\n"输入格式: "%d"输出格式:输入错误时(de)提示信息:"Input error\n"输出格式:"grade: %c\n" (注意:%c前面有一个空格)为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude<>int main(){int score=-1;char grade;printf("Please input score:\n");scanf("%d", &score);while(score < 0 || score > 100){getchar();printf("Input error\n");printf("Please input score:\n"); scanf("%d", &score);}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("grade: %c\n", grade);return 0;2编程计算a+aa+aaa+…+aa…a(n个a)(de)值(4分)题目内容:编程计算a+aa+aaa+…+aa…a(n个a)(de)值,n和a(de)值由键盘输入.例如,当n=4,a=2,表示计算2+22+222+2222(de)值.程序运行结果示例:Input a,n:2,4↙sum=2468输入提示信息:"Input a,n:\n"输入格式: "%d,%d"(先输入a,后输入n)输出格式:"sum=%ld\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:31kbinclude <>main()long term=0,sum=0;int a,i,n;printf("Input a,n:\n");scanf("%d,%d",&a,&n);for(i=1;i<=n;i++){term=term10+a;sum =sum+term;}printf("sum=%ld\n",sum);}3搬砖问题(4分)题目内容:n块砖( 27<n<=77 ),36人搬,男搬4,女搬3,两个小孩抬一块砖,要求一次搬完,问男人、女人和小孩各需多少人请用穷举法编程求解,n(de)值要求从键盘输入.输出结果按照男人数量升序给出(见下面示例3).程序(de)运行结果示例1:Input n(27<n<=77):28↙men=0,women=4,children=32程序(de)运行结果示例2:Input n(27<n<=77):36↙men=3,women=3,children=30程序(de)运行结果示例3:Input n(27<n<=77):60↙men=2,women=14,children=20men=7,women=7,children=22men=12,women=0,children=24输入提示:"Input n(27<n<=77):\n"输入格式: "%d"输出格式:"men=%d,women=%d,children=%d\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.include<>int main(){int a;int man, wman, child;printf("Input n(27<n<=77):\n");scanf("%d",&a);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("men=%d,women=%d,children=%d\n", man, wman, child);}}}}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输入提示信息:"Input year,month:\n"输入格式: "%d,%d"输出格式:输入错误时(de)提示信息:"Input error\n"输出格式:"31 days\n""30 days\n""29 days\n""28 days\n"为避免出现格式错误,请直接拷贝粘贴题目中给(de)格式字符串和提示信息到你(de)程序中.时间限制:500ms内存限制:32000kbinclude <>int main( ){int y,m;printf("Input year,month:\n");scanf("%d,%d",&y,&m);if (m< 0||m>12) {printf("Input error\n");return 0;} switch (m){case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf("31 days\n");break;case 4:case 6:case 9:case 11:printf("30 days\n");break;case 2:if (y%100==0) y/=100;if (y%4==0) printf("29 days\n");else printf("28 days\n");}return 0;}第七周1递归法计算游戏人员(de)年龄(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);提示:计算年龄(de)递归公式为:输入格式: "%u"输出格式:"The person's age is %u\n"输入样例1:5↙输出样例1:The_person's_age_is_18输入样例2:10↙输出样例2:The_person's_age_is_28注意:为避免出现格式错误,请直接拷贝粘贴上面给出(de)输入、输出提示信息和格式控制字符串(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格.)时间限制:500ms内存限制:32000kbinclude<>include<>unsigned 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",&n);f=ComputeAge(n);printf("The person's age is %u\n",f);return 0;}2.魔术师猜数(4分)题目内容:在一种室内互动游戏中,魔术师要每位观众心里想一个三位数abc(a、b、c分别是百位、十位和个位数字),然后魔术师让观众心中记下acb、bac、bca、cab、cba五个数以及这5个数(de)和值.只要观众说出这个和是多少,则魔术师一定能猜出观众心里想(de)原数abc是多少.例如,观众甲说他计算(de)和值是1999,则魔术师立即说出他想(de)数是443,而观众乙说他计算(de)和值是1998,则魔术师说:“你算错了”.请编程模拟这个数字魔术游戏.要求用函数实现,函数原型为:int Magic(int m);其中形参m代表观众计算(de)和值.输入格式:"%d"输出格式:观众计算错误,魔术师给出(de)结论:"The sum you calculated is wrong\n"观众计算正确,魔术师给出(de)结论:"The number is %d\n"输入样例1:1998↙输出样例1:The_sum_you_calculated_is_wrong输入样例2:1999↙输出样例2:The_number_is_443注意:为避免出现格式错误,请直接拷贝粘贴上面给出(de)输入、输出提示信息和格式控制字符串(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格.)参考:include<>include<>include<>include<>include<>....______vvvvvv______\t\n");printf("\t—__— zzzzzzzzzzz电脑不给力,请稍等一会......—__—zzzzzzzzzzzz\t\n");for(i=0;i<80;i++){printf("%%");Sleep(200);} printf("\t\t\t——终于结束了╮(╯▽╰)╭\t\t\t\n");system("CLS");system("color 8B");printf(" \n");。
哈工大 C语言实验报告(答案)

实验1简单C 程序设计2、将下列由程序流程图描述的算法,转换为C 源代码并填写到图1-3b 框中,然后输入计算机并运行后并分析其运行结果(本小题2分)。
图1-3a 程序流程图图1-3bC 源程序3、项目编程(本小题12分)(1)请向计算机输入a,b,c 三个值,经过程序处理后,要求输出其中最大的一个。
/*C 语言源代码*/main(){}项目要求:①画出程序流程图;②根据流程图编写程序图1-4a 程序流程图图1-4b C 源程序(2)请向计算机输入a,b,c 三个值,经过程序处理后,要求按值从小到大输出。
项目要求:①画出程序流程图;②根据流程图编写程序/*输出最大值*/main(){}项目提示:①可采用if结构;②a,b,c由scanf函数输入程序流程图/*将a,b,c三个值由小到大输出*/main(){}1-5a程序流程图图1-5b C源程序(3)编程实现打印下列由字母组成的树形。
说明:本项目编程的知识点是让学生对双重循环语句结构的理解,清楚双重循环的特点(即当外循环变量中的值变化一次时,则内循环变量中的值要变化若干次)。
提示:可用外循环变量代表行数;内循环变量代表需打印字符的个数。
难点:①字符个数是按奇数变化递增②左右边界字符打印的位置图1-6a字母A-G组成的树形/*打印图形*/main(){}图1-6b C源程序(4)设计报选体育科目统计程序设某学校在新生入学时,需报选体育选修科目。
体育科目包括:篮球、排球、体操、兵乓球和网球。
请为某班级(30人)统计报选各体育科目人数。
项目要求:①画出程序流程图;②根据流程图编写源程序项目提示:可采用switch与for结构程序流程图C语言源代码main(){}图1-7a程序流程图图1-7b C 源程序实验2数组与排序五、项目编程(本题12分,每小题4分)1、将下列一组数读入到a 数组中,然后从a数组中找出其中最大的元素并与第一个数互换;然后从a数组中找出最小的元素并与最后一个数互换,而其余元素的位置不变。
哈工大c语言试题

哈工大 2008 年 秋 季学期C 语言 试题考成绩和卷面笔试成绩各自所占比例折合后累加计算。
一、填空题(6分,每题1分)1.设变量定义为“int x,y[10];”,则“_________”与“*(y+x)”等效。
2.如果在程序中使用了strcmp 库函数,则程序前面要写#include "________"。
3.1.37×1042在C 语言中写作________4.把C 语言源程序翻译成机器语言目标程序的过程称为“__________”,翻译得到的目标程序扩展名为“__________”。
5.已知x 是double 型变量,“scanf("________",&x);”用于从键盘读取数据存放到x 中。
6. 已知:“#define M(x,y) x*y ”,则表达式“M(5+4,3-1)”的值为________。
二、单项选择题:(10分,每题2分)1.判断字符串s1与字符串s2相等,应当使用: 。
A) if (s1 = s2)B) if (strcmp(s1, s2))C) if (!strcmp(s1, s2)) D) if (strcmp(s1, s2) = 0)2.用“if(0<x<3) x=x+1;”实现“如果x 在0到3之间则将其值加1”的操作,________。
(A) 正确(B) 有语法错误 (C) 有逻辑错误 (D) 有连接错误3.#include<stdio.h>#include<string.h> main() {printf("%d\n", strlen("IBM\n012\t\"\\\0")); }则程序运行后的输出结果是。
A) 10 B) 11 C) 16 D) 124.函数定义的首部写作“int func( )”,x、y是int型变量,则__________是正确的调用。
C语言实验题及参考答案

实验一1、计算整数各位数字之和(10 分)输入一个3 位正整数,将其每一位的数字相加,输出和输入格式:输入一个3 位正整数。
变量数据类型为unsigned 。
输出格式:输出整数每一位相加后的整数和。
输入样例:输出样例:【参考答案】#include "" int main(){ unsigned int a,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);return 0;}2、计算代数表达式(10 分)求:输入格式:输入角度x。
变量数据类型为double 。
π 为。
输出格式:输出y 的值,精确到小数点后2 位。
输入样例:输出样例:【参考答案】#include <>#include <>#define PIint main(){double x,y;scanf("%lf",&x); y=sqrt((sin(60*PI/180)+1)*(sin(30*PI/180)+1)/cos(x*PI/180));printf("%.2lf",y);return 0;}3、逆序的三位数 (10 分)程序每次读入一个正3 位数,然后输出按位逆序的数字。
有结尾的0 时,输出不应带有前导的0。
比如输入700,输入格式:每个测试是一个3 位的正整数。
输出格式:输出按位逆序的数。
输入样例:输出样例:注意:当输入的数字含输出应该是7。
【参考答案】#include ""int main(){ int a,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);return 0;}4、求整数均值 (10 分)本题要求编写程序,计算4 个整数的和与平均值。
哈尔滨工业大学C语言MOOC第12周编程题在线测试

Input final score:88↙
Input class score:78↙
Class cadre or not?(Y/N):N↙
Students from the West or not?(Y/N):Y↙
Input the number of published papers:1↙
Input class score:82↙
Class cadre or not?(Y/N):Y↙
Students from the West or not?(Y/N):N↙
Input the number of published papers:0↙
name:YaoMing,scholarship:4850
int second;
} CLOCK;
CLOCK CalculateTime(CLOCK t1, CLOCK t2);
int main()
{
CLOCK c1;
CLOCK c2;
printf("Input time one:(hour,minute):");
scanf("%d,%d", & c1.hour, & c1.minute);
return c;
}
2奖学金发放(4分)
题目内容:
某校的惯例是在每学期的期末考试之后发放奖学金。发放的奖学金共有五种,每项奖学金获取的条件分别如下:
1)院士奖学金:期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生每人均可获得8000元;
2)五四奖学金:期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生每人均可获得4000元;
哈工大C语言实验题

Q308.(10分)第5章实验2:体型判断。
医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了以下按“体指数”进行体型判断的方法。
体指数计算公式是:t = w /(h*h)其中:t是体指数;w是体重,其单位为千克;h是身高,其单位为米。
根据给定的体指数t计算公式,可判断你的体重属于何种类型:当 t<18 时,为低体重;当 18≤t<25 时,为正常体重;当 25≤t<27 时,为超重体重;当 t≥27 时,为肥胖。
****输入提示信息格式:"Please enter h,w:\n"****输入数据格式要求:"%f,%f"(先读入身高,再读入体重,身高以米读入,体重以千克读入)****输出数据格式要求:当 t<18 时,输出:"Lower weight!\n"当 18≤t<25 时,输出:"Standard weight!\n"当 25≤t<27 时,输出:"Higher weight!\n"当 t≥27 时,输出:"Too fat!\n"#include <stdio.h>#include <stdlib.h>main(){float t,w,h;printf("Please enter h,w:\n"); scanf("%f,%f",&h,&w);t = w/(h*h);if(t<18)printf("Lower weight!\n");else if(t>=18&&t<25)printf("Standard weight!\n");else if(t>=25&&t<27)printf("Higher weight!\n");elseprintf("Too fat!\n");return 0;}Q586.(10分)编写一个程序,输入年份和月份,判断该年是否是闰年,并根据给出的月份判断是什么季节和该月有多少天?(闰年的条件是年份能被4整除但不能被100整除,或者能被400整除;规定3~5月为春季,6~8月为夏季,9~11月为秋季,1、2和12月为冬季)。
C语言培训上机实验题目
安装Visual C ++6.0下载请从群里下载Microsoft Visual Studio.rar。
将下载的文件Microsoft Visual Studio.rar解压后即可使用。
请直接运行文件“Microsoft Visual Studio\Common\MSDev98\Bin\MSDEV.EXE”实验一认识C语言【实验目的】1.熟悉C程序设计编程环境Visual C ++,掌握运行一个C程序设计的基本步骤,包括编辑、编译、连接和运行。
编辑:编写源程序文件.c编译:生成目标文件.obj连接:生成可执行文件.exe运行:执行.exe文件。
2.掌握C语言程序设计的基本框架,能够编写简单的C程序。
3.了解程序调试的思想,能找出并改正C程序中的语法错误。
【实验内容】1-1 在磁盘上新建一个文件夹,用于存放C程序,文件夹的名字可以是学号,如D:\3050888。
1-2 编程示例,在屏幕上显示一个短句“Hello World!”。
源程序# include <stdio.h>void main( ){printf("Hello World! \n");}运行结果Hello World!作为第一个实验,在Visual C++编程环境下,以上述C语言源程序为例,介绍运行一个C 程序的基本步骤,请读者按照以下步骤操作。
(1)启动VC++执行“开始”—>“程序”—>“Microsoft Visual Studio 6.0”—> “Microsoft Visual C++ 6.0”,进入VC++编程环境(如图1.1所示)。
图1.1 VC++窗口(2)新建文件执行“文件/File”—>“新建/New”,单击“文件/Files”选项卡(如图 1.2所示),先在“文件/File name”栏中输入test,把C源(程序)文件命名为test.cpp,在“目录/Location”框中选择你已经建立的文件夹,如,D:\3050888,然后选中“C++ Sourse Files”,单击“确定”按钮,在D:\3050888下就新建了文件test.cpp,并显示编辑窗口和信息窗口(如图1.3所示)。
MOOC哈工大2020C语言程序设计精髓练兵区编程题第六周
MOOC哈⼯⼤2020C语⾔程序设计精髓练兵区编程题第六周1 绘制⾦字塔(4分)题⽬内容:要求⽤户从键盘输⼊⼀个⼤写字母,使⽤嵌套循环产⽣像下⾯这样的⾦字塔图案:AABAABCBAABCDCBAint main(){char c;printf("Please input a capital:\n");scanf("%c",&c);if(c >= 'A' && c <= 'Z'){for (int i = 'A'; i <= c; ++i){for (int j = c - i; j >= 0; j--){printf(" ");}for (int k = 'A'; k <= i; k++){printf("%c",k);}for (int l = i - 1; l >= 'A'; l--){printf("%c",l);}printf("\n");}}}2 循环嵌套的应⽤(4分)题⽬内容:编写程序产⽣如下输出:FFEFEDFEDCFEDCBFEDCBAint main(){char c='F';for (int i = c; i >= 'A' ; i--){for (int j = c; j >= i; j--){printf("%c", j);}printf("\n");}return 0;}3 利⽤泰勒级数计算sinx的值(4分)题⽬内容:利⽤泰勒级数计算sinx的值,要求最后⼀项的绝对值⼩于,并统计出此时累加了多少项。
请⽤“利⽤前项来计算后项”的⽅法计算累加项,不要使⽤pow函数编写程序。
哈工大c语言 练习题
求用户输入的两个数的商,程序运行时,以如下格式输入数据:Input two integers:4 2↙请改正程序中的错误,使它能得出正确的结果。
#include <>main(){int a, b, c;printf("Input two integers:");scanf("%d,%d", &a, &b);c = a\b;printf("The quotient of a and b is :%d", c);}# include <>int main (){int a,b,c;printf ("Input two integers:");scanf ("%d %d",&a,&b);c=a/b;printf ("The quotient of a and b is :%d\n",c);return 0;}使用const常量定义圆周率pi=,编程从键盘输入圆的半径r,计算并输出圆的周长和面积。
输出的数据保留两位小数点。
输入格式要求:"%lf"提示信息:"Input r:"输出格式要求:"printf WITHOUT width or precision specifications:\n""circumference = %f, area = %f\n""printf WITH width and precision specifications:\n""circumference = %, area = %\n"程序运行示例如下:Input r:printf WITHOUT width or precision specifications:circumference = , area =printf WITH width and precision specifications:circumference = , area =#include <>int main(){const double PI=;double r;printf("Input r:");scanf("%lf", &r);printf("printf WITHOUT width or precision specifications:\n");printf("circumference = %f, area = %f\n",2*PI*r,PI*r*r);printf("printf WITH width and precision specifications:\n");printf("circumference = %, area = %\n",2*PI*r,PI*r*r);return 0;}写一个程序,将接收的华氏温度转换为对应的摄氏温度。
2022年哈尔滨工业大学公共课《C语言》科目期末试卷B(有答案)
2022年哈尔滨工业大学公共课《C语言》科目期末试卷B(有答案)一、填空题1、设有一输入函数scanf("%d”,k);它不能使float类型变量k得到正确数值的原因是_______未指明变量k的地址和_______格式控制符与变量类型不匹配。
2、一个C语言源程序由若干函数组成,其中至少应含有一个________3、结构化程序由________、________ 、________ 3种基本结构组成。
4、把以下多项式写成只含7次乘法运算,其余皆为加、减运算的C语言表达式为_______。
5x7+3x6-4x5+2x1+x3-6x2+x+105、若有定义语句:charc='\010';则变量c中包含的字符个数为_______。
6、请读程序段:int x=1;printf("%d\n",~x);上面程序段的输出结果是_______。
7、下面程序段的运行结果是_______。
x=2;do{printf("*");x--;)while(!x==0);8、下面程序段将输出computer。
请填空。
char c[]="It is a computer";for(i=0;_______;i++){_______;printf("%c",c[j]);}9、下面程序段的运行结果是_______。
int i=5;char c[6]="abcd";do{c[i]=c[i-1];}while(--i>0);puts(c);10、以下程序段通过移动指针变量m,给如图9-7所示连续动态存储单元赋值。
请填空。
(假设程序段中的所有变量均已正确说明。
)for(k=0;k<10;k++,m++)scanf("%d",_______);二、选择题11、下面4个选项中,是不合法的转义字符的选项是()A.'\"'B.'\1011 'C.'\0ll'D.'\abe'\\ '\' '\f' '\0ll'\xf' ' \a' '\]' 'xlf'12、下面4个选项中,是正确的数值常量或字符常量的选项是( )13、以下叙述正确的是A.在C程序中,main函数必须位于程序的最前面B.C程序的每行中只能写一条语句C.C语言本身没有输入输出语句D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误14、以下叙述不正确的是( )A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.C程序的基本组成单位是函数D.在C程序中,注释说明只能位于一条语句的后面15、在C语言中,一维数组的定义方式为:类型说明符数组名()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Q308.(10分)第5章实验2:体型判断。
医务工作者经广泛的调查和统计分析,根据身高与体重因素给出了以下按“体指数”进行体型判断的方法。
体指数计算公式是:t = w /(h*h)其中:t是体指数;w是体重,其单位为千克;h是身高,其单位为米。
根据给定的体指数t计算公式,可判断你的体重属于何种类型:当 t<18 时,为低体重;当 18≤t<25 时,为正常体重;当 25≤t<27 时,为超重体重;当 t≥27 时,为肥胖。
****输入提示信息格式:"Please enter h,w:\n"****输入数据格式要求:"%f,%f"(先读入身高,再读入体重,身高以米读入,体重以千克读入)****输出数据格式要求:当 t<18 时,输出:"Lower weight!\n"当 18≤t<25 时,输出:"Standard weight!\n"当 25≤t<27 时,输出:"Higher weight!\n"当 t≥27 时,输出:"Too fat!\n"#include <stdio.h>#include <stdlib.h>main(){float t,w,h;printf("Please enter h,w:\n"); scanf("%f,%f",&h,&w);t = w/(h*h);if(t<18)printf("Lower weight!\n");else if(t>=18&&t<25)printf("Standard weight!\n");else if(t>=25&&t<27)printf("Higher weight!\n");elseprintf("Too fat!\n");return 0;}Q586.(10分)编写一个程序,输入年份和月份,判断该年是否是闰年,并根据给出的月份判断是什么季节和该月有多少天?(闰年的条件是年份能被4整除但不能被100整除,或者能被400整除;规定3~5月为春季,6~8月为夏季,9~11月为秋季,1、2和12月为冬季)。
**输入格式要求:"%d,%d" 提示信息:"Please enter year,month:"**输出格式要求:"%d is leap year\n" "%d is not leap year\n" "The season is spring/summer/autumn/winter" "The number of days of this month is %d\n"程序运行示例如下:实例1:Please enter year,month:2012,112012 is leap yearThe season is autumnThe number of days of this month is 30实例2:Please enter year,month:2013,122013 is not leap yearThe season is winterThe number of days of this month is 31#include <stdio.h>#include <stdlib.h>main(){int year=0,leap=0,mon=0,day=0;printf("Please enter year,month:");scanf("%d,%d",&year,&mon);if((year%100!=0&&year%4==0)||(year%100==0&&year%400==0)){ printf("%d is leap year\n",year);leap=1;}elseprintf("%d is not leap year\n",year);switch(mon){case 1:case 2:case 12:printf("The season is winter\n");break;case 3:case 4:case 5:printf("The season is spring\n");break;case 7:case 8:printf("The season is summer\n"); break;case 9:case 10:case 11:printf("The season is autumn\n"); break;}switch(mon){case 1:case 3:case 5:case 7:case 8:case 10:case 12:day=31;break;case 4:case 6:case 11:day=30;break;case 2:if(leap==1)day=29;elseday=28;}printf("The number of days of this month is %d\n",day);}Q3161.(10分)请用else if多分支条件判断语句编程设计一个简单的计算器程序。
要求:(1)请用户按以下形式从键盘输入表达式:操作数①运算符op 操作数②(2)然后计算表达式的值**输入提示信息**:无**输入数据格式**:"%f%c%f"**输出数据格式**:"%.2f%c%.2f=%.2f\n"若若输入的运算符是除法运算符/,当除数为0时,输出数据格式为:"dat is 0!Error!\n"若输入的运算符不是加(+)、减(-)、乘(*)、除(/),则输出数据格式为:"Error!\n"[友情提示]:①用户输入的运算符为算术运算符:加(+)、减(-)、乘(*)、除(/)。
用字符变量 op 表示;②操作数①和操作数②为浮点型数据,分别用浮点型变量 dat1、dat2表示。
③程序运行结果如下所示:1+2↙1.00+2.00=3.00#include <stdio.h>#include <stdlib.h>main(){float a=0,b=0;char op;scanf("%f%c%f",&a,&op,&b);if(op=='+')printf("%.2f%c%.2f=%.2f\n",a,op,b,a+b);else if(op=='-')printf("%.2f%c%.2f=%.2f\n",a,op,b,a-b);else if(op=='*')printf("%.2f%c%.2f=%.2f\n",a,op,b,a*b);else if(op=='/'){if(b!=0)printf("%.2f%c%.2f=%.2f\n",a,op,b,a/b);elseprintf("dat is 0!Error!\n");}elseprintf("Error!\n");}Q3185.(10分)实验二(2016春刘秉权C语言课):根据输入的百分制成绩score,转换成相应的五分制成绩grade后输出。
转换规则为(要求用switch语句实现):当score大于等于90且小于等于100时,grade=A;当score大于等于80且小于90时,grade=B;当score大于等于70且小于80时,grade=C;当score大于等于60且小于70时,grade=D;当score大于等于0且小于60时,grade=E。
格式要求:输入提示:"Please enter score:"输出形式形如:"100--A"、"75--C"、"0--E"当输入分数不正确时,输出:"Input error!"#include<stdio.h>main(){int s,m;printf("Please enter score:"); scanf("%d",&s);m=s<0||s>100?-1:s/10;switch(m){case 10:case 9:printf("%d--A\n",s); break;case 8:printf("%d--B\n",s); break;case 7:printf("%d--C\n",s); break;case 6:printf("%d--D\n",s); break;case 5:case 4:case 3:case 2:case 1:case 0:printf("%d--E\n",s);break;default:printf("Input error!");}}Q221.(10分)编程从键盘输入某年某月(包括闰年),用switch语句编程输出该年的该月拥有的天数。
要求考虑闰年以及输入月份不在合法范围内的情况。
已知闰年的2月有29天,平年的2月有28天。
**输入格式要求:"%d, %d" 提示信息:"Input year,month:"**输出格式要求:"31 days\n" "29 days\n" "28 days\n" "Input error!\n"程序运行示例如下:Input year,month:2004,229 days#include<stdio.h>main(){int a, b;printf("Input year,month:");scanf("%4d, %2d", &a, &b);switch (b){case 1:case 3:case 5:case 7:case 8:case 10:case 12:printf("31 days\n");break;case 4:case 6:case 9:case 11:printf("30 days\n");break;case 2:if ((a % 4 == 0 && a % 100 != 0) || a % 400 == 0) printf("29 days\n");elseprintf("28 days\n");break;default:printf("Input error!\n");}return 0;}Q210.(10分)第7章实验任务1:所谓素数是指这个数只能被1和自身整除。