哈工大C语言程序设计精髓第六十二周编程题答案.docx
- 文档编号:5235505
- 上传时间:2022-12-14
- 格式:DOCX
- 页数:55
- 大小:57.75KB
哈工大C语言程序设计精髓第六十二周编程题答案.docx
《哈工大C语言程序设计精髓第六十二周编程题答案.docx》由会员分享,可在线阅读,更多相关《哈工大C语言程序设计精髓第六十二周编程题答案.docx(55页珍藏版)》请在冰豆网上搜索。
哈工大C语言程序设计精髓第六十二周编程题答案
6.1下面代码的功能是将百分制成绩转换为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; } 6.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的值。 #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; } 6.3 搬砖问题(4分) 题目内容: n块砖( 27 请用穷举法编程求解,n的值要求从键盘输入。 输出结果按照男人数量升序给出(见下面示例3)。 #include"stdio.h" main() { inta,b,c; longn,i,t,s=0; printf("Inputn(27 \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); } } 6.4 编程输出某年某月有多少天(考虑到闰年)。 (5分) 题目内容: 从键盘输入一个年份和月份,输出该月有多少天(考虑闰年),用switch语句编程。 #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"); } if((year%4==0&&year%100! =0||year%400==0)&&month==2)day=29; if(day! =-1) printf("%ddays\n",day); return0; } 7.1递归法计算游戏人员的年龄(4分) 题目内容: 有n个人围坐在一起,问第n个人多大年纪,他说比第n-1个人大2岁;问第n-1个人,他说比第n-2个人大2岁,.....,问第3个人,他说比第2个人大2岁;问第2个人,他说比第1个人大2岁。 第1个人说自己10岁,问第n个人多大年纪。 递归函数原型: unsignedintComputeAge(unsignedintn); 提示: 计算年龄的递归公式为: #include unsignedintComputeAge(unsignedintn){ } main() { inti,j,k,s=23,n,c,age; scanf("%d",&n); printf("Theperson'sageis%u\n",8+2*n); } 7.2递归法计算两个数的最大公约数(4分) 题目内容: 利用最大公约数的性质计算。 对正整数a和b,当a>b时,若a中含有与b相同的公约数,则a中去掉b后剩余的部分a-b中也应含有与b相同的公约数,对a-b和b计算公约数就相当于对a和b计算公约数。 反复使用最大公约数的上述性质,直到a和b相等为止,这时,a或b就是它们的最大公约数。 这三条性质,也可以表示为: 性质1 如果a>b,则a和b与a-b和b的最大公约数相同,即Gcd(a,b)=Gcd(a-b,b) 性质2 如果b>a,则a和b与a和b-a的最大公约数相同,即Gcd(a,b)=Gcd(a,b-a) 性质3 如果a=b,则a和b的最大公约数与a值和b值相同,即Gcd(a,b)=a=b #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)); } 7.3寻找中位数v1.0(4分) 题目内容: 编写一个函数返回三个整数中的中间数。 函数原型为: intmid(inta,intb,intc); 函数功能是返回a,b,c三数中大小位于中间的那个数。 输入格式: "%d%d%d" 输出格式: "Theresultis%d\n" 输入样例1: 12618↙ 输出样例1: The_result_is_12 输入样例2: -97-2↙ 输出样例2: The_result_is_-2 注意: 为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串! (注意: 在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。 ) #include intmedian(inta,intb,intc) { if(a {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈工大 语言程序设计 精髓 第六 十二 编程 答案