实验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

 

 

 
 
posted @ 2025-11-17 00:17  xxxxlf  阅读(7)  评论(1)    收藏  举报