实验4
实验任务1:
问题1:是连续存放 两者相同
问题2:是连续存放 相同 相差16 地址位置差了16字节
实验任务2:
问题1:形参:x[] 实参:x
问题2:input将键入的n个数存入数组 compute是计算数组内除去最高最低值后的平均值
实验任务3:
问题1:形参:x[][N] 实参:x
问题2:不可省略
问题3:output将n*n的数组挨个输出 init将value的值赋给数组
实验任务4:
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #define N 100 4 void input(int x[], int n); 5 double median(int x[], int n); 6 // 函数声明 7 // 待补足 8 // xxx 9 10 int main() { 11 int x[N]; 12 int n; 13 double ans; 14 15 while (printf("Enter n: "), scanf("%d", &n) != EOF) { 16 input(x, n); // 函数调用 17 ans = median(x, n); // 函数调用 18 printf("ans = %g\n\n", ans); 19 } 20 21 return 0; 22 } 23 24 void input(int x[], int n) { 25 for (int i = 0; i < n; ++i) { 26 scanf("%d", &x[i]); 27 } 28 } 29 30 31 double median(int x[], int n) { 32 int i, j, t; 33 for (j = 0; j < n - 1; j++) 34 for (i = 0; i < n - j - 1; i++) 35 if (x[i] > x[i + 1]) { 36 t = x[i]; 37 x[i] = x[i + 1]; 38 x[i + 1] = t; 39 } 40 if (n % 2 == 0) 41 return (x[n/2-1] + x[n / 2]) / 2.0; 42 else 43 return x[n/ 2]; 44 45 } 46 // 函数定义 47 // 待补足 48 // xxx
实验任务5:
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #define N 100 4 5 // 函数声明 6 void input(int x[][N], int n); 7 void output(int x[][N], int n); 8 void rotate_to_right(int x[][N], int n); 9 // 函数rotate_to_right声明 10 // 待补足 11 // ××× 12 13 int main() { 14 int x[N][N]; 15 int n; 16 17 printf("输入n: "); 18 scanf("%d", &n); 19 input(x, n); 20 21 printf("原始矩阵:\n"); 22 output(x, n); 23 rotate_to_right(x, n); 24 // 函数rotate_to_right调用 25 // 待补足 26 27 printf("变换后矩阵:\n"); 28 output(x, n); 29 30 return 0; 31 } 32 // 函数定义 33 // 功能: 输入一个n*n的矩阵x 34 void input(int x[][N], int n) { 35 int i, j; 36 37 for (i = 0; i < n; ++i) { 38 for (j = 0; j < n; ++j) 39 scanf("%d", &x[i][j]); 40 } 41 } 42 43 // 函数定义 44 // 功能: 输出一个n*n的矩阵x 45 void output(int x[][N], int n) { 46 int i, j; 47 48 for (i = 0; i < n; ++i) { 49 for (j = 0; j < n; ++j) 50 printf("%4d", x[i][j]); 51 52 printf("\n"); 53 } 54 } 55 void rotate_to_right(int x[][N], int n) { 56 int temp[N]; 57 int i, j; 58 for (i = 0; i < n; i++) 59 { 60 temp[i] = x[i][n - 1]; 61 } 62 for (j = n - 1; j > 0; j--) { 63 for (i = 0; i < n; i++) { 64 x[i][j] = x[i][j - 1]; 65 } 66 } 67 for (i = 0; i < n; i++) 68 x[i][0] = temp[i]; 69 } 70 // 函数rotate_to_right定义 71 // 功能: 把一个n*n的矩阵x,每一列向右移, 最右边一列绕回左边 72 // 待补足 73 // xxx
实验任务6:
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #define N 100 4 void dec_to_n(int x, int n); // 函数声明 5 6 int main() { 7 int x; 8 9 while (printf("输入十进制整数: "), scanf("%d", &x) != EOF) { 10 dec_to_n(x, 2); // 函数调用: 把x转换成二进制输出 11 dec_to_n(x, 8); // 函数调用: 把x转换成八进制输出 12 dec_to_n(x, 16); // 函数调用: 把x转换成十六进制输出 13 14 printf("\n"); 15 } 16 17 return 0; 18 } 19 20 21 void dec_to_n(int x, int n) { 22 char a[] = "0123456789ABCDEF"; 23 char result[N]; 24 int cnt = 0; 25 while (x != 0) { 26 int yushu; 27 yushu = x % n; 28 result[cnt++] = a[yushu]; 29 x = x / n; 30 } 31 switch (n) { 32 case 2:printf("二进制:"); break; 33 case 8:printf("八进制:"); break; 34 case 16:printf("十六进制:"); break; 35 } 36 for (int i = cnt-1; i >=0; i--) { 37 printf("%c", result[i]); 38 } 39 printf("\n"); 40 } 41 // 函数定义 42 // 功能: 把十进制数x转换成n进制,打印输出 43 // 补足函数实现 44 // xxx
实验任务7:
1 #define _CRT_SECURE_NO_WARNINGS 2 #include <stdio.h> 3 #define N 100 4 5 // 函数声明 6 void input(int x[][N], int n); 7 void output(int x[][N], int n); 8 int is_magic(int x[][N], int n); 9 // 待补足函数is_magic声明 10 // xxx 11 12 int main() { 13 int x[N][N]; 14 int n; 15 16 while (printf("输入n: "), scanf("%d", &n) != EOF) { 17 printf("输入方阵:\n"); 18 input(x, n); 19 20 printf("输出方阵:\n"); 21 output(x, n); 22 23 if (is_magic(x, n)) 24 printf("是魔方矩阵\n\n"); 25 else 26 printf("不是魔方矩阵\n\n"); 27 } 28 29 return 0; 30 } 31 32 // 函数定义 33 // 功能: 输入一个n*n的矩阵x 34 void input(int x[][N], int n) { 35 int i, j; 36 37 for (i = 0; i < n; ++i) { 38 for (j = 0; j < n; ++j) 39 scanf("%d", &x[i][j]); 40 } 41 } 42 43 // 功能: 输出一个n*n的矩阵x 44 void output(int x[][N], int n) { 45 int i, j; 46 47 for (i = 0; i < n; ++i) { 48 for (j = 0; j < n; ++j) 49 printf("%4d", x[i][j]); 50 51 printf("\n"); 52 } 53 } 54 55 int is_magic(int x[][N], int n) { 56 int i, j; 57 int sum, result; 58 result = 0; 59 for (j = 0; j < n; j++) { 60 result += x[0][j]; 61 } 62 for (i = 0; i < n; i++) { 63 sum = 0; 64 for (j = 0; j < n; j++) { 65 sum += x[i][j]; 66 } 67 if (sum != result) return 0; 68 } 69 for (j = 0; j < n; j++) { 70 sum = 0; 71 for (i = 0; i < n; i++) { 72 sum += x[i][j]; 73 } 74 if (sum != result) return 0; 75 } 76 77 sum = 0; 78 for (i = 0; i < n; i++) { 79 sum += x[i][i]; 80 } 81 if (sum != result) return 0; 82 83 sum = 0; 84 for (i = 0; i < n; i++) { 85 sum += x[i][n - 1 - i]; 86 } 87 if (sum != result) return 0; 88 89 return 1; 90 } 91 // 功能: 判断一个n阶方阵是否为魔方矩阵,如果是,返回1,否则,返回0 92 // 待补足函数is_magic定义 93 // xxx
浙公网安备 33010602011771号