实验4

实验任务1

问题1:一维数组x在内存中连续存放。x和&x[0]的值相同。

问题2:二维数组x在内存中是否按行连续存放。x、x[0]和&x[0][0]的值相同。?x[0]和x[1]相差16,该差值的含义是x[0]和x[1]相差4个数。

实验任务2

问题1:实参直接写x,形参写x[]。

问题2:input将数据输入到数组中,compute计算输入数字在去掉最大值和最小值后的平均值。

实验任务3

问题1:新参写成x[][N],实参写成x。

问题2:不能,第一个可写可不写,第二个必须写。

问题3:output可以输出数组,init可以将输入的数字赋值给指定的范围内的所有数字。

实验任务4

源代码

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

运行结果

屏幕截图 2025-11-10 185008

 实验任务5

源代码

 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 int main() {
 8     int x[N][N];
 9     int n;
10     printf("Enter n: ");
11     scanf("%d", &n);
12     input(x, n);
13     printf("原始矩阵:\n");
14     output(x, n);
15     rotate_to_right(x,n);
16     printf("变换后矩阵:\n");
17     output(x, n);
18     return 0;
19 }
20 // 函数定义
21 // 功能: 输入一个n*n的矩阵x
22 void input(int x[][N], int n) {
23     int i, j;
24     for (i = 0; i < n; ++i) {
25         for (j = 0; j < n; ++j)
26             scanf("%d", &x[i][j]);
27     }
28 }
29 // 函数定义
30 // 功能: 输出一个n*n的矩阵x
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 void rotate_to_right(int x[][N], int n) {
40     int a,b,i,y[N][N+1];
41     for(i=0;i<n;++i) {
42         for (a=0;a<n;++a) {
43             y[i][a+1]=x[i][a];
44         }
45     }
46     for(i=0;i<n;++i) {
47         y[i][0]=x[i][n-1];
48     }
49     for(i=0;i<n;++i) {
50         for (a=0;a<n;++a) {
51             x[i][a]=y[i][a];
52         }
53     }
54 }
View Code

运行结果

image

 实验任务6

源代码

 1 #include <stdio.h>
 2 #define N 100
 3 void dec_to_n(int x, int n); // 函数声明
 4 int main() {
 5     int x;
 6     while(printf("输入十进制整数: "), scanf("%d", &x) != EOF) {
 7         dec_to_n(x, 2);  // 函数调用: 把x转换成二进制输出
 8         dec_to_n(x, 8);  // 函数调用: 把x转换成八进制输出
 9         dec_to_n(x, 16); // 函数调用: 把x转换成十六进制输出
10         printf("\n");
11     }
12     return 0;
13 }
14 void dec_to_n(int x, int n) {
15     int i=0,a;
16     char y[N];
17     for (;x!=0;i++) {
18         if (x%n<10) {
19             y[i]=x%n+'0';
20         }
21         else {
22             switch(x%n) {
23                 case 10:y[i]='A';break;
24                 case 11:y[i]='B';break;
25                 case 12:y[i]='C';break;
26                 case 13:y[i]='D';break;
27                 case 14:y[i]='E';break;
28                 default:y[i]='F';
29             }
30         }
31         x=x/n;
32     }
33     for(a=i-1;a>=0;a--)
34         printf("%c",y[a]);
35     printf("\n");
36 }
View Code

运行结果

image

 实验任务7

源代码

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

运行结果

image

image

image

 实验任务8

 1 #include<stdio.h>
 2 int main() {
 3     int a,b,c,d[10],i=0,j=0,k,t;
 4     for (a=0;a<10000;a++) {
 5         b=a*a;
 6         c=a*a*a;
 7         i=0;
 8         j=0;
 9         //将数字存到数组中
10         while(b!=0)
11             {d[i]=b%10;
12             b/=10;
13             i++;}
14         while(c!=0)
15             {d[i]=c%10;
16             c/=10;
17             i++;}
18         //数组排序
19         for (;j<i-1;j++)
20             {for(k=0;k<i-1;k++)
21                 {if (d[k]>d[k+1])
22                     {t=d[k];
23                     d[k]=d[k+1];
24                     d[k+1]=t;}}}
25         //判断
26         if (i==10)
27             {for (k=0;k<10;k++)
28                 {if(d[k]!=k)
29                     {break;}}
30             if (k==10) {
31                 printf("%d",a);
32                 return 0;
33             }
34         }
35     }
36     return 0;
37 }
View Code

运行结果

image

 

posted @ 2025-11-10 20:30  尚逸辰  阅读(0)  评论(0)    收藏  举报