tgwz

实验4

task1

 1 #include <stdio.h>
 2 #define N 4
 3 #define M 2
 4 void test1(){
 5     int x[N]={1,9,8,4};
 6     int i;
 7     printf("sizeof(x)=%d\n",sizeof(x));
 8     for(i=0;i<N;++i)
 9        printf("%p:%d\n",&x[i],x[i]);
10     printf("x=%p\n",x);
11 }
12 void test2(){
13     int x[M][N]={{1,9,8,4},{2,0,4,9}};
14     int i,j;
15     printf("sizeof(x)=%d\n",sizeof(x));
16     for (i=0;i<M;++i)
17         for (j=0;j<N;++j)
18             printf("%p:%d\n",&x[i][j],x[i][j]);
19     printf("\n");
20     printf("x=%p\n",x);
21     printf("x[0]=%p\n,x[0]");
22     printf("x[1]=%p\n,x[1]");    
23     printf("\n");
24 } 
25 int main(){
26     printf("测试1:int型一维数组\n");
27     test1();
28     
29     printf("\n测试2:int型二维数组\n");
30     test2();
31     return 0;
32 }

A1:是;相同

A2:是;相同

task2 

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

09d99a6733a667176b0d0a129ba49867

 A1:形参:数据类型+数组名+[];实参:数组名

A2:input:输入数据;compute:对数据进行计算处理

task3:

 1 #include <stdio.h>
 2 #define N 100
 3 void output(int x[][N],int n);
 4 void init(int x[][N],int n,int value);
 5 int main(){
 6     int x[N][N];
 7     int n,value;
 8     while(printf("Enter n and value:"),scanf("%d%d",&n,&value)!=EOF){
 9         init(x,n,value);
10         output(x,n);
11         printf ("\n");
12     }
13     return 0;
14 }
15 void output(int x[][N],int n){
16     int i,j;
17     for(i=0;i<n;++i) {
18         for(j=0;j<n;++j)
19             printf("%d",x[i][j]);
20             printf("\n");
21     }
22 }
23 void init(int x[][N],int n,int value){
24     int i,j;
25     for(i=0;i<j;++i)
26         for(j=0;j<n;++j)
27            x[i][j]=value;
28     
29 }

bd66dffc64185b7c120e485681345d91

 A1:形参:数据类型+数组名+[];实参:数组名

A2:不能

A3:output:输出数据;init:初始化数据

task4

 1 #include <stdio.h>
 2 #define N 100
 3 void input(int x[],int n);
 4 double median(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     for(int i=0;i<n;i++){
18         scanf("%d",&x[i]);
19     } 
20 }
21 double median(int x[],int n){
22     for (int i=0;i<n-1;i++){
23         for(int j=0;j<n-1;j++){
24             if(x[j]>x[j+1]){
25             int temp=x[j];
26             x[j]=x[j+1];
27             x[j+1]=temp;
28             }
29         }
30     }
31     if (n%2==1){
32         return x[n/2];
33     }else{
34         return (x[n/2-1]+x[n/2])/2.0;
35     }
36 }
37      

a85aad297308998f2f1c1960dc6a005a

 task5

 1 #include <stdio.h>
 2 #define N 100
 3 void input(int x[][N],int n);
 4 void output(int x[][N],int n);
 5 void rotate_to_right(int x[][N],int n);
 6 int main(){
 7     int x[N][N];
 8     int n;
 9     printf("Enter n:");
10     scanf("%d",&n);
11     input(x,n);
12     printf("原始矩阵:\n");
13     output(x,n);
14     rotate_to_right(x,n);
15     printf("变换后矩阵:\n");
16     output(x,n);
17     return 0; 
18 }
19 void input(int x[][N],int n){
20     int i,j;
21     for (i=0;i<n;++i){
22         for(j=0;j<n;++j)
23             scanf("%d",&x[i][j]);
24     }
25 } 
26 void output(int x[][N],int n){
27     int i,j;
28     for(i=0;i<n;++i){
29         for(j=0;j<n;++j)
30         printf("%4d",x[i][j]);
31         printf("\n"); 
32     }
33 }
34 void rotate_to_right(int x[][N],int n){
35     int i,j,temp[n];
36     for(i=0;i<n;++i){
37         temp[i]=x[i][n-1];
38     }
39     for(j=n-1;j>0;--j){
40         for(i=0;i<n;++i){
41             x[i][j]=x[i][j-1];
42         }
43     }
44     for (int i=0;i<n;++i){
45         x[i][0]=temp[i];
46     }
47 }

QQ_1763011183318

 task6

 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);
 8         dec_to_n(x,8);
 9         dec_to_n(x,16);
10         printf("\n");
11     }
12     return 0;
13 }
14 void dec_to_n(int x,int n){
15     int a[20]={0};
16     int i=0,j;
17     while(x>0){
18         a[i]=x%n;
19         x=x/n;
20         i++;
21     }
22     for(j=i-1;j>=0;j--){
23         if(a[j]<10){
24             printf("%d",a[j]);
25         }else{
26             switch(a[j]){
27                 case 10:printf("A");break;
28                 case 11:printf("B");break;
29                 case 12:printf("C");break;
30                 case 13:printf("D");break;
31                 case 14:printf("E");break;
32                 case 15:printf("F");break; 
33             }
34         }
35     }
36     printf("\n");
37 }

QQ_1763100795423

 task 7

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

QQ_1763103705289

 

posted on 2025-11-14 15:02  添罐望仔  阅读(0)  评论(0)    收藏  举报

导航