实验4

实验任务1111111111111
 
问题1:
相同
问题2:
是连续存放;相同;相差16;含义为数组x的第一行有4个数组元素,共占用16个字节
 
实验任务22222222222

形参:int x[ ] 实参:x

input:输入数据

compute:去掉max和min取平均值

 

实验任务333333333333

image

 

问题1:形参: int [ ][ ] 和实参:x

问题2: 不能

问题3:output()按行列输出二维数组

init()将二维数组中需要的n*n个元素初始化为输入的值

 

实验任务4444444444444444

 1 #include <stdio.h>
 2 #define N 100
 3 void input(int x[], int n);
 4 double median(int x[], int n);
 5 void sort(int x[], int n);
 6 
 7 int main() {
 8     int x[N];
 9     int n;
10     double ans;
11 
12     while (printf("Enter n: "), scanf_s("%d", &n) != EOF) {
13         input(x, n);
14         ans = median(x, n);
15         printf("ans = %g\n\n", ans);
16     }
17 
18     return 0;
19 }
20 
21 void input(int x[], int n) {
22     int i;
23     for (i = 0; i < n; i++) {
24         scanf("%d", &x[i]);
25     }
26 }
27 
28 void sort(int x[], int n) {
29     int i, j;
30     for (i = 0; i < n - 1; i++) {
31         for (j = 0; j < n - i - 1; j++) {
32             if (x[j] > x[j + 1]) {
33                 int temp = x[j];
34                 x[j] = x[j + 1];
35                 x[j + 1] = temp;
36             }
37         }
38     }
39 }
40 
41 double median(int x[], int n) {
42     sort(x, n);
43     if (n % 2 == 1) {
44         return (double)x[n / 2];
45     }
46     else {
47         return (double)(x[n / 2 - 1] + x[n / 2]) / 2.0;
48     }
49 }
View Code

image

 实验任务555555555555555

 1 #include <stdio.h>
 2 #define N 100
 3 
 4 void input(int x[][N], int n);
 5 void output(int x[][N], int n);
 6 void rotate_to_right(int x[][N], int n);
 7 
 8 int main() {
 9     int x[N][N];
10     int n;
11 
12     printf("Enter n: ");
13     scanf_s("%d", &n);
14     input(x, n);
15     printf("原始矩阵:\n");
16     output(x, n);
17     rotate_to_right(x, n);
18     printf("变换后矩阵:\n");
19     output(x, n);
20     return 0;
21 }
22 void input(int x[][N], int n) {
23     int i, j;
24 
25     for (i = 0; i < n; ++i) {
26         for (j = 0; j < n; ++j)
27             scanf_s("%d", &x[i][j]);
28     }
29 }
30 
31 void output(int x[][N], int n) {
32     int i, j;
33     for (i = 0; i < n; ++i) {
34         for (j = 0; j < n; ++j)
35             printf("%4d", x[i][j]);
36         printf("\n");
37     }
38 }
39 
40 void rotate_to_right(int x[][N], int n) {
41 
42     int i, j;
43     int t[N];
44     
45     for (i = 0; i < n; i++) {
46         t[i] = x[i][n - 1];
47     }
48 
49     for (i = 0; i < n; ++i) {
50         for (j = n - 1; j > 0; --j) {
51             x[i][j] = x[i][j - 1];
52         }
53     }
54 
55     for (i = 0; i < n; i++) {
56         x[i][0] = t[i];
57     }
58 
59 }
View Code

image

 

实验任务666666666

 1 #include <stdio.h>
 2 #define N 100
 3 
 4 void dec_to_n(int x, int n);
 5 
 6 int main() {
 7     int x;
 8 
 9     while (printf("输入十进制整数:"), scanf_s("%d", &x) != EOF) {
10         dec_to_n(x, 2);
11         dec_to_n(x, 8);
12         dec_to_n(x, 16);
13         printf("\n");
14     }
15     return 0;
16 }
17 
18 void dec_to_n(int x, int n) {
19     char digits[] = "0123456789ABCDEF";
20     char result[N];
21     int index = 0;
22     int temp = x;
23 
24     if (x == 0) {
25         printf("0\n");
26         return;
27     }
28 
29     if (x < 0) {
30         temp = -x;
31     }
32 
33     while (temp > 0) {
34         int remainder = temp % n;
35         result[index++] = digits[remainder];
36         temp = temp / n;
37     }
38 
39     if (x < 0) {
40         printf("-");
41     }
42     int i;
43     for (i = index - 1; i >= 0; i--) {
44         printf("%c", result[i]);
45     }
46     printf("\n");
47 }
View Code

