au0812

导航

 

task1

问题1:是连续存放的,并且每个相邻的都相差4,相同

问题2:是按行存放的

image

每行的首位数差十进制下的16,相同,相差16,差了4个位置,每行四个数

task2

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

问题2:输入一个一维数组

将输入的数组去掉最大值和最小值,然后再求平均数

task3

问题1:形参int x[][N]和int n;实参是x和n

问题2:不能省略不写

问题3:output是输出一个二维数组

init是将二维数组里面的值都换成value

task4

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

截图

image

 task5

 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 void rotate_to_right(int x[][N],int n); 
 8 // 函数rotate_to_right声明
 9 // 待补足
10 // ×××
11 
12 int main() {
13     int x[N][N];
14     int n;
15 
16     printf("输入n: "); 
17     scanf("%d", &n);
18     input(x, n);
19 
20     printf("原始矩阵:\n");
21     output(x, n);
22 
23     // 函数rotate_to_right调用
24     // 待补足
25     rotate_to_right(x,n);
26     printf("变换后矩阵:\n");
27     output(x, n);
28 
29     return 0;
30 }
31 
32 // 函数定义
33 // 功能: 输入一个n*n的矩阵x
34 void input(int x[][N], int n) {
35     int i, j;
36     
37     for (i = 0; i < n; ++i) {
38         for (j = 0; j < n; ++j)
39             scanf("%d", &x[i][j]);
40     }
41 }
42 
43 // 函数定义
44 // 功能: 输出一个n*n的矩阵x
45 void output(int x[][N], int n) {
46     int i, j;
47    
48     for (i = 0; i < n; ++i) {
49         for (j = 0; j < n; ++j)
50             printf("%4d", x[i][j]);
51 
52         printf("\n");
53     }
54 }
55 void rotate_to_right(int x[][N],int n){
56     int t[n];
57     for(int i=0;i<n;i++){
58         t[i]=x[i][n-1];
59     }
60     for(int j=n-1;j>0;j--){
61         for(int i=0;i<n;i++){
62             x[i][j]=x[i][j-1];
63         }
64     }
65         for(int i=0;i<n;i++){
66          x[i][0]=t[i];
67     }
68 }
69 // 函数rotate_to_right定义
70 // 功能: 把一个n*n的矩阵x,每一列向右移, 最右边一列绕回左边
71 // 待补足
72 // xxx
View Code

截图

image

 task6

 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);  // 函数调用: 把x转换成二进制输出
10         dec_to_n(x, 8);  // 函数调用: 把x转换成八进制输出
11         dec_to_n(x, 16); // 函数调用: 把x转换成十六进制输出
12 
13         printf("\n");
14     }
15 
16     return 0;
17 }
18 void dec_to_n(int x, int n){
19     int t[N];
20     int i=0;
21     do{
22         t[i]=x%n;
23         ++i;
24         x=x/n;
25     }while(x!=0);
26     for(int j=i-1;j>=0;--j){
27         if(t[j]>=10){
28             t[j]='A'+t[j]-10;
29             printf("%c",t[j]);
30         }
31         else
32         printf("%d",t[j]);
33         
34     }
35     printf("\n");
36 }
37 // 函数定义
38 // 功能: 把十进制数x转换成n进制,打印输出
39 // 补足函数实现
40 // xxx
View Code

 

截图:

image

 

 task7

 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 // xxx
 9 
10 int main() {
11     int x[N][N];
12     int n;
13 
14     while(printf("输入n: "), scanf("%d", &n) != EOF) {
15         printf("输入方阵:\n");  
16         input(x, n); 
17 
18         printf("输出方阵:\n");  
19         output(x, n);   
20 
21         if(is_magic(x, n))
22             printf("是魔方矩阵\n\n");
23         else
24             printf("不是魔方矩阵\n\n");
25     }
26 
27     return 0;
28 }
29 
30 // 函数定义
31 // 功能: 输入一个n*n的矩阵x
32 void input(int x[][N], int n) {
33     int i, j;
34     
35     for (i = 0; i < n; ++i) {
36         for (j = 0; j < n; ++j)
37             scanf("%d", &x[i][j]);
38     }
39 }
40 
41 // 功能: 输出一个n*n的矩阵x
42 void output(int x[][N], int n) {
43     int i, j;
44 
45     for (i = 0; i < n; ++i) {
46         for (j = 0; j < n; ++j)
47             printf("%4d", x[i][j]);
48 
49         printf("\n");
50     }
51 }
52 //功能:判断是否为魔方矩阵 
53 int is_magic(int x[][N],int n){
54     int l[][N]={0};
55  
56     for(int i=0;i<n;++i){
57       for(int j=0;j<n;++j){
58       for(int w=0;w<n;++w){
59           for(int a=0;a<n;++a){
60               if(x[i][j]==x[w][a]&&i!=w&&j!=a){
61                   return 0;
62               }
63           }
64       }
65       } 
66     }
67     
68     for(int i=0;i<n;++i){
69         for(int j=0;j<n;++j){
70             if(x[i][j]<0||x[i][j]>n*n)
71             return 0;
72         }
73     }
74      int t=0,y=0;
75      int r[n]={0},e[n]={0};
76      for(int k=0;k<n;++k)
77      t+=x[k][k];
78      for(int q=0; q<n; ++q)  // 正向循环更直观,也可反向
79     y += x[q][n-1 - q];
80      for(int i=0;i<n;++i){
81          for(int j=0;j<n;++j){
82              r[i]+=x[i][j];
83          }
84      }     
85      for(int j=0;j<n;++j){
86          for(int i=0;i<n;++i){
87              e[j]+=x[i][j];
88          }
89      }
90      for(int i=0;i<n;++i){
91      if(y!=t||y!=r[i]||y!=e[i])
92      return 0;
93      
94 }
95 return 1;
96      
97 }
View Code

 

截图:

image

 

image

 

posted on 2025-11-12 19:54  南信大Au  阅读(2)  评论(0)    收藏  举报