哈工大 C语言程序设计精髓 MOOC慕课 6-12周编程题答案
更新时间:2024-05-04 16:54:01 阅读量: 综合文库 文档下载
- 哈工大推荐度:
- 相关推荐
6.1 \下面代码的功能是将百分制成绩转换为5分制成绩,具体功能是:如果用户输入的是非法字符或者不在合理区间内的数据(例如输入的是a,或者102,或-45等),则程序输出 Input error!,并允许用户重新输入,直到输入合法数据为止,并将其转换为5分制输出。目前程序存在错误,请将其修改正确。并按照下面给出的运行示例检查程序。 */
#include
char score[100];
int flag = 0, i, s; char grade;
printf(\ while (1) {
flag=0; scanf(\
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(\printf(\ 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(\
return 0; }\
6.2 \#include
int n,a,i,j; double p=0,q=0; printf(\scanf( \ for(i=1;i<=n;i++) {
for(j=0,p=0;j
p=p+a*pow(10,j); } q=p+q; }
printf(\ return 0; }\6.3 \
n块砖( 27 程序的运行结果示例1: Input n(27 men=0,women=4,children=32 程序的运行结果示例2: Input n(27 men=3,women=3,children=30 程序的运行结果示例3: Input n(27 men=2,women=14,children=20 men=7,women=7,children=22 men=12,women=0,children=24 输入提示: \ 输入格式: \ 输出格式:\*/ #include \main() { printf(\ long n, i, t, s = 0; scanf(\ int a, 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(\ } }\ 6.4 \int main() {int year,month,day; printf(\scanf(\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(\} if((year%4==0&&year0!=0||year@0==0)&&month==2) if (day!=-1) printf(\ day=29; return 0; }\ 7.1 \ unsigned int ComputeAge(unsigned int n){ } main() { int i, j, k, s = 23, n, c, age; scanf(\ printf(\ }\ 7.2 \int gys(int a,int b) { int r; r=a%b; if(r==0) return b; else return gys(b,r); } main() { printf(\ int a,b; scanf(\ if (a<=0 || b<=0){ printf(\ } else printf(\ }\ 7.3 \int median(int a, int b, int c) { if(a if(b else{return a if(c>a){return a;}//c>a>b else{return c>b? c: b;}//a>c>b: a>b>c } } main() { int a,b,c; scanf(\ printf(\ }\ 7.4 \main() { printf(\ int a,b,c,n,s,x,y,z,flag=0; scanf(\ 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(\ else printf(\ }\ 8.1 \用二维数组作为函数参数,编程计算并输出n×n阶矩阵的转置矩阵。其中,n的值不超过10,n的值由用户从键盘输入。 程序运行结果示例1: Input n:3↙ Input 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:2↙ Input 2*2 matrix: 1 2↙ 4 5↙ The transposed matrix is: 1 4 2 5 输入提示信息: 提示输入矩阵的阶数:\ 提示输入矩阵数据:\输入格式: \ 输出提示信息:\输出格式:\#include scanf(\ printf(\ int m[n][n],i,j; for (i=0;i scanf(\ } } printf(\ for (i=0;i printf(\ } printf(\ } return 0; }\ 8.2 \用二维数组作为函数参数,编程计算并输出n×n阶矩阵的转置矩阵。其中,n的值不超过10,n的值由用户从键盘输入。 程序运行结果示例1: Input n:3↙ Input 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:2↙ Input 2*2 matrix: 1 2↙ 4 5↙ The transposed matrix is: 1 4 2 5 输入提示信息: 提示输入矩阵的阶数:\ 提示输入矩阵数据:\输入格式: \ 输出提示信息:\输出格式:\#include printf(\ int n,total=0,i,s=0,b=1,t; scanf(\ printf(\ for (i=2;i<=n;i++){ t=s; s=b; b=b+t; printf(\ } printf(\ return 0; }\8.3 \ 一辆卡车违犯交通规则,撞人后逃跑。现场有三人目击事件,但都没记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是位数学家,他说:四位的车号刚好是一个整数的平方。现在请根据以上线索帮助警方找出车号以便尽快破案。 [提示]:假设这个4位数的前两位数字都是i,后两位数字都是j,则这个可能的4位数 k = 1000*i + 100*i + 10*j + j 式中,i和j都在0~9变化。此外,还应使k=m*m,m是整数。由于k是一个4位数,所以m值不可能小于31。 输入格式: 无 输出格式:\*/ #include 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){ tm=m; tk=k; break; } } } } printf(\ return 0; }\8.4 \ 幻方矩阵是指该矩阵中每一行、每一列、每一对角线上的元素之和都是相等的。从键盘输入一个5×5的矩阵并将其存入一个二维整型数组中,检验其是否为幻方矩阵,并将其按指定格式显示到屏幕上。 输入格式: \输出格式: 如果是幻方矩阵,输出提示信息: \矩阵元素的输出: \(换行使用\) 如果不是幻方矩阵,输出提示信息: \输入样例1: 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 (输人样例中“_”代表空格) 输出样例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_1 3_1_1_1_1 1_1_1_1_2 1_1_1_1_1 9_1_7_1_1 (输人样例中“_”代表空格) 输出样例2: It is not a magic square! 注意:为避免出现格式错误,请直接拷贝粘贴上面给出的输入、输出提示信息和格式控制字 符串! (输人样例中“_”代表空格,输出样例中“*”代表空格) */ #include int a[5][5],i,j,t,row[5]={0},col[5]={0},dl1=0,dl2=0,flag=1; for (i=0;i<5;i++){ for (j=0;j<5;j++){ scanf(\ } } for (i=0;i<5;i++){ for (j=0;j<5;j++){ row[i]+=a[i][j]; } } for (i=0;i<5;i++){ for (j=0;j<5;j++){ col[i]+=a[j][i]; } } for (i=0;i<5;i++){ dl1+=a[i][i]; dl2+=a[4-i][4-i]; } for (i=0;i<4;i++){ if (col[i]!=col[i+1]){ flag=0; break; } if (row[i]!=row[i+1]){ flag=0; break; } } if (col[1]!=row[1]){ flag=0; } if (dl1!=dl2){ flag=0; } if (dl1!=col[1]){ flag=0; } if (flag){ printf(\ for (i=0;i<5;i++){ for (j=0;j<5;j++){ printf(\ } printf(\ } } else{ printf(\ } return 0; }\ 9.1 \ 从键盘输入一个数,检查这个数中是否有重复出现的数字。如果这个数中有重复出现的数字, 则显示“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! 输入提示:\输入格式: \输出格式: 有重复数字,输出信息: \没有重复数字,输出信息: \*/ #include { int log[10]= {0},a[100]; int b,i=0,n,c,d; printf(\ scanf(\ while(n!=0) { b=n; n/=10; a[i]=b; i++; } a[i]=n; int flag=0; for(c=0; c if(a[c]==a[d]) { flag=1; break; } } //if (a[0] == a[i-1]||a[0] == a[1]) flag=1; if(flag) printf(\else printf(\ }\9.2 \ 教授正在为一个有N个学生的班级讲授离散数学课。他对某些学生缺乏纪律性很不满意,于是决定:如果课程开始后上课的人数小于K,就取消这门课程。从键盘输入每个学生的到达时间,请编程确定该课程是否被取消。如果该门课程被取消,则输出“Yes”,否则输出“No”。假设教授在时刻0开始上课。如果一个学生的到达时间是非正整数,则表示该学生在上课前进入教室。如果一个学生的到达时间是正整数,则表示该学生在上课后进入教室。如果一个学生在时刻0进入教室,也被认为是在上课前进入教室。假设到达时间的绝对值不超过100,学生数N不超过1000。要求在输入学生的到达时间之前,先输入N和K。 已知函数原型: //函数功能:根据数组a中记录的学生到达时间确定课程是否被取消,取消则返回1,否则返回0 int IsCancel(int a[], int n, int k); 程序运行结果示例1: Input n,k: 4,3↙ -1 -3 4 2↙ YES 程序运行结果示例2: Input n,k: 5,3↙ -1 -2 -3 0 4↙ NO 输入提示:\输入格式: \\ 输入包括两行数据: 第1行是n,k的值。 第2行是学生的到达时间。 输出格式: 课程被取消,输出\课程不取消,输出\*/ #include int IsCancel(int a[], int n, int k){ int i,s=0; for (i=0;i else return 0; } int main() { int a[100]; int i,n,k; printf(\ scanf(\ for (i=0;i if(IsCancel(a,n,k)) printf(\else printf(\ }\9.3 \ 请编程找出一个M*N矩阵中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。如果矩阵中没有鞍点,则输出“No saddle point!” 已知函数原型: void FindSaddlePoint(int a[][N], int m, int n); 在该函数中输出有无鞍点的信息。 程序运行结果示例1: Input m,n: 3,3↙ Input matrix: 1 2 3 4 5 6 7 8 9 a[0][2] is 3 程序运行结果示例2: Input m,n: 3,4↙ Input matrix: 3 4 7 5 0 1 8 2 9 3 2 6 No saddle point! 输入提示: \ “Input matrix:\\n\输入格式: 输入矩阵大小: \输入矩阵元素: \输出格式: 找到鞍点的输出格式:\没找到鞍点的输出格式:\*/ #include int a[100][100],m; int n,i,j,k,max,flag=0,shit=0,l; printf(\ scanf(\printf(\for(i=0; i scanf(\for(i=0; i flag=0; m=a[i][0]; for(j=0; j m=a[i][j]; max=j; } for(k=0; k if(a[k][max]<=m &&k!=i) { flag=1; break; } } if(flag==0){ printf(\ } } if (shit==0) printf(\}\9.4 \ 输入一串字符(字符数小于80),以回车表示输入结束,编程计算并输出这串字符中连续重复次数最多的字符和重复次数。如果重复次数最多的字符有两个,则输出最后出现的那一个。 已知函数原型: //函数功能:统计字符串中连续重复次数最多的字符及其重复的次数 //函数参数:str指向待统计的字符串,指针形参tag返回重复字符最后出现的下标位置 //函数返回值:返回字符重复的次数 int CountRepeatStr(char str[], int *tag); 求解思路:设置一个计数器,遍历字符串中的所有字符,若str[i] == str[i+1],则计数器加1,同时判断计数器的值是否大于记录的最大重复次数max,若大于,则用计数器的值更新max,并记录该字符最后出现的位置i+1.若str[i] != str[i+1],则计数器重新初始化为1。遍历结束时,函数返回max的值。 程序运行结果示例1: Input a string: 2344455555↙ 5:5 程序运行结果示例2: Input a string: sgf222257↙ 2:4 输入提示信息:\输入格式: 用gets()输入字符串 输出格式:\*/ #include int main() { char a[80]; int b, i,j,t=1,tl,num=0; printf(\ gets(a); for (i=0;i for (j=i+1;j if (t>tl){ tl=t; num=i; } } } printf(\}\ 10.1 \/* 从键盘输入一串字符(假设字符数少于8个),以回车表示输入结束,编程将其中的数字部分转换为整型数并以整型的形式输出。 函数原型为 int Myatoi(char str[]); 其中,形参数组str[]对应用户输入的字符串,函数返回值为转换后的整型数。 解题思路的关键是:1)判断字符串中的字符是否是数字字符;2)如何将数字字符转换为其对应的数字值;3)如何将每一个转换后的数字值加起来形成一个整型数。 程序运行结果示例1: Input a string:7hg09y↙ 709 程序运行结果示例2: Input a string:9w2k7m0↙ 9270 程序运行结果示例3: Input a string:happy↙ 0 输入提示信息:\输入格式: \输出格式:\*/ #include for (i=0,j=0;str[i]!='\\0';i++){ if (str[i] >='0' && str[i]<='9'){ str[j]=str[i]; j++; } } str[j]='\\0'; return atoi(str); } int main() { char s[7]; printf(\scanf(\printf(\ printf(\ return 0; }\ 10.2 \/*输入n个整数(n从键盘输入,假设n的值不超过100),按奇偶数分成两组并输出。输出两行,第一行为所有奇数,第二行为所有偶数,保持数据的相对顺序与输入顺序相同。 函数原型如下所示: void Seperate(int a[], int n); //数组a[]存放用户输入的n个整数 解题思路:用两个循环分别输出奇数和偶数,在输出第一个数时用\格式字符,在输出其余数时用\格式字符,用标志变量记录和判断是否是第一个奇数或偶数。 程序运行结果示例1: Input n:7↙ Input numbers:5 9 47 82 0 6 7↙ 5,9,47,7 82,0,6 程序运行结果示例2: Input n:8↙ Input numbers:-2 3 5 0 23 62 79 83↙ 3,5,23,79,83 -2,0,62 输入提示信息:\ \ 输入格式: \ 每行第一个数据的输出格式:\每行第二个及以后数据的输出格式:\#include int n, i, j, k, o, e; printf(\scanf(\printf(\ char s[n], odd[n], even[n]; for (i = 0, j = 0, k = 0; i < n; i++) { scanf(\ if (s[i] % 2 == 0) //even { even[k++] = s[i]; e = k; } else { odd[j++] = s[i]; o = j; } } even[e] = '\\0'; odd[o] = '\\0'; for (i = 0; i < o; i++) { if (i == 0) { printf(\ } else { printf(\ } } printf(\ for (i = 0; i < e; i++) { if (i == 0) { printf(\ } else { printf(\ } } return 0; }\ 10.3 \/*从键盘输入一个句子(假设字符数小于100个),句子中的单词之间用空格分隔,句子必须以一个标点符号作为结尾,句子开头和末尾标点符号前均没有空格,以回车表示输入结束,请编程颠倒句中的单词顺序并输出。 函数原型:int Inverse(char str1[], char str2[][N]) 函数功能:将str1中的单词颠倒顺序后分别存入str2的每一行,返回str1中的单词数。 程序运行结果示例1: Input a sentence:you can cage a swallow can't you?↙ you can't 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! 输入提示信息:\输入格式: 用gets()函数 输出格式: 每个单词的输出格式:\ (注意: %s后面有一个空格) 最后一个单词和标点符号的输出格式:\#include 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')
正在阅读:
哈工大 C语言程序设计精髓 MOOC慕课 6-12周编程题答案05-04
博大考神2014年职称英语考试模拟题十12-18
2017-2018学年高一化学人教版必修二教学案:第四章 第一节 开发利用金属矿物和海水资源 Word版含答案10-19
学习奥数03-21
2006—2007学年第二学期优秀学生奖学金获奖名单06-26
高中学习小组学习计划范文(标准版)4篇05-04
第一次为荣誉而战作文06-20
2017-2023年中国交流电机行业市场调研及战略规划投资预测报告(目录)12-14
茂名市2011年第二次高考模拟考试语文试题与答案(word版)05-14
从儿童视角分析托尼莫里森《最蓝的眼睛》04-24
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 哈工大
- 精髓
- 程序设计
- 答案
- 语言
- 编程
- MOOC
- 12
- 廊坊现代农业园区建设思路-稿模板
- 2016年高中学业水平考试信息技术学科模拟题一(带答案)
- MM面试问题集合
- 年产 50mw 太阳能电池片、电池组件、发电系统等光电系列产品生产
- 缴费通知单
- 核心力量训练在高考体育训练中的应用 资料
- 2009-2014年中考英语试卷分类汇编 定语从句试题试卷
- 2014年绍兴市中考科学试题及参考答案 - 图文
- 上海·创智天地 - 图文
- 金融和金融管理专业毕的业论文参考选题
- 计算机网络安全技术试卷全(含答案)
- 2013年江苏省高考语文试题解析
- 《村居》教学设计
- 35kV降压变电站综合自动化系统设计
- 食品安全承诺书(共12篇)
- 机器人正运动学方程的D-H表示法
- 提高交叉口通行能力的具体方法及实例分析
- 材料科学基础习题1 - 图文
- 提高RS485总线可靠性的几种方法及常见故障处理
- Matlab命令大全-按字母顺序