2022年哈工大-C语言程序设计精髓第六-十二周编程题答案.docx
《2022年哈工大-C语言程序设计精髓第六-十二周编程题答案.docx》由会员分享,可在线阅读,更多相关《2022年哈工大-C语言程序设计精髓第六-十二周编程题答案.docx(67页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆6.1 下面代码的功能是将百分制成果转换为5 分制成果,详细功能是:假如用户输入的是非法字符或者不在合理区间内的数据(例如输入的是 a,或者 102 ,或-45 等),就程序输出 Input error.,并答应用户 重新输入 ,直到输入合法数据为止,并将其转换为 5 分制输出;目前程序存在 错误 ,请将其修改正确;并依据下面给出的运行示例检查程序;#include #include int main char score100; int flag = 0, i, s; char grade; printfPlease
2、 input score:n; while 1 flag=0; scanf%s, score; for i = 0; i = 0 & scorei = 9 continue; 名师归纳总结 - - - - - - -第 1 页,共 44 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆 else flag = 1; break; s = atoiscore; if s 100 | flag = 1 printfInput error.n; printfPlease input score:n; continue; else break; s = atoiscore
3、; if s = 90 名师归纳总结 - - - - - - -第 2 页,共 44 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆 grade = A; else if s = 80 grade = B; else if s = 70 grade = C; else if s = 60 grade = D; else grade = E; printfgrade: %cn, grade; return 0; 名师归纳总结 - - - - - - -第 3 页,共 44 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆 6.2 编程
4、运算 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;ji;j+ p=p+a*pow10,j; q=p+q; printfsum=%.0fn,q; return 0; 6.3
5、搬砖问题( 4 分)题目内容:n 块砖 27n=77 ,36 人搬,男搬 4,女搬 3,两个小孩抬一块砖,要求一次搬完,问男人、女人和小孩各需多少人?请用穷举法编程求解,n 的值要求从键盘输入;输出结果依据男人数量升序给出(见下面示例3);#include stdio.h main 名师归纳总结 - - - - - - -第 4 页,共 44 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆int a, b, c; long n, i, t, s = 0; printfInput n27n=77:n; scanf%d, &n; for a = 0; 4 * a =
6、 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 printfmen=%d,women=%d,children=%dn, a, b, c; 6.4 编程输出某年某月有多少天(考虑到闰年);(5 分)题目内容:从键盘输入一个年份和月份,输出该月有多少天(#include int main int year,month,day; 考虑闰年 ),用 switch 语句编程;print
7、fInput year,month:n; scanf%d,%d ,&year,&month; switchmonth 名师归纳总结 case 1: day=31;break; 第 5 页,共 44 页case 2: day=28;break; case 3: day=31;break; - - - - - - -精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆case 4: day=30;break; case 5: day=31;break; Input error.n; case 6: day=30;break; case 7: day=31;break; ca
8、se 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 if year%4=0&year%100.=0|year%400=0&month=2 day=29; if day.=-1 printf %d daysn ,day; return 0; 7.1 递归法运算嬉戏人员的年龄(4 分)题目内容:有 n 个人围坐在一起,问第 n 个人多大年纪,他说比第 n-1 个人大 2 岁;问第
9、n-1 个人,他说比第 n-2 个人大 2 岁,., 问第 3 个人,他说比第 2 个人大 2 岁;问第 2 个人,他说比第 1 个人大 2 岁;第 1 个人说自己 10 岁,问第 n 个人多大年纪;递归函数原型:unsigned int ComputeAgeunsigned int n;提示:运算年龄的递归公式为:#include unsignedint ComputeAgeunsignedint n main int i, j, k, s = 23, n, c, age; scanf %d , &n; printf The persons age is %un ,8+2*n; 7.2 递归
10、法运算两个数的最大公约数(4 分)题目内容:名师归纳总结 - - - - - - -第 6 页,共 44 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆利用最大公约数的性质运算;对正整数a 和 b ,当 ab 时,如 a 中含有与b 相同的公约数,就a中去掉 b 后剩余的部分 a-b 中也应含有与 b 相同的公约数, 对 a-b 和 b 运算公约数就相当于对 a和 b 运算公约数;反复使用最大公约数的上述性质,直到 a 和 b 相等为止,这时,a 或 b 就是它们的最大公约数;这三条性质,也可以表示为:性质 1 假如 ab ,就 a 和 b 与 a-b 和 b
11、的最大公约数相同,即 性质 2 假如 ba ,就 a 和 b 与 a 和 b-a 的最大公约数相同,即Gcda, b = Gcda-b, b Gcda, b = Gcda, b-a 性质 3 假如 a=b ,就 a 和 b 的最大公约数与a 值和 b 值相同,即Gcda, b = a = b #include int gysint a,int b int r; r=a%b; if r=0 return b; else return gysb,r; main printf Input a,b: ; int a,b; scanf %d,%d , &a,&b; if a=0 | b=0 printf
12、 Input error.n ; else printf%dn,gysa,b; 7.3 查找中位数 v1.0 (4 分)题目内容:编写一个函数返回三个整数中的中间数;函数原型为:int midint a, int b, int c; 函数功能是返回 a,b, c 三数中大小位于中间的那个数;输入格式 : %d%d%d输出格式: The result is %dn输入样例 1:12 6 18 输出样例 1:The_result_is_12名师归纳总结 - - - - - - -第 7 页,共 44 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆输入样例 2:-9
13、7 -2 输出样例 2:The_result_is_-2留意:为防止显现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式掌握字符串!(留意:在输出中,“ _”代表空格,假如直接将上段示例粘贴到代码中,应将其替换为空格;)#include int medianint a, int b, int c if ab if bc return b; else return ac. c: a; /acb: caa return a; /cab else return cb. c: b; /acb: abc main int a,b,c; scanf %d%d%d , &a,&b,&c; prin
14、tf The result is %dn ,median a,b,c; 7.4仍原算术表达式(4 分)题目内容:编写程序求以下算式中 XYZ 的值,其中两数 XYZ 与 YZZ 相加的和 n(99n1000 )的值要求从键盘输入;程序运行结果示例 1:名师归纳总结 - - - - - - -第 8 页,共 44 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆Input nn1000:532 X=3,Y=2,Z=1程序运行结果示例 2:Input nn1000:977 Invalid输入提示: Input nn1000:n输入格式 : %d输出格式: X=%d,Y
15、=%d,Z=%dn运算不胜利 无解 的输出提示: Invalidn留意:为防止显现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式掌握字符串!#include main printf Input nn1000:n ; int a,b,c,n,s,x,y,z,flag=0; scanf %d , &n; for x=1;x=9;x+ for y=1;y=9;y+ for z=0;z=9;z+ if x*100+y*10+z+y*100+z*11 = n flag=1; a=x,b=y,c=z; break ; if flag X=%d,Y=%d,Z=%dn,a,b,c; printfe
16、lse printfInvalidn; 8.1 矩阵转置 v1.0 (4 分)名师归纳总结 - - - - - - -第 9 页,共 44 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆题目内容:用二维数组作为函数参数,编程运算并输出n n 阶矩阵的转置矩阵;其中,n 的值不超过10,n 的值由用户从键盘输入;程序运行结果示例 1:Input n: 3Input 3*3 matrix:1 2 3 4 5 6 7 8 9 The transposed matrix is: 1 4 7 2 5 8 3 6 9程序运行结果示例 2:Input n: 2Input 2*
17、2 matrix:1 24 5The transposed matrix is: 1 4 2 5#include int main printf Input n: ; int n; scanf %d ,&n; printf Input %d*%d matrix:n ,n,n; int mnn,i,j; for i=0;in;i+ for j=0;jn;j+ scanf %d ,&mij; printf The transposed matrix is:n ; for i=0;in;i+ for j=0;jn;j+ printf %4d ,mji; 名师归纳总结 - - - - - - -第 1
18、0 页,共 44 页精选学习资料 - - - - - - - - - 学而不思就惘,思而不学就殆printfn; return 0; 8.2 兔子生崽问题(4 分)题目内容:假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么假如每对成兔每个月都可以生一对小兔,一对新生的小兔从其次个月起就开头生兔子,试问从一对兔子开头繁衍,nn=12月以后可有多少对兔子(即当年第 n 月份总计有多少对兔子,含成兔和小兔) ?请编程求解该问题, n 的值要求从键盘输入;参考答案:依题意,兔子的繁衍情形如下列图;图中实线表示成兔仍是成兔或者小兔长成成兔;虚线表示成兔生小兔;观看分析此图可发觉如下规律:(1 )每
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022 哈工大 语言程序设计 精髓 第六 十二 编程 答案
限制150内