task1

C__Users_johnwzq_Documents_实验4.exe 2025_11_17 13_42_22

1.是连续存放的,相等。

2.按行连续存放。三者相同。差值16byte,含义是一行四个int值共占4*sizeof(int)==16字节

task2

C__Users_johnwzq_Documents_实验4.exe 2025_11_17 13_52_43

1.形参是x[ ],实参是x.

2.遍历输入长度为n的数组x

算出所有得分去掉最高最低分的均分

task 3

C__Users_johnwzq_Documents_实验4.exe 2025_11_17 14_01_15

1.形参x[ ][N],实参x

2.不能。会报错,数组不知道每多少个整型变量算一行,无法正确划分空间。

3.遍历输出二维数组,初始化数组(全都赋同一个值)。

task4

 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     
10     while(printf("Enter n: "),scanf("%d",&n)!=EOF){
11         input(x,n);
12         ans=median(x,n);
13         printf("ans = %g\n\n",ans);
14     }
15     
16     return 0;
17 }
18 
19 double median(int x[],int n){
20     for(int i=n;i>1;i--){
21         for(int j=1;j<i;j++){
22             if(x[j]>x[j+1]){
23                 int t=x[j+1];
24                 x[j+1]=x[j];
25                 x[j]=t;
26             }
27         }
28     }
29     if(n%2==1) return x[(n+1)/2];
30     else return (x[n/2]+x[n/2+1])/2.0;
31 }
32 void input(int x[],int n){
33     for(int i=1;i<=n;i++){
34         scanf("%d",&x[i]);
35     }
36 }

C__Users_johnwzq_Documents_实验4.exe 2025_11_17 14_46_07

task 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  // ??rotate_to_right??
 8 // ???
 9  int main() {
10  int x[N][N];
11  int n;
12  printf("Enter n: ");
13  scanf("%d", &n);
14  input(x, n);
15  printf("ԭʼ¾ØÕó:\n");
16  output(x, n);
17  rotate_to_right(x,n);
18  // ??rotate_to_right??
19 // ???
20 printf("±ä»»ºó¾ØÕó:\n");
21  output(x, n);
22  return 0;
23  }
24  // ????
25 // ??: ????n*n???x
26  void input(int x[][N], int n) {
27  int i, j;
28  for (i = 0; i < n; ++i) {
29  for (j = 0; j < n; ++j)
30  scanf("%d", &x[i][j]);
31  }
32  }
33  // ????
34 // ??: ????n*n???x
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  void rotate_to_right(int x[][N], int n){
44      int t;
45      for(int i=0;i<n;i++){
46          t=x[i][n-1];
47          for(int j=n-1;j>=1;j--){
48              x[i][j]=x[i][j-1];
49          }
50          x[i][0]=t;
51      }
52  }

C__Users_johnwzq_Documents_实验4.exe 2025_11_17 15_10_59

task 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 a[N];
16      int r=1;
17      while(x){
18          a[r++]=x%n;
19          x/=n;
20      }
21      while(--r){
22          if(a[r]>=10)
23              printf("%c",(char)(a[r]-10+'A'));
24          else
25              printf("%d",a[r]);
26      }
27     printf("\n");
28  }

C__Users_johnwzq_Documents_shiyan4.exe 2025_11_17 15_28_00 (1)

 task 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  // ?????is_magic??
 7 // xxx
 8 int is_magic(int x[][N],int n);
 9  int main() {
10  int x[N][N];
11  int n;
12  while(printf("??n: "), scanf("%d", &n) != EOF) {
13  printf("????:\n");  
14 input(x, n); 
15 printf("????:\n");  
16 output(x, n);   
17 if(is_magic(x, n))
18  printf("yes\n\n");
19  else
20  printf("no\n\n");
21  }
22  return 0;
23  }
24  // ????
25 // ??: ????n*n???x
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("%d", &x[i][j]);
32  }
33 }
34  // ??: ????n*n???x
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  int is_magic(int x[][N],int n){
44      static int a[N];
45      for(int i=0;i<n;i++)
46          for(int j=0;j<n;j++)
47              a[x[i][j]]=1;
48      for(int i=1;i<=n*n;i++){
49          if(a[i]==0) return 0;
50      }
51     int sum0=n*(n*n+1)/2; 
52     int sum;
53     for(int i=0;i<n;i++){
54         sum=0;
55         for(int j=0;j<n;j++){
56             sum+=x[i][j];
57         }
58         if(sum!=sum0) return 0;
59     }
60     for(int j=0;j<n;j++){
61         sum=0;
62         for(int i=0;i<n;i++){
63             sum+=x[i][j];
64         }
65         if(sum!=sum0) return 0;
66     }    
67     sum=0;    
68     for(int i=0;i<n;i++){
69         sum+=x[i][i];
70     }
71     if(sum!=sum0) return 0;
72     sum=0;    
73     for(int i=0;i<n;i++){
74         sum+=x[i][n-i-1];
75     }
76     if(sum!=sum0) return 0;
77     return 1;
78  }

C__Users_johnwzq_Documents_shiyan4.exe 2025_11_17 15_59_16

task 8

 1 #include <stdio.h>
 2 using namespace std;
 3 
 4 const int N=10;
 5 int num[N];
 6 bool judge(int n);
 7 void cnt(int x);
 8 void init();
 9 int main(){
10     for(int i=1;;i++){
11         if(judge(i)){
12             printf("%d",i);
13             break;
14         }
15     }
16     return 0;
17 }
18 bool judge(int n){
19     int square=n*n;
20     int cube=n*n*n;
21     init();
22     cnt(square);
23     cnt(cube);
24     for(int i=0;i<=9;i++){
25         if(num[i]!=1) return false;
26     }
27     return true;
28 }    
29 void cnt(int x){
30     int t;
31     for(int i=1;x!=0;i++){
32         t=x%10;
33         num[t]++;
34         x/=10;
35     }
36 }
37 void init(){
38     for(int i=0;i<=9;i++)
39         num[i]=0;
40 }

C__Users_johnwzq_Documents_judge.exe 2025_11_17 16_35_24