哈工大C语言程序设计精髓MOOC慕课周编程题答案.docx
- 文档编号:10106536
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:19
- 大小:19.65KB
哈工大C语言程序设计精髓MOOC慕课周编程题答案.docx
《哈工大C语言程序设计精髓MOOC慕课周编程题答案.docx》由会员分享,可在线阅读,更多相关《哈工大C语言程序设计精髓MOOC慕课周编程题答案.docx(19页珍藏版)》请在冰点文库上搜索。
哈工大C语言程序设计精髓MOOC慕课周编程题答案
"/*下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:
如果用户输
入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),
则程序输出Inputerror!
,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。
目前程序存在错误,请将其修改正确。
并按照下面给出的运行示例检查程序。
*/#include<>
#include<>
intmain()
{
charscore[100];
intflag=0,i,s;
chargrade;
printf(""Pleaseinputscore:
\n"");
while
(1)
{
flag=0;
scanf(""%s"",score);
for(i=0;i if(score[i]>='0'&&score[i]<='9')continue; } else { flag=1; break; } } s=atoi(score); if(s<0||s>100||flag==1) { printf(""Inputerror! \n""); printf(""Pleaseinputscore: \n"");continue; } else{ break; } } s=atoi(score); if(s>=90) grade='A'; } elseif(s>=80) { grade='B'; } elseif(s>=70) { grade='C'; } elseif(s>=60) { grade='D'; } else { grade='E'; } printf(""grade: %c\n"",grade); return0; "#include<>#include<> intmain() { intn,a,i,j; doublep=0,q=0;printf(""Inputa,n: \n"");scanf(""%d,%d"",&a,&n); for(i=1;i<=n;i++) { for(j=0,p=0;j {p=p+a*pow(10,j); } q=p+q; } printf(""sum=%.0f\n"",q); return0; "/* n块砖(27 问男人、女人和小孩各需多少人? 请用穷举法编程求解,n的值要求从键盘输入。 输出 结果按照男人数量升序给出(见下面示例3)。 程序的运行结果示例1: Inputn(27 28/ men=0,women=4,children=32 程序的运行结果示例2: Inputn(27 36/ men=3,women=3,children=30 程序的运行结果示例3: Inputn(27 60/ men=2,women=14,children=20 men=7,women=7,children=22 men=12,women=0,children=24 输入提示: ""Inputn(27 \n"" 输入格式: ""%d"" 输出格式: ""men=%d,women=%d,children=%d\n"" */#include"""" main() { printf(""Inputn(27 \n""); longn,i,t,s=0; scanf(""%d"",&n); inta,b,c; 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); } }" "#include<> intmain() {intyear,month,day; printf(""Inputyear,month: \n""); scanf(""%d,%d"",&year,&month); switch(month) case1: day=31;break; case2: day=28;break; case3: day=31;break; case4: day=30;break; case5: day=31;break; case6: day=30;break; case7: day=31;break; case8: day=31;break; case9: day=30;break; case10: day=31;break; case11: day=30;break; case12: day=31;break; default: day=-1;printf(""Inputerror! \n""); } day=29; if((year%4==0&&year%100! =0||year%400==0)&&month==2) if(day! =-1) printf(""%ddays\n"",day); return0; }" "#include<> unsignedintComputeAge(unsignedintn){ main() { inti,j,k,s=23,n,c,age; scanf(""%d"",&n); printf(""Theperson'sageis%u\n"",8+2*n);}" "#include<> intgys(inta,intb) { intr; r=a%b; if(r==0)returnb; elsereturngys(b,r); } main() { printf(""Inputa,b: ""); inta,b; scanf(""%d,%d"",&a,&b); if(a<=0||b<=0){ printf(""Inputerror! \n""); else printf(""%d\n"",gys(a,b)); }" "#include<> intmedian(inta,intb,intc) { if(a {if(b else{returna c: a;}程序运行结果示例1: Inputn: 28212 Repeateddigit! 程序运行结果示例2: Inputn: 12345/ Norepeateddigit! 输入提示: ""Inputn: \n""输入格式: ""%ld""输出格式: 有重复数字,输出信息: ""Repeateddigit! \n"" 没有重复数字,输出信息: ""Norepeateddigit! \n""*/#include<>intmain() { intlog[10]={0},a[100]; intb,i=0,n,c,d;printf(""Inputn: \n"");scanf(""%d"",&n); while(n! =0) { b=n%10; n/=10; a[i]=b; i++; } a[i]=n; intflag=0; for(c=0;c for(d=c+1;d if(a[c]==a[d]) flag=1; break; } } max的值。 str[i]! =str[i+1],则计数器重新初始化为1。 遍历结束时,函数返回 程序运行结果示例1: Inputastring: 5: 5 程序运行结果示例2: Inputastring: sgf222257/ 2: 4 输入提示信息: ""Inputastring: \n"" 输入格式: 用gets()输入字符串 输出格式: ""%c: %d\n"" */ #include<> #include<> intmain() { chara[80]; intb,i,j,t=1,tl,num=0; printf(""Inputastring: \n"");gets(a); for(i=0;i t=1; for(j=i+1;j } } if(i==0){ tl=t; } else{ if(t>tl){ tl=t;num=i; } } } printf(""%c: %d\n"",a[num],tl); }" "/* 从键盘输入一串字符(假设字符数少于8个),以回车表示输入结束,编程将其中的数字部分转换为整型数并以整型的形式输出。 函数原型为intMyatoi(charstr[]); 其中,形参数组str[]对应用户输入的字符串,函数返回值为转换后的整型数。 解题思路的关键是: 1)判断字符串中的字符是否是数字字符;2)如何将数字字符转 换为其对应的数字值;3)如何将每一个转换后的数字值加起来形成一个整型数。 程序运行结果示例1: Inputastring: 7hg09y/ 709 程序运行结果示例2: Inputastring: 9w2k7m0/ 9270 程序运行结果示例3: Inputastring: happy/ 0 输入提示信息: ""Inputastring: "" 输入格式: ""%7s"" 输出格式: ""%d\n"" */ #include<>#include<> #include<>intMyatoi(charstr[]){ inti,j; for(i=0,j=0;str[i]! ='\0';i++){ if(str[i]>='0'&&str[i]<='9'){ str[j]=str[i]; j++; } } str[j]='\0'; returnatoi(str); } intmain() { chars[7]; printf(""Inputastring: ""); scanf(""%7s"",s); printf(""%d"",Myatoi(s)); printf(""\n""); return0; "/*输入n个整数(n从键盘输入,假设n的值不超过100),按奇偶数分成两组并 输出。 输出两行,第一行为所有奇数,第二行为所有偶数,保持数据的相对顺序与输入顺序相同。 函数原型如下所示: voidSeperate(inta[],intn);? ame); printf(""Inputfinalscore: "");scanf(""%d"",&stu[i].finalScore); printf(""Inputclassscore: "");scanf(""%d"",&stu[i].classScore);getchar();printf(""Classcadreor not? (Y/N): "");scanf(""%c"",&stu[i].work);getchar(); printf(""StudentsfromtheWestornot? (Y/N): "");scanf(""%c"",&stu[i].west);getchar(); printf(""Inputthenumberofpublishedpapers: "");scanf(""%d"",&stu[i].paper); stu[i].scholarship=0; if(stu[i].finalScore>80&&stu[i].paper>=1)stu[i].scholarship+=8000; if(stu[i].finalScore>85&&stu[i].classScore>80)stu[i].scholarship+=4000; if(stu[i].finalScore>90)stu[i].scholarship+=2000; if(stu[i].finalScore>85&&stu[i].west=='Y')stu[i].scholarship+=1000; if(stu[i].classScore>80&&stu[i].work=='Y')stu[i].scholarship+=850;printf(""name: %s,scholarship: %d\n"",stu[i].name,stu[i].scholarship); intts=stu[0].scholarship,k; for(i=1;i if(ts k=i; } } printf(""%sgetthehighestscholarship%d\n"",stu[k].name,stu[k].scholarship); /* 1)院士奖学金: 期末平均成绩高于80分(>80),并且在本学期内发表1篇或1篇以上论文的学生每人均可获得8000元; 2)五四奖学金: 期末平均成绩高于85分(>85),并且班级评议成绩高于80分(>80)的学生每人均可获得4000元; 3)成绩优秀奖: 期末平均成绩高于 4)西部奖学金: 期末平均成绩高于 90分(>90)的学生每人均可获得2000元; 85分(>85)的西部省份学生每人均可获得1000 元; 5)班级贡献奖: 班级评议成绩高于80分(>80)的学生干部每人均可获得850元; */return0; "/* 请编写一个简单的23根火柴游戏程序,实现人跟计算机玩这个游戏的程序。 为了方便程序自动评测,假设计算机移动的火柴数不是随机的,而是将剩余的火柴根数对3求余后再加1来作为计算机每次取走的火柴数。 如果计算机打算移走的火柴数等于剩下的火柴数,则将计算机打算移走的火柴数减1。 但是计算机不可以不取,剩下的火柴数为1时,必须取走1根火柴。 假设游戏规则如下: 1)游戏者开始拥有23根火柴棒; 2)每个游戏者轮流移走1根、2根或3根火柴; 3)谁取走最后一根火柴为失败者。 程序运行结果示例1: Gamestart! Note: themaximumnumberis3 Pleaseenterthenumberofmatchesyouaremoving: 5/ Thenumberyouenterediswrong,pleasere-enter! Pleaseenterthenumberofmatchesyouaremoving: 3/ Thenumberofmatchesyouaremovingis: 3 Thenumberofmatchesleftis: 20 Thenumberofmatchesthathavebeenmovedbythecomputeris: 3 Thenumberofmatchesleftis: 17 Pleaseenterthenumberofmatchesyouaremoving: Thenumberofmatchesyouaremovingis: 1 Thenumberofmatchesleftis: 16 Thenumberofmatchesthathavebeenmovedbythecomputeris: 2 Thenumberofmatchesleftis: 14 Pleaseenterthenumberofmatchesyouaremoving: 2/ Thenumberofmatchesyouaremovingis: 2 Thenumberofmatchesleftis: 12 Thenumberofmatchesthathavebeenmovedbythecomputeris: 1 Thenumberofmatchesleftis: 11 Pleaseenterthenumberofmatchesyouaremoving: 3/ Thenumberofmatchesyouaremovingis: 3 Thenumberofmatchesleftis: 8 Thenumberofmatchesthathavebeenmovedbythecomputeris: 3 Thenumberofmatchesleftis: 5 Pleaseenterthenumberofmatchesyouaremoving: 1/ Thenumberofmatchesyouaremovingis: 1 Thenumberofmatchesleftis: 4 Thenumberofmatchesthathavebeenmovedbythecomputeris: 2 Thenumberofmatchesleftis: 2 1/ Thenumberofmatchesyouaremovingis: 1 Thenumberofmatchesleftis: 1 Thenumberofmatchesthathavebeenmovedbythecomputeris: 1 Thenumberofmatchesleftis: 0Congratulations! Youwon! 程序运行结果示例2: 3 3 2 1 3 1 游戏开始提示信息: ""Gamestart! \n"" ""Note: themaximumnumberis3\n""提示游戏者输入移动的火柴数: ""Pleaseenterthenumberofmatchesyouaremoving: \n""游戏者输入错误数据的提示信息: ""Thenumberyouenterediswrong,pleasere-enter! \n""输入格式: ""%d"" 输出格式: 输出被计算机移动的火柴数: ""Thenumberofmatchesthathavebeenmovedbythecomputeris: %d\n"" 输出被游戏者或计算机移动后剩余的火柴数: ""Thenumberofmatchesleftis: %d\n""游戏者获胜的输出提示信息: ""Congratulations! Youwon! \n""游戏者失败的输出提示信息: ""I'msorry.Youlost! \n"" */ #include<> main() { printf(""Gamestart! \nNote: themaximumnumberis3\n""); inti,j,k,s=23,n,c; while (1) { printf(""Pleaseenterthenumberofmatchesyouaremoving: \n"");scanf(""%d"",&n); if(n<=3&&n>=1&&n<=s){ J } else{ printf(""Thenumberyouenterediswrong,please re-enter! \n""); continue; } s-=n; printf(""Thenumberofmatchesyouaremovingis: %d\nThenumberofmatchesleftis: %d\n"",n,s); if(s>0) { if(s==3) { c=2; } elseif(s==2){ c=1; } elseif(s==1){ c=1; } else { c=s%3+1; s-=c; printf(""Thenumberofmatchesthathavebeenmovedbythecomputeris: %d\nThenumberofmatchesleftis: %d\n"",c,s); if(s==0){ printf(""Congratulations! Youwon! \n"");break; } } elseif(s==0){ printf(""I'msorry.Youlost! \n"");break; } } }" "/*题目内容: 请输入星期几的第一个字母(不区分大小写)来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母(小写),否则输出“dataerror”。 程序运行结果示例1: pleaseinputthefirstletterofsomeday: s/ pleaseinputsecondletter: u/ sunday 程序运行结果示例2: pleaseinputthefirstletterofsomeday: F/ friday 程序运行结果示例2: pleaseinputthefirstletterofsomeday: h/ dataerror 第一个字母的输入提示信息: ""pleaseinputthefirstletterofsomeday: \n"" 第二个字母的输入提示信息: ""pleaseinputsecondletter: \n""用户输入错误提示信息: ""dataerror\n"" 输入格式: ""%c""(注意: %c前面有一个空格) 输出格式: 星期一: ""monday\n"" 星期二: ""tuesday\n"" 星期三: ""wednesday\n"" 星期四: ""thursday\n"" 星期五: ""friday\n"" 星期六: ""saturday\n"" 星期日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 语言程序设计 精髓 MOOC 慕课周 编程 答案