image

 实验任务77777777777777

  1 #include <stdio.h>
  2 #define N 100
  3 
  4 void input(int x[][N], int n);
  5 void output(int x[][N], int n);
  6 int is_magic(int x[][N], int n);
  7 
  8 int main() {
  9 
 10     int x[N][N];
 11     int n;
 12 
 13     while (printf("输入n: "), scanf_s("%d", &n) != EOF) {
 14         printf("输入方阵:\n");
 15         input(x, n);
 16         printf("输出方阵:\n");
 17         output(x, n);
 18         if (is_magic(x, n))
 19             printf("是魔方矩阵\n\n");
 20         else
 21             printf("不是魔方矩阵\n\n");
 22     }
 23     return 0;
 24 }
 25 
 26 void input(int x[][N], int n) {
 27     int i, j;
 28 
 29     for (i = 0; i < n; ++i) {
 30         for (j = 0; j < n; ++j)
 31             scanf_s("%d", &x[i][j]);
 32     }
 33 }
 34 
 35 void output(int x[][N], int n) {
 36     int i, j;
 37     for (i = 0; i < n; ++i) {
 38         for (j = 0; j < n; ++j)
 39             printf("%4d", x[i][j]);
 40         printf("\n");
 41     }
 42 }
 43 
 44 int is_magic(int x[][N], int n) {
 45     int ans1, ans2, ans3, ans;
 46 
 47     int sum_i[N] = { 0 };
 48     int sum_j[N] = { 0 };
 49     int sum_ij[N] = { 0 };
 50 
 51     for (int i = 0; i < n; i++) {
 52         for (int j = 0; j < n; j++) {
 53             sum_i[i] += x[i][j];
 54         }
 55     }
 56 
 57     for (int j = 0; j < n; j++) {
 58         for (int i = 0; i < n; i++) {
 59             sum_j[j] += x[i][j];
 60         }
 61     }
 62 
 63     for (int k = 0; k < n - 1; k++) {
 64         if (sum_i[k] == sum_i[k + 1])
 65             ans1 = 1;
 66         else {
 67             ans1 = 0;
 68             break;
 69         }
 70 
 71         if (sum_j[k] == sum_j[k + 1])
 72             ans2 = 1;
 73         else {
 74             ans2 = 0;
 75             break;
 76         }
 77     }
 78 
 79 
 80     for (int l = 0; l < n; l++) {
 81         sum_ij[0] += x[l][l];
 82         sum_ij[1] += x[l][n - 1 - l];
 83     }
 84     if (sum_ij[0] == sum_ij[1])
 85         ans3 = 1;
 86 
 87 
 88     if (ans1 && ans2 && ans3 && x[0][0] != x[0][1])
 89         ans = 1;
 90     else
 91         ans = 0;
 92 
 93 
 94     return ans;
 95 
 96 }#include <stdio.h>
 97 #define N 100
 98 
 99 void input(int x[][N], int n);
