大学MOOC哈工大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");。
Python语言程序设计-课后练习-第6周
中国大学MOOC课程 《Python语言程序设计》 课后练习(第6周)北京理工大学Python语言教学团队【说明】本文是中国大学MOOC课程《Python语言程序设计》第6周的课后练习,预估学习完成时间约50分钟。
本周课后练习内容包括3道编程题,帮助同学学习文件读写和字典操作。
对于尚未安装Python运行环境的同学,请根据第1周课程内容介绍的步骤安装Python 3.5.1或者Python 3.5.2版本解释器,如果操作系统兼容性有问题,可以安装Python 3.4版本解释器。
【课后练习】1. 理解文本和二进制打开方式的区别首先,用文本编辑器生成一个包含“中国是个伟大国家!”的txt 格式文本文件,命名为test.txt。
编写程序分别用文本文件方式和二进制文件方式读入,并打印输出效果。
观察输出结果并解释。
2. 文件处理fo = open(fname, "r")for line in fo:# 处理一行数据fo.close()上述格式是打开文件并逐行处理的程序框架,请编写一个实例练习。
3. 哈姆雷特词频统计Hamlet,《哈姆雷特》,是莎士比亚的一部经典悲剧作品,讲述了克劳狄斯叔叔谋害哈姆雷特父亲并篡取王位、哈姆雷特流浪在外并向叔叔复仇的故事。
《哈姆雷特》也叫《王子复仇记》,代表着整个西方文艺复兴时期文学的最高成就,很多国内外电影都以这个故事为原型。
获取该故事的文本文件,保存为hamlet.txt。
全文可以从MOOC课程下载或从网络获得。
统计Hamlet英文词频的第一步是分解并提取英文文章的单词。
同一个单词会存在大小写不同形式,但计数却不能区分大小写。
假设Hamlet文本由变量txt表示,可以通过txt.lower()函数将字母变成小写,排除原文大小写差异对词频统计的干扰。
英文单词的分割可以是空格、标点符号或者特殊符号。
为统一分隔方式,可以将各种特殊字符和标点符号使用txt.replace()方法替换成空格,再提取单词。
哈工大C语言程序设计习题ex6
习题66.3 阅读程序,按要求在空白处填写适当地表达式或语句,使程序完整并符合题目要求.(1)下面程序模拟了骰子地6000次投掷,用rand函数产生1~6之间地随机数face,然后统计1~6每一面出现地机会(概率)存放到数组frequency中.(2)从键盘输入10个整型数据,放入数组a 中,求其最大值、最小值及其所在元素地下标位置,并输出.(3)下面程序地功能是从键盘输入一行字符,统计其中有多少单词.假设单词之间以空格分开.(4)下面地函数Squeeze(char s[],char c)地功能是删除字符串s中所出现地与变量c相同地字符.(5)下面地函数MyStrcmp()用于实现函数strcmp()地功能,将两个字符串s和t进行比较,然后将两个字符串中第一个不相同字符地ASCII码值之差作为函数值返回.6.4 编程实现从键盘任意输入20个整数,统计非负数个数,并计算非负数之和.6.5 从键盘任意输入10个整数,用函数编程实现将其中最大数与最小数地位置对换后,再输出调整后地数组.6.6 输入5×5阶地矩阵,编程实现:(1)求两条对角线上地各元素之和.(2)求两条对角线上行、列下标均为偶数地各元素之积.6.7 编程打印如下形式地杨辉三角形.11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 16.8 编程将下列矩阵中地元素向右移动一列,最右一列移至第一列.1 4 68 10 126.9 利用公式c ij=a ij+b ij计算m×n阶矩阵A和m×n阶矩阵B之和.已知a ij为矩阵A地元素,b ij 为矩阵B 地元素,c ij 为矩阵C 地元素(i =1,2,…,m ;j =1,2,…,n ).*6.10 利用公式c ij =∑=nk ik a 1*b kj 计算矩阵A 和矩阵B 之积.已知a ij 为m ×n 阶矩阵A 地元素(i =1,2,…,m ;j =1,2,…,n ),b ij 为n ×m 阶矩阵B 地元素(i =1,2,…,n ;j =1,2,…,m ),c ij 为m ×m 阶矩阵C 地元素(i =1,2,…,m ;j =1,2,…,m ).6.11 输入一行字符,统计其中地英文字符、数字字符、空格和其他字符地个数.6.12 编写一个函数Inverse(),实现将字符数组中地字符串逆序存放地功能.6.13 不用函数strcat(),编程实现字符串连接函数strcat()地功能,将字符串srcStr 连接到字符串dstStr 地尾部.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.用户可将本文地内容或服务用于个人学习、研究或欣赏,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律地规定,不得侵犯本网站及相关权利人地合法权利.除此以外,将本文任何内容或服务用于其他用途时,须征得本人及相关权利人地书面许可,并支付报酬.Users may use the contents or services of this article for personal study, research or appreciation, and othernon-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon the legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.3 / 6转载或引用本文内容必须是以新闻性或资料性公共免费信息为使用目地地合理、善意引用,不得对本文内容原意进行曲解、修改,并自负版权等法律责任.Reproduction or quotation of the content of this article must be reasonable and good-faith citation for the use of news or informative public free information. It shall not misinterpret or modify the original intention of the content of this article, and shall bear legal liability such as copyright.5 / 6。
(完整word版)C语言程序设计下mooc答案
2016.03.28—06.30 北京理工大学 MOOCC语言程序设计(下)网上作业答案第一周编程作业1、求最大公约数和最小公倍数(15分)题目内容:编写程序,在主函数中输入两个正整数 a,b,调用两个函数 fun1() 和 fun2(),分别求a 和 b 的最大公约数和最小公倍数,在主函数中输出结果。
输入格式:两个正整数输出格式:最大公约数和最小公倍数输入样例:12,40[回车]输出样例:最大公约数:4[回车]最小公倍数:120[回车]时间限制:500ms内存限制:32000kbCode:#include <stdio.h>int fun1(int m,int n){int r;r=m%n;return r==0?n:fun1(n,r);}int fun2(int m,int n){int t;t=m*n/fun1(m,n);return t;}int main(){ int t,m,n;scanf("%d,%d",&m,&n);if(m<n){t=m;m=n;n=t;}printf("最大公约数:%d\n",fun1(m,n));printf("最小公倍数:%d\n",fun2(m,n));return 0;}2、排序并插入(15分)题目内容:编写程序,在主函数中定义一个有10个元素的整型一维数组,用户输入9个数据,调用函数,对数组元素进行从小到大排序后,在函数中输入一个数,插入到数组中正确的位置,并输出。
输入格式:9个整数和1个整数输出格式:10个整数输入样例:2,3,1,5,6,76,89,31,90[回车]7[回车]输出样例:1,2,3,5,6,7,31,76,89,90[回车]时间限制:500ms内存限制:32000kbCode:#include <stdio.h>int main(){int t,j,i,n[10];for(i=0; i<9; i++){scanf("%d", &n[i]);if(i<8) scanf(",");}scanf("%d",&n[9]) ;for(i=0;i<9;i++){for(j=0;j<= 8-i;j++){if(n[j] > n[j+1]){t = n[j];n[j] = n[j+1];n[j+1] = t;}}}for(i=0;i<10;i++){printf("%d",n[i]);if(i<9) printf(",");}return 0;}第二周编程作业1、最大公约数(15分)题目内容:输入两个整数m,n,用递归算法实现计算两个数的最大公约数。
C语言程序设计中国大学mooc课后章节答案期末考试题库2023年
C语言程序设计中国大学mooc课后章节答案期末考试题库2023年1.关于问题与问题求解,下列说法正确的是()。
答案:人类进行问题求解的一般思维过程可分为问题分析、提出假设和检验假设。
2.关于贪心算法(又称贪婪算法是指,在对问题求解时,总是做出在当前看来是最好的选择。
也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。
贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题他能产生整体最优解或者是整体最优解的近似解),下列叙述中正确的是()。
答案:选择能产生问题最优解的最优量度标准是使用贪婪算法的核心。
3.将多个有序序列合并成一个有序序列,属于()。
答案:归并排序4.关于数学模型(Mathematical Model)和数学建模(MathematicalModeling),下列说法正确的是()。
答案:数学模型是对实际问题的数学抽象,是用数学符号、数学式子等对实际问题本质属性的抽象而又简洁的刻画。
5.在“八皇后问题”的问题求解中,采用“试探-失败返回-再试探”的问题求解方法,该方法属于()。
八皇后问题:在8×8格的国际象棋上摆放8个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。
答案:回溯法6.关于算法(Algorithm),下列叙述正确的是()。
答案:算法可以用自然语言、流程图或伪代码描述,各有其优点。
7.关于抽象(Abstraction),下列说法正确的是()。
答案:抽象是从众多的事物中抽取出共同的、本质性的特征,而舍弃其非本质的特征。
8.关于哥尼斯堡七桥问题,下列叙述不正确的是()。
哥尼斯堡七桥问题:哥尼斯堡是位于普累格河上的一座城市,它包含两个岛屿及连接它们的七座桥。
如图所示:我们要解决的问题是可否存在一种方案可以走过所有的桥然后回到起点。
答案:欧拉将七桥问题归结为了一个图形形式的“一笔画”问题,从而得到了问题的解。
中国大学MOOC哈工大C语言程序设计精髓第六周编程题答案
中国大学MOOC哈工大C语言程序设计精髓第六周编程题答案6.1 下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。
目前程序存在错误,请将其修改正确。
并按照下面给出的运行示例检查程序。
#include#includeint main(){char score[100];int flag = 0, i, s;char grade;printf("Please input score:\n");while (1){flag=0;scanf("%s", score);for (i = 0; i < strlen(score); i++){if (score[i] >= '0' && score[i] <= '9'){continue;}else{flag = 1;}}s = atoi(score);if (s < 0 || s > 100 || flag == 1) {printf("Input error!\n");printf("Please input score:\n"); continue;}else{break;}}s = atoi(score);if (s >= 90)grade = 'A';}else if (s >= 80){grade = 'B';}else if (s >= 70){grade = 'C';}else if (s >= 60){grade = 'D';}{grade = 'E';}printf("grade: %c\n", grade);return 0;}6.2 编程计算a+aa+aaa+…+aa…a(n个a)的值(4分)题目内容:编程计算a+aa+aaa+…+aa…a(n个a)的值,n和a的值由键盘输入。
C语言程序设计慕课下编译答案 (完美)
1 求最大公约数和最小公倍数(15分)#include <>int fun1( int m, int n) 大公约数#include <>int fun1( int m, int n) 数球和#include<>int main(){ int n;int sum(int n);scanf("%d",&n);printf("%d\n",sum(n));}int sum(int n){ int b;if(n>1)b=sum(n-1)+2*n-1;if(n==1)b=1;return b;}5.巧算自然数#include<>int step = 1;void fc(int n)鸭子#include <>int main(){static int i,x[8];x[7]=2;for(i=7;i>=0;i--)x[i-1]=(x[i]+1)*2;printf("sum=%d\n",x[0]);for(i=0;i<7;i++)printf("sell=%d,",x[i]-x[i+1]);printf("\n");return 0;}7.各位数字之和{if (s<10)return s;else return s%10+add(s/10); }int main(int argc, char *argv[]) {int a,b;scanf("%d",&a);b=add(a);printf("%d",b);return 0;}对称字符串#include <>#include <>main(){ char a[100];int i,j;gets(a);i=0;j=strlen(a)-1;while(i<j){if(a[i]==a[j]){i++;j--;}elsebreak;}if(i>=j) printf("YES\n");else printf("NO\n");}指针排序#include <>void sort(int *p,int n);void sort(int *p,int n){int i,j;int temp=0;for(i=0;i<n;i++){for(j=0;j<n;j++)if(p[j]>p[j+1]){temp=p[j];p[j]=p[j+1];p[j+1]=temp;}}}}int main(){int i;int a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);}int *p=a;sort(a,10);for(i=0;i<10-1;i++){printf("%d,",*(p++));}printf("%d\n",*p);return 0;}查找数#include <>void find(int *p,int element,int n); void find(int *p,int element,int n){int i,flag=0;;for(i=0;i<n;i++){flag++;if(element == p[i]){printf("%d\n",p[i]);break;}if(flag == n){printf("No\n");}}int main(){int i;int a[10];for(i=0;i<10;i++){scanf("%d",&a[i]);}int *p=a;int num;scanf("%d",&num);find(p,num,10);return 0;}输出指定成绩#include <>int main(){int grade[3][4],i,j,(*p)[4]=grade,n;float ave=0;for(i=0;i<3;i++)for(j=0;j<4;j++)scanf("%d",&grade[i][j]);scanf("%d",&n);for(i=0;i<3;i++)printf("%d ",*(*(p+n-1)+i));printf("%d\n",*(*(p+n-1)+3));for(i=0;i<4;i++)ave+=*(*(p+n-1)+i);ave/=4;if(ave-(int)ave)printf("%.2f\n",ave);elseprintf("%d\n",(int)ave);return 0;}成绩排序#include <>void average(int p[][6],int n);void average(int p[][6],int n){int i;for(i=0;i<4;i++){p[n][4]+=p[n][i];}p[n][5]=p[n][4]/4;}void Print(int p[][6],int n){int max1=p[0][5];int max2=p[1][5];int max3=p[2][5];int i;if(max1>max2 && max1>max3){if(max2>max3){printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);}else{printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);}}else if(max2>max1 && max2>max3){if(max1>max3){printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);}else{printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);}}else if(max3>max1 && max3>max2){if(max1>max2){printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);}else{printf("%d,%d,%d,%d\n",p[2][0],p[2][1],p[2][2],p[2][3]);printf("%d,%d,%d,%d\n",p[1][0],p[1][1],p[1][2],p[1][3]);printf("%d,%d,%d,%d\n",p[0][0],p[0][1],p[0][2],p[0][3]);}}}int main(){int i,j;int a[3][6]={0};for(i=0;i<3;i++){for(j=0;j<4;j++){scanf("%d",&a[i][j]);}average(a,i);}Print(a,3);return 0;}统计字符串出现次数#include <>#include <>int main(){char str1[100],str2[100];int flag=0,counter=0,l1,l2,i,j;gets(str1);gets(str2);l1=strlen(str1);l2=strlen(str2);for(i=0;i<l1;i++){if(str1[i]==str2[0]){for(j=1;j<l2;j++){if(str1[i+j]!=str2[j])break;else flag=1;}if(flag)counter++;}}if(counter)printf("%d\n",counter);elseprintf("No\n");return 0;}成绩统计求平均分#include<>main(){printf("wanglei,\n");printf("lihong,\n");printf("zhangli,\n");printf("liuming,83\n");printf("AVERAGE:,,,82\n");}加密#include<>#include<>int l;void gm(char*a);{char s[100]={0};gets(s);l=strlen(s);gm(s);}void gm(char*a){int i;char d[100]={0};for(i=0;i<l;i++){switch(a[i]){case'a':d[i]='d';break;case'b':d[i]='w';break;case'c':d[i]='k';break;case'd':d[i]=';';break;case'e':d[i]='i';break;case'i':d[i]='a';break;case'k':d[i]='b';break;case';':d[i]='c';break;case'w':d[i]='e';break;default:d[i]=a[i];}}puts(d);}学生成绩#include""struct ade{int no;int am;int bm;int cm;}; struct ade N[3]={1,70,80,90,2,75,85,95,3,88,84,65}; main(){char s[300];int i=0,k,m;for(i=0;i<3;i++){scanf("%c",&s[i]);if(s[i]=='\n') break;}if(s[0]=='m')printf("2");if(s[0]=='1'||s[0]=='2'||s[0]=='3'){k=N[(int)(s[0]-'1')].am+N[(int)(s[0]-'1')].bm+N[(int)(s[0]-'1')].cm; ;m=k/3;printf("%d",m);}else printf("0");}字母储存#include<>#include<>typedef struct Char_{ char ch;char intch;struct Char_ *next;}CHAR_;int main(void){CHAR_ *node = NULL;CHAR_ *ch_ = NULL;CHAR_ *hear = NULL;char zimu = 'a';char panduanzimu;char record;for (; zimu != 'e'; zimu++){ch_ = (CHAR_ *)malloc(sizeof(CHAR_));if (ch_ == NULL) { exit(0); }ch_->ch = zimu;ch_->next = NULL;if (node == NULL) { node = ch_; }else{node->next = ch_;node = node->next; }if (hear == NULL){ hear = node; }}for (zimu -= 2; zimu != ('a' - 1); zimu--){ch_ = (CHAR_ *)malloc(sizeof(CHAR_));if (ch_ == NULL){ exit(0); }ch_->ch = zimu;ch_->next = NULL;node->next = ch_;node = node->next;}for (node = hear, zimu = '0'; node != NULL; node = node->next, zimu++) {node->intch = zimu;}scanf("%c", &panduanzimu);node = hear;if (panduanzimu >= '0'&&panduanzimu <= '6'){while (node != NULL){if (panduanzimu == node->intch){ printf("%c", node->ch); break; }node = node->next;}}else if (panduanzimu >= 'a'&&panduanzimu <= 'd'){while (node != NULL){if (panduanzimu == node->ch){record = node->intch;}node = node->next;}printf("%c", record);}else{ printf("N");}node = hear;while (node != NULL){hear = node->next;free(node);node = hear;}return 0;}链表合并#include<>int main(){static int i,j,m,n;static char q,x[100],y[100],z[100];gets(x);gets(y);strcat(x,y);m=strlen(x);for(j=0;j<m;j++){for(i=0;i<m-j;i++){q=x[j];if(x[j]>x[j+i]){x[j]=x[j+i];x[j+i]=q;}}}for(i=0;i<m;i++){for(j=0;j<=i;j++){if(z[j]==x[i])break;if(j==i)z[n]=x[i];n=strlen(z);}}for(i=m-1;i>0;i--){if(isalpha(z[i])){m=i;break;}}for(i=0;i<=m;i++){if(z[i]==' '){continue;}else{if(i==m){printf("%c\n",z[i]);}else{printf("%c ",z[i]);}}}}解析字符串#include <>#include <>int main(){int i,j,k=0;char a[100],b[100],c[100];gets(a);for(i=0;a[i]!='n';i++){printf("%c",a[i]);k++;}printf("\n");for(i=k+1;a[i]!='\0'&&a[i]!='n';i++){printf("%c",a[i]);k++;}if(a[i]=='n'&&a[i+1]!='\0'){for(i=k+2;a[i]!='\0';++i){printf("%c",a[i]);}}}字符串反向#include<>#include <>int main ( ){ char str[80], c;int i, j, n;gets(str);n = strlen(str);for ( i=0, j=n-1; i<j; i++, j-- ){ c= str[i];str[i] = str[j];str[j] = c;}puts(str);return 0;}基本的四则运算#include <>int main(){long long a,b;char op;scanf("%lld%c%lld",&a,&op,&b);switch(op){case '+':printf("%lld\n",a+b);break;case '-':printf("%lld\n",a-b);break;case '*':printf("%lld\n",a*b);break;case '/':printf("%lld\n",a/b);break;case '%':printf("%lld\n",a%b);break;}return 0;}复杂的四则运算#include <>#include <>int main(){static char x[100];int i;scanf("%s",&x);for(i=0;i<strlen(x);i++){if(x[i]>='0'&&x[i]<='9'){continue;}if(x[i]=='*'){x[i-1]=(x[i-1]-'0')*(x[i+1]-'0')+'0';x[i+1]='0';i++;}else if(x[i]=='/'){x[i-1]=(x[i-1]-'0')/(x[i+1]-'0')+'0';x[i+1]='0';i++;}}for(i=1;i<strlen(x);i++){if(x[i]>='0'&&x[i]<='9'){if(x[i-1]=='+'){x[0]+=(x[i]-'0');}else if(x[i-1]=='-'){x[0]-=(x[i]-'0');}}else{continue;}}printf("%c\n",x[0]);return 0;}。
C++中国大学MOOC第6章作业数组答案
中国大学慕课spoc第六章C++数组答案1最大值(100分)问题描述先输入一个正整数n(1到20之间),再输入n个整数,计算其中的最大值和相应下标。
输入描述先输入要处理的整数的个数n(1<=n<=20),再输入n个整数,并用空格分开。
输出描述依次输出n个整数中的最大值和相应下标(若多个整数与最大值相同,则从小到大输出相应下标),之间用空格分隔。
输入样例154 6 7 2 5输出样例17 2输入样例254 6 7 2 7输出样例27 2 4#include <bits/stdc++.h>using namespace std;int main(){int n,i,j,a[20],max;cin>>n;for(i=0;i<n;i++){cin>>a[i];}max=a[0];for(i=0;i<n;i++){if(max<a[i])max=a[i];}cout<<max;for(i=0;i<n;i++){if(a[i]==max){cout<<" "<<i;}}}2峰值个数(100分)问题描述先输入一个正整数n(3到20之间),再输入n个整数,计算其中的峰值个数。
峰值是满足大于或小于左右两个元素的元素,例如12,45,32,0,14,25,62,48,51序列中,峰值有45,0,62,48,峰值个数为4。
输入描述先输入要处理的整数的个数n(3<=n<=20),再输入n个整数,并用空格分开。
输出描述一个整数,表示n个整数中有多少个峰值。
输入样例54 6 7 2 5输出样例2#include <bits/stdc++.h>using namespace std;int main(){int n,i,a[20],j=0;cin>>n;for(i=0;i<n;i++){cin>>a[i];}for(i=1;i<n-1;i++){if((a[i]>a[i-1]&&a[i]>a[i+1])||(a[i]<a[i-1]&&a[i]<a[i+1]))j++;}cout<<j;}3互为相反数(100分)问题描述先输入一个正整数n(2到20之间),再输入n个数(可重复,可为浮点数),计算其中有多少对互为相反数(仅有符号不同的两数互为相反数)。
C语言慕课编程题参考答案(4-6周)
else {
p = - b / (2 * a); q = sqrt(disc) / (2 * a); printf("x1=%7.4f, x2=%7.4f\n", p+q, p-q); } return 0; }
第四周_练兵区
1. 检测用户错误输入 #include <stdio.h>
return 0; } 2. 快递费用计算 #include <stdio.h> int main() {
int iArea; float fWeight; float price,rate,base; scanf("%d, %f",&iArea, &fWeight);
price = 0;
switch(iArea) {
编程题参考答案(4-6 周)
第四周_在线测试
1. 数位拆分 v2.0 #include <math.h> #include <stdio.h> int main() {
int n,sum,a,b,sub,multi, mod; float dev;
printf("Please input n:\n"); scanf("%d",&n);
printf("The total number of odd is %d\n", counter1); printf("The total number of even is %d\n", counter2); return 0; }
4. 计算球的反弹高度 #include <stdio.h> int main() {
程序设计基础教程(c语言版)课后答案
z习题解答目录1.2 习题解答 (3)1.2.1 选择题 (3)1.2.2 填空题 (3)1.2.3 编程题 (4)2.2 习题解答 (5)2.2.1 选择题 (5)2.2.2 填空题 (7)2.2.3 编程题 (8)3.2 习题解答 (11)3.2.1 选择题 (11)3.2.2 填空题 (12)3.2.3 编程题 (12)4.2 习题解答 (15)4.2.1 选择题 (15)4.2.2 填空题 (17)4.2.3 编程题 (18)5.2 习题解答 (29)5.2.1 选择题 (29)5.2.2 填空题 (31)5.2.3 编程题 (33)6.2 习题解答 (37)6.2.1 选择题 (37)6.2.2 填空题 (41)6.2.3 编程题 (43)7.2 习题解答 (67)7.2.1 选择题 (67)7.2.2 填空题 (68)7.2.3 编程题 (68)21.2 习题解答1.2.1 选择题1、B【分析】在一个C程序中必须有且只能有一个main函数,而且main函数可以在任何地方出现.2、C【分析】C 语言中合法以的标识符组成为:字母,数字,下划线,且数字不能打头,亦不能为关键字。
A中,-sub 不合法。
B 中4d不合法。
D 中void 为关键字。
3、【分析】4、C【分析】转义字符中,第一个\”输出“,第二\\输出\,第三个\b退格,把前一个\去掉了,第四个\’输出’,第五个\t跳格,第六个\”输出”,第七个\n输出换行。
5、C【分析】本题将10进制17,分别按8、16进制输出。
8的进制21=2*8+1*1=17(10, 16制11=1*16+1*1=17(10)1.2.2 填空题1、主【分析】一个C源程序中至少包括一个主函数,其他函数没有限制。
2、双引号。
【分析】两种写法都是允许的,使用尖括号表示在包含文件目录中去查找(包含目录是由用户在设置环境时设置的),而不在源文件目录去查找.使用双引号则表示首先在当前的源文件目录中查找,若未找到才到包含目录中去查找。
《C语言程序设计》课后习题参考答案
{
t=t+i;
s=s+t;
}
printf("s=%d\n",s);
}
习题
一、选择题
1.B 2.A 3.A 4.D 5.C 6.B 7.A 8.A
二、填空题
1.按行的顺序依次存放的
2.0
3.4
4.6
三、编程题
1.有一个多项式:Pn(x)=a0xn+a1xn-1+…+an
2.0 1
3.1
4.4
5.-1
三、编程题
1.给出等级成绩′A′、′B′、′C′、′D′、′E′,假设,90分以上为′A′,80~89分为′B′,70~79分为′C′,60~69分为′D′,60分以下为′E′,输入一个等级成绩,问属于哪一个分数段。
参考代码如下:
main()
{
int score,m,n;
scanf("%d",&n);
for(i=0;i<5;i++)
if(n>a[i])
continue;
else
break;
for(j=4;j>=i;j--)
a[j+1]=a[j];
a[i]=n;
for(i=0;i<6;i++)
printf("%d,",a[i]);
printf("\n");
}
4.编写程序,在有序的数列中查找某数,若该数在此数列中,则输出它所在的位置,否则输出no found。
二、填空题
1. BASIC、FORTRAN、AL_GOL60和COBOL
哈工大 C语言程序设计精髓 MOOC慕课 6-12周编程题参考答案
printf(""\nTotal=%d\n"",s+b);
return 0;
}"
8.3"/*
一辆卡车违犯交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。现在请根据以上线索帮助警方找出车号以便尽快破案。
#include <stdio.h>
int main(){
int i,j,k,m,tk,tm;
for (i=0;i<=9;i++){
for (j=0;j<=9;j++){
for (m=31;m<100;m++){
k = 1000*i + 100*i + 10*j + j;
if (i!=j && m*m==k){
}
else if (s >= 70)
{
grade = 'C';
}
else if (s >= 60)
{
grade = 'D';
}
else
{
grade = 'E';
}
printf(""grade: %c\n"", grade);
return 0;
}"
6.2"#include<stdio.h>
#include<math.h>
men=7,women=7,children=22
C语言程序设计慕课下编译答案 (完美)
1求最大公约数与最小公倍数(15分)#include<stdio、h>int fun1(int m,int n)//辗转相除法求m/n得公约数{intr;while(n){r=m%n;m=n;n=r;}return m;}int fun2(int m,int n) //最小公倍数{returnm*n/fun1(m,n);}intmain(){int a,b;scanf("%d,%d",&a,&b); //输入printf(”最大公约数:%d\n最小公倍数:%d\n",fun1(a,b),fun2(a,b)); return 0;}2排序并插入(15分)#include <stdio、h>voidInsertionSort(int*arr, int n)//插入排序{int *last =0, *next=0,key = 0,i = 0;for(i =1;i〈n;++i){next= arr + i,key = *next;if (key< *arr)//将待插得数据比第一个数据小,直接插到最前面。
{for(last =next;next != arr;next= last)*next =*--last;*arr = key;}else //否则从后往前遍历,找到第一个小于关键字得位置插入。
{for (last=next;key < *——last;next=last)*next=*last;*next = key;}}}void OutPutArray(const int*arr,intn)//打印一个数组{ﻩint i;for(i =0;i < n; ++i){printf(”%d”,arr[i]);if(i〈n-1)printf(”,");}printf(”\n”);}void InsertNumber(int*arr, int n){int key= 0,i =0;InsertionSort(arr,n - 1);//对之前得n-1个数排序//OutPutArray(arr,n-1);// 这里可以打印出来瞧一下对之前得数据排序就是否正确scanf("%d", &key);// 输入一个数if (key <arr[0]) // 参照之前得插入排序原理,将这个数插入到数组。
中国大学MOOCC语言程序设计考试答案
得分/总分 A. float a[3][4]; float a[3][]; B. float a[3][4]; float a[][4]; float a[3][]={{1},{0}}; C. float a(3,4); float a[3][4]; float a[][]={{0};{0}}; D. float a[3][4]; static float a[][4]={{0},{0}}; 3.00/3.00 正确答案:D 你选对了 21 填空(4 分) 阅读下面的程序,写出程序的运行结果_______ #include<stdio.h> int main() {
if( a = b+c ) printf("***\n"); else printf("$$$\n"); } 以上程序( ) 得分/总分 A. 可以通过编译但不能通过连接 B. 有语法错不能通过编译 C. 输出*** 3.00/3.00 D. 输出$$$ 正确答案:C 你选对了 解析: D、if ( ) 这里是赋值号,不是等号哦 19 单选(3 分) 若有定义: int a[5]={1,2,3,4,5}; char b='c',c; 则下面表达式中数值为 2 的是( )。 得分/总分 A. a[b-'b'] 3.00/3.00 B. a[b] C. a[c-b] D. a[2] 正确答案:A 你选对了 解析: A、数组中表示 数组 2 的 元素为 a[1], 因此答案中能够得到 下标为 1 的数组元 素即为正确答案, 其它 3 个都不可以 20 单选(3 分) 以下各组选项中,均能正确定义二维实型数组 a 的选项是( )。
#include <stdio.h> int main( ) {
C语言程序设计教程课后题答案
"C语言程序设计教程"课后题答案第一章一选择题1.A2.B3.C4.D5.B6.C二.填空题1.程序2.算法3.main或主4.编译5.编译6. .obj7.库函数8.文本或ASCII码三、编程题1.参考代码如下:#include <stdio.h>void main(){printf("金\n木\n水\n火\n土\n");}2. 参考代码如下:#include <stdio.h>void main(){ int a,b;scanf("%d%d",&a,&b);printf("%d+%d=%d\n",a,b,a+b);printf("%d-%d=%d\n",a,b,a-b);printf("%d*%d=%d\n",a,b,a*b);printf("%d/%d=%d\n",a,b,a/b);}3. 参考代码如下:#include <stdio.h>void main(){float a,b,h,s;scanf("%f%f%f",&a,&b,&h);s=(a+b)*h/2;printf("s=%f\n",s);}第二章一选择题答案及分析:1.B,略2.A,-8在存中是以补码〔设两个字节〕形式存储的3.A,C语言有32个关键字〔参见课本第18页〕,且C语言标识符是区分大小写字母的4.A,略5.D,八进制数据中不能出现数码86.B,字符常量应该用单引号括起来,答案D超出了ASCII取值围〔ASCII的取值围为[0,255]〕7.C,该字符串中转义字符有三个:\\、 \22和 \n,普通字符有三个:a、 ,和0,所以字符串长度为68.C,略9.D,C语言没有read函数和%D格式符号,且scanf函数第二个形参为地址列表10.B,根据题意,scanf函数输入数据时分隔符号不应该是逗号,应该是空格或回车符,且输入数据时分一行或几行均可11.A,scanf函数中不允许出现%8.4,%6.2和%8这样的格式符号12.C,既要保证5位小数位,还得保证整数位不变,这样数据12345.67800用10列不能完全显示出来,按C语言规定,12345.67800原样输出13.B,printf函数中格式符号%d,%o,%*表示对应的整型数据分别按十进制,八进制和十六进制输出14.C,按C语言规定,scanf函数形参双引号中,如果包含非格式符号,在输入数据时要求原样输入二.填空题答案及分析:1.int float double〔略〕2.65,89 ,printf函数中如果格式符号是%d,则输出相应字符的ASCII十进制数值3.a=98,b=765.000000,c=4321.000000,scanf函数中的格式符号%2d%3f%4f,表示将键盘输入的数据9876543210按2,3,4位分割,然后再分别赋给变量a,b,c4.scanf("%lf%lf%lf",&a,&b,&c); double类型的变量对应的格式符号是%lf三、编程题1. 参考代码如下:#include <stdio.h>void main(){int a=97;printf("%c\n",a);printf("%d\n",a);printf("%o\n",a);printf("%*\n",a);}程序分析:通过printf函数中不同的格式符号,即%c〔字符〕,%d〔十进制〕,%o〔八进制〕,%*〔十六进制〕输出相应的值。
C语言程序设计慕课下编译答案 (完美)
1 求最大公约数和最小公倍数(15分)#include <stdio.h>int fun1( int m, int n) //辗转相除法求m/n的公约数{int r;while (n){r=m % n;m=n;n=r;}return m;}int fun2(int m,int n) //最小公倍数{return m*n/fun1(m,n);}int main(){int a,b;scanf("%d,%d",&a,&b); //输入printf("最大公约数:%d\n最小公倍数:%d\n",fun1(a,b),fun2(a,b));return 0;}2排序并插入(15分)#include <stdio.h>void InsertionSort(int* arr, int n) // 插入排序{int *last = 0, *next = 0, key = 0, i = 0;for (i = 1; i < n; ++i){next = arr + i, key = *next;if (key < *arr) // 将待插的数据比第一个数据小,直接插到最前面。
{for (last = next; next != arr; next = last)*next = *--last;*arr = key;}else // 否则从后往前遍历,找到第一个小于关键字的位置插入。
{for (last = next; key < *--last; next = last)*next = *last;*next = key;}}}void OutPutArray(const int* arr, int n) // 打印一个数组{int i;for (i = 0; i < n; ++i){printf("%d", arr[i]);if(i<n-1)printf(",");}printf("\n");}void InsertNumber(int* arr, int n){int key = 0, i = 0;InsertionSort(arr, n - 1); // 对之前的n-1个数排序// OutPutArray(arr, n - 1); // 这里可以打印出来看一下对之前的数据排序是否正确scanf("%d", &key); // 输入一个数if (key < arr[0]) // 参照之前的插入排序原理,将这个数插入到数组。
C语言程序设计慕课下编译答案 (完美)
}
3.最大公约数
#include <stdio.h>
int fun1( int m, int n) //辗转相除法求m/n的公约数
{
int r;
while (n)
{
r=m % n;
m=n;
n=r;
}
return m;
}
int main()
{
int a,b;
scanf("%d,%d",&a,&b); //输入
{
scanf("%d",&a[i]);
}
int *p=a;
sort(a,10);
for(i=0;i<10-1;i++)
{
printf("%d,",*(p++));
}
printf("%d\n",*p);
return 0;
}
查找数
#include <stdio.h>
void find(int *p,int element,int n);
// OutPutArray(arr, n - 1); //这里可以打印出来看一下对之前的数据排序是否正确
scanf("%d", &key); //输入一个数
if (key < arr[0]) //参照之前的插入排序原理,将这个数插入到数组。
{
for (i = n-1; 0 < i; --i)
{
arr[i] = arr[i - 1];
printf("%d\n",*(*(p+n-1)+3));
C语言程序设计上mooc答案
第一周作业【练习1】HelloWorld“Hello World”示例程序最早出现于1972年,由贝尔实验室成员Brian Kernighan撰写的内部技术文件《Introduction to the Language B》之中。
不久同作者于1974年所撰写的《Programming in C: A Tutorial》,也延用这个示例。
一般来说,这是每一种计算机编程语言中最基本、最简单的程序,亦通常是初学者所编写的第一个程序。
它还可以用来确定该语言的编译器、程序开发环境,以及运行环境是否已经安装妥当。
将“Hello World”作为第一个示范程序,已经成为编程语言学习的传统。
我们在这里继续传统,这也是一种向前辈们致敬的方式之一吧!最早的程序基本是这个样子的:#include <stdio.h>int main(){printf("Hello world.\n");return 0;}请模仿上面的程序,看看是否可以通过编译?如果你能通过这个简单的程序,那就让我们继续完成后面的习题吧。
略第二周作业【练习2】学学scanf和printf的用法吧该如何处理double 型的数据:如何定义变量类型?如何使用scanf 函数?如果已知圆柱的底面半径r ,以及高h ,则可计算出圆柱的侧面积s=2 π r h ,体积v=π r 2 h 。
其中π=3.1415926。
输入:第一行输入圆柱的底面半径r第二行输入圆柱的高h输出:s=< 圆柱的侧面积>,v=< 圆柱的体积>要求1. 所有变量都定义为双精度类型2. 结果精确到小数点后两位。
作为练习题目:我们已经给您编写好了大部分的代码,请您自己修改几个地方,完成程序的剩余部分。
**********************************************分隔线************#include<stdio.h>#define PAI 3.1415926int main(){int r,h;double s,v;scanf("%d %d", );s=2*PAI*r*h;v=PAI*r*r*h;printf("s=%.2f,v=\n",s, );return 0;}**********************************************分隔线************Code:#include<stdio.h>#define PAI 3.1415926int main(){int r,h;double s,v;scanf("%d %d",&r,&h);s=2*PAI*r*h;v=PAI*r*r*h;printf("s=%.2f,v=%.2f\n",s,v);return 0;}第三周作业1、输出字符的ASCII 码成绩10 开启时间2014年10月21日星期二10:00折扣0.8 折扣时间2014年11月5日星期三23:55允许迟交否关闭时间2014年11月12日星期三23:55背景:我们在计算机基础中已经学过:字母在计算机中采用ASCII码进行存储。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大学M O O C哈工大C语言程序设计精髓第六周
编程题答案
Document serial number【UU89WT-UU98YT-UU8CB-UUUT-UUT108】
下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出?Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。
目前程序存在错误,请将其修改正确。
并按照下面给出的运行示例检查程序。
#include<>
#include <>
int main()
{
char score[100];
int flag = 0, i, s;
char grade;
printf("Please input score:\n");
while (1)
{
flag=0;
scanf("%s", score);
for (i = 0; i < strlen(score); i++)
{
if (score[i] >= '0' && score[i] <= '9')
{
continue;
}
else
{
flag = 1;
break;
}
}
s = atoi(score);
if (s < 0 || s > 100 || flag == 1)
{
printf("Input error!\n");
printf("Please input score:\n");
continue;
}
else{
break;
}
}
s = atoi(score);
if (s >= 90)
{
grade = 'A';
}
else if (s >= 80)
{
grade = 'B';
}
else if (s >= 70)
{
grade = 'C';
}
else if (s >= 60)
{
grade = 'D';
}
else
{
grade = 'E';
}
printf("grade: %c\n", grade);
return 0;
}
编程计算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的值。
#include<>
#include<>
int main()
{
int n,a,i,j;
double p=0,q=0;
printf("Input a,n:\n");
scanf( "%d,%d",&a,&n);
for(i=1;i<=n;i++)
{
for(j=0,p=0;j<i;j++)
{
p=p+a*pow(10,j);
}
q=p+q;
}
printf("sum=%.0f\n",q);
return 0;
}
搬砖问题(4分)
题目内容:
n块砖(?27<n<=77?),36人搬,男搬4,女搬3,两个小孩抬一块砖,要求一次搬完,问男人、女人和小孩各需多少人请用穷举法编程求解,n的值要求从键盘输入。
输出结果按照男人数量升序给出(见下面示例3)。
#include ""
main()
{
int a, b, c;
long n, i, t, s = 0;
printf("Input n(27<n<=77):\n");
scanf("%d", &n);
for (a = 0; 4 * a <= n; a++)
for (b = 0; 4 * a + 3 * b <= n; b++)
for (c = 0; 4 * a + 3 * b + c / 2 <= n; c += 2)
if (4 * a + 3 * b + c / 2 == n && c%2 == 0 && a+b+c==36)
{
printf("men=%d,women=%d,children=%d\n", a, b, c);
}
}
编程输出某年某月有多少天(考虑到闰年)。
(5分)
题目内容:
从键盘输入一个年份和月份,输出该月有多少天(考虑闰年),用switch语句编程。
#include<>
int main()
{int year,month,day;
printf("Input year,month:\n");
scanf("%d,%d",&year,&month);
switch(month)
{
case 1: day=31;break;
case 2: day=28;break;
case 3: day=31;break;
case 4: day=30;break;
case 5: day=31;break;
case 6: day=30;break;
case 7: day=31;break;
case 8: day=31;break;
case 9: day=30;break;
case 10: day=31;break;
case 11: day=30;break;
case 12: day=31;break;
default:day=-1;printf("Input error!\n");
}
if((year%4==0&&year%100!=0||year%400==0)&&month==2) day=29; if (day!=-1)
printf("%d days\n",day);
return 0;
}。