欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    2022年哈工大-C语言程序设计精髓第六-十二周编程题答案 .pdf

    • 资源ID:38630609       资源大小:316.88KB        全文页数:44页
    • 资源格式: PDF        下载积分:4.3金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要4.3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    2022年哈工大-C语言程序设计精髓第六-十二周编程题答案 .pdf

    学而不思则惘,思而不学则殆6.1 下面代码的功能是将百分制成绩转换为5 分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者 102 , 或-45 等) , 则程序输出 Input error!,并允许用户 重新输入 ,直到输入合法数据为止,并将其转换为5 分制输出。目前程序存在错误 ,请将其修改正确。并按照下面给出的运行示例检查程序。#include #include int main() char score100; int flag = 0, i, s; char grade; printf(Please 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 = atoi(score); if (s 100 | flag = 1) printf(Input error!n); printf(Please input score:n); continue; else break; s = atoi(score); 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; printf(grade: %cn, grade); return 0; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 44 页学而不思则惘,思而不学则殆 6.2 编程计算 a+aa+aaa+aaa (n 个 a)的值( 4 分)题目内容:编程计算a+aa+aaa+ +aaa(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*pow(10,j); q=p+q; printf(sum=%.0fn,q); return 0; 6.3搬砖问题( 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; printf(Input n(27n=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=%dn, a, b, c); 6.4 编程输出某年某月有多少天(考虑到闰年)。(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; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 44 页学而不思则惘,思而不学则殆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 daysn,day); return 0; 7.1 递归法计算游戏人员的年龄(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);提示:计算年龄的递归公式为:#include unsignedint ComputeAge(unsignedint 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 递归法计算两个数的最大公约数(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 的最大公约数相同,即Gcd(a, b) = Gcd(a-b, b) 性质 2 如果 ba,则 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 int gys(int a,int b) int r; r=a%b; if(r=0) return b; elsereturn gys(b,r); main() printf(Input a,b:); int a,b; scanf(%d,%d, &a,&b); if (a=0 | b=0) printf(Input error!n); else printf(%dn,gys(a,b); 7.3 寻找中位数v1.0 (4 分)题目内容:编写一个函数返回三个整数中的中间数。函数原型为:int mid(int 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 7 -2 输出样例 2:The_result_is_-2注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!(注意:在输出中,“_”代表空格,如果直接将上段示例粘贴到代码中,应将其替换为空格。)#include int median(int 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); printf(The result is %dn,median (a,b,c); 7.4还原算术表达式(4 分)题目内容:编写程序求以下算式中XYZ 的值,其中两数 XYZ 与 YZZ 相加的和 n (99n1000 ) 的值要求从键盘输入。程序运行结果示例1:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 8 页,共 44 页学而不思则惘,思而不学则殆Input n(n1000):532X=3,Y=2,Z=1程序运行结果示例2:Input n(n1000):977Invalid输入提示: Input n(n1000):n输入格式 : %d输出格式: X=%d,Y=%d,Z=%dn计算不成功 (无解 )的输出提示: Invalidn注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include main() printf(Input n(n1000):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) printf(X=%d,Y=%d,Z=%dn,a,b,c); else printf(Invalidn); 8.1 矩阵转置v1.0 (4 分)精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 9 页,共 44 页学而不思则惘,思而不学则殆题目内容:用二维数组作为函数参数,编程计算并输出nn 阶矩阵的转置矩阵。其中,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*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); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 10 页,共 44 页学而不思则惘,思而不学则殆printf(n); return 0; 8.2 兔子生崽问题(4 分)题目内容:假设一对小兔的成熟期是一个月,即一个月可长成成兔,那么如果每对成兔每个月都可以生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,n(n=12)月以后可有多少对兔子(即当年第n月份总计有多少对兔子,含成兔和小兔) ?请编程求解该问题, n 的值要求从键盘输入。参考答案:依题意,兔子的繁殖情况如图所示。图中实线表示成兔仍是成兔或者小兔长成成兔;虚线表示成兔生小兔。观察分析此图可发现如下规律:(1)每月小兔对数= 上个月成兔对数。(2)每月成兔对数= 上个月成兔对数+ 上个月小兔对数。综合( 1)和( 2)有:每月成兔对数= 前两个月成兔对数之和。用 fn(n=1, 2, )表示第n 个月成兔对数,于是可将上述规律表示为如下递推公式:#include int main() printf(Input n(n=12):n); int n,total=0,i,s=0,b=1,t; scanf(%d ,&n); printf(%4d ,1); for (i=2;i=n;i+) t=s; s=b; b=b+t; printf(%4d ,s+b); printf(nTotal=%dn,s+b); return 0; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 11 页,共 44 页学而不思则惘,思而不学则殆8.3 抓交通肇事犯(4 分)题目内容:一辆卡车违犯交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。现在请根据以上线索帮助警方找出车号以便尽快破案。 提示 :假设这个4 位数的前两位数字都是i ,后两位数字都是j ,则这个可能的4 位数k = 1000*i + 100*i + 10*j + j式中, i 和 j 都在 09 变化。此外,还应使k=m*m ,m是整数。由于k 是一个 4 位数,所以m值不可能小于31。输入格式 : 无输出格式:k=%d,m=%dn注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include int main() int i,j,k,m,tk,tm; for (i=0;i=9;i+) for (j=0;j=9;j+) for (m=31;m100;m+) k = 1000*i + 100*i + 10*j + j; if (i!=j & m*m=k) tm=m; tk=k; break; printf(k=%d,m=%dn,tk,tm); return 0; 8.4 检验并打印幻方矩阵。(4 分)题目内容:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 12 页,共 44 页学而不思则惘,思而不学则殆幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个55 的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。输入格式 : %d 输出格式:如果是幻方矩阵,输出提示信息: It is a magic square!n矩阵元素的输出:%4d (换行使用 n )如果不是幻方矩阵,输出提示信息: It is not a magic square!n输入样例 1:17_24_1_8_1523_5_7_14_164_6_13_20_2210_12_19_21_311_18_25_2_9(输人样例中 “_”代表空格 ) 输出样例 1:It is a magic square!*17*24*1*8*15*23*5*7*14*16*4*6*13*20*22*10*12*19*21*3*11*18*25*2*9(输出样例中 “*”代表空格 ) 输入样例 2:1_0_1_6_13_1_1_1_11_1_1_1_21_1_1_1_19_1_7_1_1(输人样例中 “_”代表空格 ) 输出样例 2:It is not a magic square!注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!(输人样例中 “_”代表空格,输出样例中“*”代表空格 )#include int main() int a55,i,j,t,row5=0,col5=0,dl1=0,dl2=0,flag=1; for (i=0;i5;i+) for (j=0;j5;j+) scanf(%d ,&aij); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 13 页,共 44 页学而不思则惘,思而不学则殆for (i=0;i5;i+) for (j=0;j5;j+) rowi+=aij; for (i=0;i5;i+) for (j=0;j5;j+) coli+=aji; for (i=0;i5;i+) dl1+=aii; dl2+=a4-i4-i; for (i=0;i4;i+) if (coli!=coli+1) flag=0; break; if (rowi!=rowi+1) flag=0; break; if (col1!=row1) flag=0; if (dl1!=dl2) flag=0; if (dl1!=col1) flag=0; if (flag) printf(It is a magic square!n); for (i=0;i5;i+) for (j=0;j5;j+) printf(%4d ,aij); printf(n); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 14 页,共 44 页学而不思则惘,思而不学则殆 else printf(It is not a magic square!n); return 0; 9.1 重复数字检查(4 分)题目内容:从键盘输入一个数, 检查这个数中是否有重复出现的数字。如果这个数中有重复出现的数字,则显示“ Repeated digit!”;否则显示“No repeated digit!”。已知函数原型:int CountRepeatNum(int count, int n);若有重复数字,则该函数返回重复出现的数字;否则返回-1.程序运行结果示例1:Input n:28212 Repeated digit!程序运行结果示例2:Input n:12345 No repeated digit!输入提示: Input n:n 输入格式 : %ld输出格式:有重复数字,输出信息: Repeated digit!n没有重复数字,输出信息: No repeated digit!n注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include int main() int log10= 0,a100; int b,i=0,n,c,d; printf(Input n:n); scanf(%d ,&n); while(n!=0) b=n%10; 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 15 页,共 44 页学而不思则惘,思而不学则殆n/=10; ai=b; i+; ai=n; int flag=0; for(c=0; ci; c+) for (d=c+1; di; d+) if(ac=ad) flag=1; break ; /if (a0 = ai-1|a0 = a1) flag=1; if (flag) printf(Repeated digit!n); else printf(No repeated digit!n); 9.2 教授的课( 4 分)题目内容:教授正在为一个有N个学生的班级讲授离散数学课。他对某些学生缺乏纪律性很不满意,于是决定:如果课程开始后上课的人数小于K,就取消这门课程。从键盘输入每个学生的到达时间,请编程确定该课程是否被取消。如果该门课程被取消,则输出“Yes” , 否则输出 “No” 。假设教授在时刻0 开始上课。 如果一个学生的到达时间是非正整数,则表示该学生在上课前进入教室。 如果一个学生的到达时间是正整数,则表示该学生在上课后进入教室。如果一个学生在时刻0 进入教室,也被认为是在上课前进入教室。假设到达时间的绝对值不超过100,学生数 N不超过 1000。要求在输入学生的到达时间之前,先输入N和 K。已知函数原型:/ 函数功能:根据数组a 中记录的学生到达时间确定课程是否被取消,取消则返回1,否则返回0int IsCancel(int a, int n, int k);程序运行结果示例1:Input n,k:4,3-1 -3 4 2 YES程序运行结果示例2:精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 16 页,共 44 页学而不思则惘,思而不学则殆Input n,k:5,3-1 -2 -3 0 4 NO输入提示: Input n,k:n 输入格式 : %d,%d%d输入包括两行数据:第 1 行是 n,k 的值。第 2 行是学生的到达时间。输出格式:课程被取消,输出YES课程不取消,输出NO注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include int IsCancel(int a, int n, int k) int i,s=0; for (i=0;in;i+) if (ai=0) s+; if (sk) return 1; elsereturn 0; int main() int a100; int i,n,k; printf(Input n,k:n); scanf(%d,%d,&n,&k); for (i=0;in;i+) scanf(%d ,&ai); if(IsCancel(a,n,k) printf(YES ); else printf(NO ); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 17 页,共 44 页学而不思则惘,思而不学则殆return 0; 9.3 寻找鞍点( 4 分)题目内容:请编程找出一个M*N矩阵中的鞍点, 即该位置上的元素是该行上的最大值,是该列上的最小值。如果矩阵中没有鞍点,则输出“No saddle point!”已知函数原型:void FindSaddlePoint(int aN, int m, int n);在该函数中输出有无鞍点的信息。程序运行结果示例1:Input m,n:3,3Input matrix:1 2 3 4 5 6 7 8 9 a02 is 3程序运行结果示例2:Input m,n:3,4Input matrix:3 4 7 5 0 1 8 2 9 3 2 6 No saddle point!输入提示:Input m,n:n“Input matrix:n 输入格式 : 输入矩阵大小:%d,%d输入矩阵元素:%d输出格式:找到鞍点的输出格式:a%d%d is %dn 没找到鞍点的输出格式:No saddle point!n注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 18 页,共 44 页学而不思则惘,思而不学则殆#include main() int a100100,m; int n,i,j,k,max,flag=0,shit=0,l; printf(Input m,n:n); scanf(%d,%d,&n,&l); printf(Input matrix:n); for(i=0; in; i+) for (j=0; jl; j+) scanf(%d ,&aij); for(i=0; in; i+) flag=0; m=ai0; for (j=0; jm) m=aij; max=j; for(k=0; kn; k+) if (akmax=m & k!=i) flag=1; break; if(flag=0) printf(a%d%d is %dn,i,max,m);shit=1;break; if (shit=0) printf(No saddle point!n); 9.4 统计重复字符(4 分)题目内容:输入一串字符(字符数小于80),以回车表示输入结束,编程计算并输出这串字符中连续重复次数最多的字符和重复次数。如果重复次数最多的字符有两个,则输出最后出现的那一个。已知函数原型:/函数功能:统计字符串中连续重复次数最多的字符及其重复的次数精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 19 页,共 44 页学而不思则惘,思而不学则殆/函数参数: str 指向待统计的字符串,指针形参tag 返回重复字符最后出现的下标位置/函数返回值:返回字符重复的次数int CountRepeatStr(char str, int *tag);求解思路:设置一个计数器,遍历字符串中的所有字符,若stri = stri+1,则计数器加1,同时判断计数器的值是否大于记录的最大重复次数max ,若大于,则用计数器的值更新max ,并记录该字符最后出现的位置i+1. 若 stri != stri+1,则计数器重新初始化为1。遍历结束时,函数返回max的值。程序运行结果示例1:Input a string:23444555555:5程序运行结果示例2:Input a string:sgf2222572:4输入提示信息:Input a string:n输入格式 : 用 gets() 输入字符串输出格式: %c:%dn注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include #include int main() char a80; int b, i,j,t=1,tl,num=0; printf(Input a string:n); gets(a); for (i=0;istrlen(a);i+) t=1; for (j=i+1;jtl) tl=t; num=i; printf(%c:%dn, anum,tl); 10.1 数字字符串转换为整型数(4 分)题目内容:从键盘输入一串字符(假设字符数少于8 个),以回车表示输入结束,编程将其中的数字部分转换为整型数并以整型的形式输出。函数原型为int Myatoi(char str);其中,形参数组str 对应用户输入的字符串,函数返回值为转换后的整型数。解题思路的关键是: 1)判断字符串中的字符是否是数字字符;2)如何将数字字符转换为其对应的数字值;3)如何将每一个转换后的数字值加起来形成一个整型数。程序运行结果示例1:Input a string: 7hg09y709程序运行结果示例2:Input a string: 9w2k7m09270程序运行结果示例3:Input a string: happy0输入提示信息:Input a string: 输入格式 : %7s 输出格式: %dn 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include #include #include int Myatoi(char str) int i,j; for (i=0,j=0;stri!=0;i+) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 21 页,共 44 页学而不思则惘,思而不学则殆if (stri =0 & stri=9) strj=stri; j+; strj=0; return atoi(str); int main() char s7; printf(Input a string:); scanf(%7s , s); printf(%d , Myatoi(s); printf(n); return 0; 奇偶数分离( 4 分)题目内容:输入 n 个整数(n 从键盘输入, 假设 n 的值不超过100),按奇偶数分成两组并输出。输出两行,第一行为所有奇数,第二行为所有偶数,保持数据的相对顺序与输入顺序相同。函数原型如下所示:void Seperate(int a, int n); /数组 a 存放用户输入的n 个整数解题思路: 用两个循环分别输出奇数和偶数,在输出第一个数时用%d 格式字符, 在输出其余数时用,%d格式字符,用标志变量记录和判断是否是第一个奇数或偶数。程序运行结果示例1:Input n: 7Input numbers: 5 9 47 82 0 6 75,9,47,782,0,6程序运行结果示例2:Input n: 8Input numbers: -2 3 5 0 23 62 79 833,5,23,79,83-2,0,62输入提示信息:Input n: Input numbers: 输入格式 : %d 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 22 页,共 44 页学而不思则惘,思而不学则殆每行第一个数据的输出格式:%d 每行第二个及以后数据的输出格式:,%d 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include #include int main() int n, i, j, k, o, e; printf(Input n:); scanf(%d , &n); printf(Input numbers:); char sn, oddn, evenn; for (i = 0, j = 0, k = 0; i n; i+) scanf(%d , &si); if (si % 2 = 0) /even evenk+ = si; e = k; else oddj+ = si; o = j; evene = 0; oddo = 0; for (i = 0; i o; i+) if (i = 0) printf(%d , oddi); else printf(,%d, oddi); printf(n); for (i = 0; i e; i+) if (i = 0) 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 23 页,共 44 页学而不思则惘,思而不学则殆printf(%d , eveni); else printf(,%d, eveni); return 0; 10.3 颠倒句子中的单词顺序(4 分)题目内容:从键盘输入一个句子(假设字符数小于100 个),句子中的单词之间用空格分隔,句子必须以一个标点符号作为结尾,句子开头和末尾标点符号前均没有空格,以回车表示输入结束,请编程颠倒句中的单词顺序并输出。函数原型: int Inverse(char str1, char str2N)函数功能:将str1中的单词颠倒顺序后分别存入str2的每一行,返回str1中的单词数。程序运行结果示例1:Input a sentence:you can cage a swallow cant you?you cant swallow a cage can you?程序运行结果示例2:Input a string:you are my sunshine!sunshine my are you!程序运行结果示例3:Input a sentence:I love you!you love I!输入提示信息:Input a sentence: 输入格式 : 用 gets() 函数输出格式:每个单词的输出格式:%s (注意:%s 后面有一个空格) 最后一个单词和标点符号的输出格式:%s%cn 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字符串!#include #include 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 24 页,共 44 页学而不思则惘,思而不学则殆/ 逆转字符串char * Reverse(char *str, int len) if (str = NULL | len = 0) return str; char *pLast = str + len - 1; char *pBegin = str; while (pBegin pLast) char temp = *pBegin; *pBegin = *pLast; *pLast = temp; + pBegin; - pLast; return str; / 逆转句子char * ReverseSentence(char *str) if (str = NULL) return str; / 逆转整个句子Reverse(str, strlen(str); / 逆转各个单词char *pBegin = str; char *pEnd = str; while (*pEnd != 0) while (*pEnd != 0 & *pEnd != ) +pEnd; / 逆转单词Reverse(pBegin, pEnd - pBegin); 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 25 页,共 44 页学而不思则惘,思而不学则殆if (*pEnd = 0) break; +pEnd; pBegin = pEnd; return str; int main() printf(Input a sentence:); char str100,tmp; gets(str); tmp=strstrlen(str)-1; strstrlen(str)-1=0; printf(%s%c ,ReverseSentence(str),tmp); return 0; 10.4 蛇形矩阵( 4 分)题目内容:从键盘任意输入一个自然数n(n 表示矩阵的大小,假设不超过100),请编程输出一个n*n 的蛇形矩阵。如果输入的n 不是自然数或者输入了不合法的数字,则输出Input error!。函数原型:void ZigzagMatrix(int aN, int n);函数功能:计算n*n 的蛇形矩阵提示:用两个双重循环分别计算n*n 矩阵的左上三角和右下三角,设置一个计数器从1 开始记录当前要写入矩阵的元素值,每次写完一个计数器加1,在计算左上角和右下角矩阵元素时,分奇数和偶数两种情况考虑待写入的元素在矩阵中的行列下标位置。程序运行结果示例1:Input n:51 2 6 7 15 3 5 8 14 16 4 9 13 17 2210 12 18 21 2311 19 20 24 25精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 26 页,共 44 页学而不思则惘,思而不学则殆程序运行结果示例2:I

    注意事项

    本文(2022年哈工大-C语言程序设计精髓第六-十二周编程题答案 .pdf)为本站会员(C****o)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开