100 void output(int x[][N], int n);
101 int is_magic(int x[][N], int n);
102 
103 int main() {
104 
105     int x[N][N];
106     int n;
107 
108     while (printf("输入n: "), scanf_s("%d", &n) != EOF) {
109         printf("输入方阵:\n");
110         input(x, n);
111         printf("输出方阵:\n");
112         output(x, n);
113         if (is_magic(x, n))
114             printf("是魔方矩阵\n\n");
115         else
116             printf("不是魔方矩阵\n\n");
117     }
118     return 0;
119 }
120 
121 void input(int x[][N], int n) {
122     int i, j;
123 
124     for (i = 0; i < n; ++i) {
125         for (j = 0; j < n; ++j)
126             scanf_s("%d", &x[i][j]);
127     }
128 }
129 
130 void output(int x[][N], int n) {
131     int i, j;
132     for (i = 0; i < n; ++i) {
133         for (j = 0; j < n; ++j)
134             printf("%4d", x[i][j]);
135         printf("\n");
136     }
137 }
138 
139 int is_magic(int x[][N], int n) {
140     int ans1, ans2, ans3, ans;
141 
142     int sum_i[N] = { 0 };
143     int sum_j[N] = { 0 };
144     int sum_ij[N] = { 0 };
145 
146     for (int i = 0; i < n; i++) {
147         for (int j = 0; j < n; j++) {
148             sum_i[i] += x[i][j];
149         }
150     }
151 
152     for (int j = 0; j < n; j++) {
153         for (int i = 0; i < n; i++) {
154             sum_j[j] += x[i][j];
155         }
156     }
157 
158     for (int k = 0; k < n - 1; k++) {
159         if (sum_i[k] == sum_i[k + 1])
160             ans1 = 1;
161         else {
162             ans1 = 0;
163             break;
164         }
165 
166         if (sum_j[k] == sum_j[k + 1])
167             ans2 = 1;
168         else {
169             ans2 = 0;
170             break;
171         }
172     }
173 
174 
175     for (int l = 0; l < n; l++) {
176         sum_ij[0] += x[l][l];
177         sum_ij[1] += x[l][n - 1 - l];
178     }
179     if (sum_ij[0] == sum_ij[1])
180         ans3 = 1;
181 
182 
183     if (ans1 && ans2 && ans3 && x[0][0] != x[0][1])
184         ans = 1;
185     else
186         ans = 0;
187 
188 
189     return ans;
190 
191 }
View Code

image

 

实验任务88888888888

 1 #define _CRT_SECURE_NO_WARNINGS
 2 #include<stdio.h>
 3 #define N 100
 4 int same(int k[N]);
 5 void comput(int x, int a[]);
 6 void order(int d[],int m);
 7 void tog(int z[], int x1[],int x2[],int q, int w);
 8 int cnt(int l);
 9 void move(int arr[], int size);
10 int main() {
11     int i=1;
12     int s, m;
13     int p = 0, q = 0;
14     int a[N], b[N];
15     int c[N];
16     for (i = 1;; i++) {
17         s = i * i;
18         m = i * i * i;
19         comput(s, a);
20         comput(m, b);
21         order(a, cnt(s));
22         order(b, cnt(m));
23         tog(c, a, b, cnt(s),cnt(m));
24         order(c, cnt(s)+ cnt(m));
25         move(c, cnt(s) + cnt(m));
26         if (same(c)) {
27             printf("%d", i);
28             break;
29         }
30 
31 
32     }
33 }
34 int same(int k[N]) {
35     int x[N] = { 0,1,2,3,4,5,6,7,8,9 };
36     int i = 0;
37     int j = 0;
38     for (i = 0, j = 0; i < 10&& j < 10; ++i, ++j) {
39         if (k[j] != x[i])
40             return 0;
41     }
42     return 1;
43 }
44 void comput(int x, int a[]) {
45     int i = 0;
46     while (x != 0) {
47         a[i] = x % 10;
48         x = x / 10;
49         i++;
50     }
51 }
52 void order(int d[], int n) {
53     int i, j, t;
54     for (i = 0; i < n - 1; ++i)
55         for (j = 0; j < n - i - 1; ++j) {
56             if (d[j] > d[j + 1]) {
57                 t = d[j];
58                 d[j] = d[j + 1];
59                 d[j + 1] = t;
60             }
61         }
62 }
63 int cnt(int l) {
64     int i=0;
65     while (l != 0) {
66         i++;
67         l = l / 10;
68     }return i;
69 }
70 void tog(int z[], int x1[],int x2[],int q, int w) {
71     for (int i = 0; i < q; i++) {
72         z[i] = x1[i];
73     }
74     for (int i = 0; i < w; i++)
75         z[i + q] = x2[i];
76 }
77 void move(int arr[], int size) {
78     int j = 0;
79     for (int i = 0; i < size - 1; i++) {
80         if (arr[i] != arr[i + 1])
81             arr[j++] = arr[i];
82     }
83     arr[j] = arr[size - 1];
84 
85 }
View Code

image

 

posted @ 2025-11-16 23:42  顾添乐  阅读(5)  评论(1)    收藏  举报