实验4

实验一:

1.是连续存放,&x[0]和x相同。

2.是连续存放,x和x[0]和x[0][0]相同,x[0]和x[1]相差16,相差的是4个int,一个int占4个字节。

实验二:

1.形参形式是 数组名[],数组大小;实参形式是 数组名,数组大小。

2.input的功能是遍历输入数组的每一个数,compute的功能是计算数组去掉一个最大值和最小值后的平均值

实验三:

1.形参形式是 数组名[][N],变量 ;实参形式是 数组名,变量。

2.不能。

3.output是二维数组的边路输出,init是让数组的前n维方阵的值为value。

实验四:

 

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

实验五:

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

实验六:

 1 #include <stdio.h>
 2 #define N 100
 3 void dec_to_n(int x, int n);
 4 
 5 int main() {
 6     int x;
 7 
 8     while(printf("输入十进制整数: "), scanf_s("%d", &x) != EOF) {
 9         dec_to_n(x, 2);
10         dec_to_n(x, 8);
11         dec_to_n(x, 16);
12 
13         printf("\n");
14     }
15 
16     return 0;
17 }
18 
19 void dec_to_n(int x, int n) {
20     int a[N];
21     int i,j=0;
22     for (i = 0; i < N; i++,j++) {
23         a[i] = x % n;
24         x = x / n;
25         if (x == 0) break;
26     }
27     
28     for (j; j >= 0; j--) {
29         if (a[j] > 9)   printf("%c", 'A'+a[j] - 10);
30         else printf("%d", a[j]);
31     }
32     printf("\n");
33 }
View Code

实验七:

 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     int x[N][N];
10     int n;
11 
12     while(printf("输入n: "), scanf_s("%d", &n) != EOF) {
13         printf("输入方阵:\n");  
14         input(x, n); 
15 
16         printf("输出方阵:\n");  
17         output(x, n);   
18 
19         if(is_magic(x, n))
20             printf("是魔方矩阵\n\n");
21         else
22             printf("不是魔方矩阵\n\n");
23     }
24 
25     return 0;
26 }
27 
28 void input(int x[][N], int n) {
29     int i, j;
30     
31     for (i = 0; i < n; ++i) {
32         for (j = 0; j < n; ++j)
33             scanf_s("%d", &x[i][j]);
34     }
35 }
36 
37 void output(int x[][N], int n) {
38     int i, j;
39 
40     for (i = 0; i < n; ++i) {
41         for (j = 0; j < n; ++j)
42             printf("%4d", x[i][j]);
43 
44         printf("\n");
45     }
46 }
47 
48 int is_magic(int x[][N], int n) {
49     int i, j,sum2=0,sum3=0;
50     for (i = 0; i < n; i++) {
51         int sum1 = 0;
52         for (j = 0; j < n; j++) {
53             sum1 += x[i][j];
54         }
55         if (sum1 != n * (n * n + 1) / 2) return 0;
56         sum2 += x[i][i];
57         sum3 += x[n - 1 - i][n - 1 - i];
58     }
59     if (sum2 != n * (n * n + 1) / 2|| sum3!= n * (n * n + 1) / 2) return 0;
60     return 1;
61 }
View Code

实验八:

 1 #include<stdio.h>
 2 
 3 int is_number(int i);
 4 
 5 int main() {
 6     int n = 2;
 7     while (is_number(n) == 0) {
 8         n = n++;
 9     }
10     printf("%d\n", n);
11     return 0;
12 }
13 int is_number(int n) {
14     int i = 0;
15     int a = n * n;
16     int b = n * n * n;
17     int x[100] = { 0 };
18     for (a; a > 0; ) {
19         x[i] = a % 10;
20         a = a / 10;
21         i = i++;
22     }
23 
24     for (b; b > 0; ) {
25         x[i] = b % 10;
26         b = b / 10;
27         i = i++;
28     }
29     
30     int j, k,t;
31     for(j=0;j<10;j++)
32         for (k=0;k<9-j;k++)
33             if (x[k] > x[k + 1]) {
34                 t = x[k];
35                 x[k] = x[k + 1];
36                 x[k + 1] = t;
37             }
38 
39     for (i = 0; i < 9; i++) {
40         if (x[i] == x[i + 1]|| x[i + 1] == 0) return 0;
41     }
42     return 1;
43 }
View Code

 

posted @ 2026-05-03 00:15  郑云翔  阅读(9)  评论(0)    收藏  举报