首页计算机计算机软件C语言程序设计 15 C语言第三次上机作业.docx

15 C语言第三次上机作业.docx

页数:7页文件大小:30.8 KB来源: C语言程序设计ppt课件

本课件布置第三次上机作业,要求用起泡法与选择法对十个整数递减排序,统计十名学生的各科成绩与平均分,统计三行文本中的大写辅音字母个数,不使用strcat连接两个字符串,并计算矩阵除副对角线、最后一行与最后一列以外元素之和,随后给出完整参考答案代码。

第三次上机作业页,列出排序成绩统计辅音统计字符串连接与矩阵运算五题
思考题页,说明滤除非十六进制字符后转十进制的要求
参考答案页,给出起泡法与选择法递减排序的源程序
查看本课件的文字版(共 7 页,供检索与复制)

第1页:第三次上机作业题目

第三次上机作业(2014)要求:独立完成,上机调试通过后上交;以附件形式压缩打包提交;程序必须采用缩进格式。

  • 1. 排序:使用起泡法和选择法对 10 个整数实现递减排序
  • 2. 统计:输入 10 名学生的数学(MT)、英语(EN)、物理(PH)成绩,输出学号(NO)、各科成绩、总成绩(SUM)、平均分(AVE)及是否每科都超过 90 分(Y/N)
  • 3. 统计大写辅音字母个数:3 行文本,每行不超过 80 字符,输入 HELLO IT 12 uieiaba 输出 There are 4 capital consonant letters in this paper
  • 4. 字符串连接:连接两个字符串,不使用库函数 strcat()
  • 5. 矩阵运算:读入 n 阶方阵(1≤n≤6),计算除副对角线、最后一列和最后一行以外的所有元素之和

第2页:思考题:十六进制转换十进制

思考题:十六进制转换十进制:输入一个字符串(长度不超过 80),滤去所有的非十六进制字符后组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。例:输入 Ha4-1 输出 2625。

第3页:参考答案:起泡与选择排序

 #include <stdio.h> #define N 10 void main() { int a[N], i, j, t; printf("Input N numbers:\n"); for (i = 0; i < N; i++) scanf("%d", &a[i]); for (j = 1; j <= N-1; j++) for (i = 0; i <= N-j-1; i++) if (a[i] > a[i+1]) { t = a[i]; a[i] = a[i+1]; a[i+1] = t; } printf("The sorted numbers:\n"); for (i = 0; i < N; i++) printf("%d ", a[i]); } for (i = 0; i < N-1; i++) { k = i; for (j = i+1; j < N; j++) if (a[j] < a[k]) k = j; if (i != k) { x = a[i]; a[i] = a[k]; a[k] = x; } }

第4页:参考答案:成绩统计

#include <stdio.h> #define N 30 #define M 3 void main() { int count, i, j; int s[N][M+4]; for (i = 0; i < N; i++) { printf("Input number:"); scanf("%d", &s[i][0]); printf("Input MT EN PH:"); for (j = 1; j <= M; j++) scanf("%d", &s[i][j]); } for (i = 0; i < N; i++) { s[i][M+1] = 0; count = 0; for (j = 1; j <= M; j++) { s[i][M+1] += s[i][j]; if (s[i][j] >= 90) count++; } s[i][M+2] = s[i][M+1] / M; if (count >= M) s[i][M+3] = 'Y'; else s[i][M+3] = 'N'; } }

第5页:参考答案:统计大写辅音

#include <stdio.h> #define MAXLEN 80 #define N 3 void main() { int count, i, j; char str[N][MAXLEN]; for (i = 0, count = 0; i < N; i++) { gets(str[i]); for (j = 0; str[i][j] != '\0'; j++) if (str[i][j] >= 'A' && str[i][j] <= 'Z' && str[i][j] != 'A' && str[i][j] != 'E' && str[i][j] != 'I' && str[i][j] != 'O' && str[i][j] != 'U') count++; } printf("%d\n", count); }

第6页:字符串连接与矩阵运算参考答案

gets(str1); puts("Input the second string:"); gets(str2); for (i = 0; str1[i] != '\0'; i++) ; for (j = 0; str2[j] != '\0'; ) str1[i++] = str2[j++]; str1[i] = '\0'; puts("The connected string is:"); puts(str1);

输入 Welcome to 与 China,输出 Welcome to China。

5. 矩阵运算:读入 n 阶方阵(1≤n≤6),计算除副对角线、最后一列和最后一行以外的所有元素之和。输入 4 阶方阵 1 4 3 2 / 1 1 6 5 / 1 8 1 7 / 1 1 1 1,输出 sum=35。

#include <stdio.h> #define N 6 void main() { int a[N][N], i, j, n, sum; scanf("%d", &n); for (i = 0; i < n; i++) for (j = 0; j < n; j++) scanf("%d", &a[i][j]); sum = 0; for (i = 0; i < n; i++) for (j = 0; j < n; j++) if (i == n-1 || j == n-1 || i+j == n-1) continue; else sum += a[i][j]; printf("sum=%d\n", sum); }

第7页:思考题参考答案

#include <stdio.h> #define MAXLEN 80 void main() { int i, k; long number; char str[MAXLEN], num[MAXLEN]; gets(str); for (k = 0, i = 0; str[i] != '\0'; i++) if (str[i] >= '0' && str[i] <= '9' || str[i] >= 'A' && str[i] <= 'F' || str[i] >= 'a' && str[i] <= 'f') num[k++] = str[i]; num[k] = '\0'; for (number = 0, i = 0; num[i] != '\0'; i++) { if (num[i] >= 'A' && num[i] <= 'F') k = num[i] - 'A' + 10; else if (num[i] >= 'a' && num[i] <= 'f') k = num[i] - 'a' + 10; else if (num[i] >= '0' && num[i] <= '9') k = num[i] - '0'; number = number * 16 + k; } printf("%ld\n", number); }
顶部目录