实验任务4

实验任务1

问题1:连续存放,值相同

问题2:连续存放,值相同,相差16个字节,差值的含义是数组一行所占字节数

实验任务2

问题1:形参的书写是int x[]    实参书写是x

问题2:函数 input 的功能是将输入的数依次存入数组,函数 compute 的功能是找出数组中的最大和最小值,除去最大和最小值后计算剩余数字的平均值

实验任务3

问题1:形参的书写为int x[][N]    实参书写为x
问题2:不可以,会报错
问题3:函数 output 的功能是输出n*n的数组   函数 init 的功能是将数组中的每一个值都替换为输入的value的值
 
实验任务4
 1 #include <stdio.h>
 2 #define N 100
 3 void input(int x[],int n); 
 4 double median(int x[],int n);
 5 
 6 int main() {
 7     int x[N];
 8     int n;
 9     double ans;
10 
11     while(printf("Enter n: "), scanf("%d", &n) != EOF) {
12         input(x, n);        
13         ans = median(x, n); 
14         printf("ans = %g\n\n", ans);
15     }
16 
17     return 0;
18 }
19 
20 
21 void input(int x[], int n) {
22     for (int i = 0; i < n; i++) {
23         scanf("%d", &x[i]);
24     }
25 }
26 
27 double median(int x[],int n){
28     for(int i = 0;i<n;i++)
29        for(int j = 0;j<n-i-1;j++)
30        if(x[j]>x[j+1])
31        {
32            int t;
33            t=x[j];
34            x[j]=x[j+1];
35            x[j+1]=t;
36        }
37     if(n%2==1)
38     {
39         return x[n/2];
40     }
41     else{
42         return (x[n/2]+x[n/2-1])/2.0;
43     }
44 }
实验任务4

屏幕截图 2025-11-15 155420

实验任务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 
 8 int main(){
 9     int x[N][N];
10     int n;
11     printf("Enter n:");
12     scanf("%d",&n);
13     
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     
21     return 0; 
22 } 
23 
24 void input(int x[][N],int n)
25 {
26     int i,j;
27     for(i=0;i<n;++i)
28     {
29         for(j=0;j<n;++j)
30         scanf("%d",&x[i][j]);
31     }
32 }
33 
34 
35 void output(int x[][N],int n)
36 {
37     int i,j;
38     for(i=0;i<n;++i){
39         for(j=0;j<n;++j)
40         printf("%4d", x[i][j]);
41         printf("\n");
42     } 
43 }
44 
45 void rotate_to_right(int x[][N],int n){
46     int i,j,t;
47     for(i=0;i<n;++i){
48         t=x[i][n-1];
49         for(j=n-1;j>0;--j){
50         x[i][j]=x[i][j-1];
51         
52         }
53             x[i][0]=t;
54     }     
55 }
实验任务5

屏幕截图 2025-11-15 191502

实验任务6

 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("%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 arr[N];
21     int count = 0;
22     if (x == 0)
23     {
24         printf("0");
25         return;
26     }
27     for(;x > 0;x/=n){
28     arr[count]=x%n;
29     count++;    
30     }
31     for (int i = count - 1; i >= 0; i--)
32         arr[i]>=10?printf("%c",'A'+arr[i]-10):printf("%d",arr[i]);
33      printf("\n");
34 }
实验任务6

屏幕截图 2025-11-16 153359

实验任务7

 

  1 #include <stdio.h>
  2 #define N 100
  3 
  4 // 函数声明
  5 void input(int x[][N], int n);
  6 void output(int x[][N], int n);
  7 int  is_magic(int x[][N],int n);
  8 
  9 int main() {
 10     int x[N][N];
 11     int n;
 12 
 13     while(printf("输入n: "), scanf("%d", &n) != EOF) {
 14         printf("输入方阵:\n");  
 15         input(x, n); 
 16 
 17         printf("输出方阵:\n");  
 18         output(x, n);   
 19 
 20         if(is_magic(x, n))
 21             printf("是魔方矩阵\n\n");
 22         else
 23             printf("不是魔方矩阵\n\n");
 24     }
 25 
 26     return 0;
 27 }
 28 
 29 // 函数定义
 30 // 功能: 输入一个n*n的矩阵x
 31 void input(int x[][N], int n) {
 32     int i, j;
 33     
 34     for (i = 0; i < n; ++i) {
 35         for (j = 0; j < n; ++j)
 36             scanf("%d", &x[i][j]);
 37     }
 38 }
 39 
 40 // 功能: 输出一个n*n的矩阵x
 41 void output(int x[][N], int n) {
 42     int i, j;
 43 
 44     for (i = 0; i < n; ++i) {
 45         for (j = 0; j < n; ++j)
 46             printf("%4d", x[i][j]);
 47 
 48         printf("\n");
 49     }
 50 }
 51 
 52 int is_magic(int x[][N], int n) {
 53     if (n <= 0 || n % 2 == 0) {
 54         return 0;
 55     }
 56 int t=(1+n*n)*n/2;
 57 int s=0;
 58     for(int i=0;i<n;++i)
 59         for(int j=0;j<n;++j){
 60             s+=x[i][j];
 61         } 
 62     if(t!=s)
 63     return 0;
 64 
 65 
 66     int max= n * n;
 67     for (int i = 0; i < n; ++i) {
 68         for (int j = 0; j < n; ++j) {
 69             int value = x[i][j];
 70             if (value < 1 || value > max) {
 71                 return 0;  
 72             }
 73 
 74         }
 75     }
 76 
 77     int sum = n * (max + 1) / 2;
 78 
 79     for (int i = 0; i < n; ++i) {
 80         int row_sum = 0;
 81         for (int j = 0; j < n; ++j) {
 82             row_sum += x[i][j];
 83         }
 84         if (row_sum != sum) {
 85             return 0;
 86         }
 87     }
 88 
 89     for (int j = 0; j < n; ++j) {
 90         int col_sum = 0;
 91         for (int i = 0; i < n; ++i) {
 92             col_sum += x[i][j];
 93         }
 94         if (col_sum != sum) {
 95             return 0;
 96         }
 97     }
 98 
 99     int diag1_sum = 0;
100     for (int i = 0; i < n; ++i) {
101         diag1_sum += x[i][i];
102     }
103     if (diag1_sum != sum) {
104         return 0;
105     }
106 
107     int diag2_sum = 0;
108     for (int i = 0; i < n; ++i) {
109         diag2_sum += x[i][n - 1 - i];
110     }
111     if (diag2_sum != sum) {
112         return 0;
113     }
114 
115     return 1;
116 }
实验任务7
 

屏幕截图 2025-11-16 174210

屏幕截图 2025-11-16 174220

 

posted on 2025-11-16 16:11  付付付尾  阅读(6)  评论(1)    收藏  举报