实验四

 

 

test1

屏幕截图 2025-11-10 164544

屏幕截图 2025-11-10 164908

1.连续存放;值相同

2.连续存放;值相同;差值:000000000062FDC0-000000000062FDD0;从第一行首项到第二行首项的地址数的差

(疑问,为什么二维数组的地址和值给了16项)

 

task2

屏幕截图 2025-11-12 200322

(我看了半天也不知道到底是哪里输的有问题,但是不影响我理解这个过程)

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

2.input用于输入数组中的每一个数,compute用于找出数组中最大最小值后,求出平均值。

 

task 3

屏幕截图 2025-11-13 192651

屏幕截图 2025-11-13 192635

1.output 形参是intx[][N],int n      实参是x,n

2.不能,第一维可以。

3.output是输出数组中的每个数,init是将数组从[0][0]到[n-1][n-1]都赋值为value.

task 4

#include <stdio.h>
#define N 100
void input(int x[],int n);
double median(int x[],int n);

int main(){
    int x[N];
    int n;
    double ans;
    while(printf("Enter n:"),scanf("%d",&n)!=EOF){
        input(x,n);
        ans = median(x,n);
        printf("ans=%g\n\n",ans);
    
    }
    retuen 0;
}
void input(int x[],int n){
    int i;
    for(i=0;i<n;i++){
        scanf("%d",&x[i]);
    }
}

double median(int x[],int n){
    double a;
    double b;
    double ans;
    if(n%2!=0){
        a=[(n-1)/2];
        ans=(x[a]);
    }
    else{
        a=(n/2);
        b=[(n/2)-1];
        ans=(x[a]+x[b])/2;
    }
    return ans;
}

 task 5

#include <stdio.h>
#define N 100

void input(int x[][N], int n);
 void output(int x[][N], int n);
 void rotate_to_right(int x[][N], int n);

 int main() {
 int x[N][N];
 int n;
 printf("Enter n: ");
 scanf("%d", &n);
 input(x, n);
 printf("原始矩阵:\n");
 output(x, n);
 rotate_to_right(x,n);
printf("变换后矩阵:\n");
 output(x, n);
 return 0;
 }

 void input(int x[][N], int n) {
 int i, j;
 for (i = 0; i < n; ++i) {
 for (j = 0; j < n; ++j)
 scanf("%d", &x[i][j]);
 }
 }
 
 void output(int x[][N], int n) {
 int i, j;
 for (i = 0; i < n; ++i) {
 for (j = 0; j < n; ++j)
 printf("%4d", x[i][j]);
 printf("\n");
}
}
void rotate_to_right(int x[][N], int n){
 int i, j;
 for (i = 0; i < n; ++i) {
 for (j = 1; j < n; ++j){
       x[i][j]=x[i][j-1];
       x[i][0]=x[i][n-1];
 }
 
    
}

task.6

 #include <stdio.h>
 #define N 100
 void dec_to_n(int x, int n);   
int main() {
    int x;
    while(printf("输入十进制整数: "), scanf("%d", &x) != EOF) {
        dec_to_n(x, 2); 
        dec_to_n(x, 8);  
        dec_to_n(x, 16); 
        printf("\n");
    }
    return 0;
 }
 void dec_to_n(int x, int n){
     int a[N],b[N];
     int i;
     int c;
     x/=n;
     for(c=0;x!=0;++c){
         scanf("%d",&c);
     }
     for(i=0;i<c;++i){
         while(x!=0){
         x/=n;
         a[i]=x%n;
         a[i]=a[c-i]
          }
     }
     
 } 

 

#include <stdio.h>
 #defin

void input(int x[][N], int n);
 void output(int x[][N], int n);
int is_magic(int x[][N],int n);


 int main() {
 int x[N][N];
 int n;
 while(printf("输入n: "), scanf("%d", &n) != EOF) {
 printf("输入方阵:\n");  
input(x, n); 
printf("输出方阵:\n");  
output(x, n);   
if(is_magic(x, n))
 printf("是魔方矩阵\n\n");
 else
 printf("不是魔方矩阵\n\n");
 }
 return 0;
 }

 void input(int x[][N], int n) {
 int i, j;
 for (i = 0; i < n; ++i) {
 for (j = 0; j < n; ++j)
 scanf("%d", &x[i][j]);
}
 }

void output(int x[][N], int n) {
     int i,j;
      for (i = 0; i < n; ++i) {
 for (j = 0; j < n; ++j)
 printf("%4d", x[i][j]);
 
 printf("\n")
 }
}
int is_magic(int x[][N],int n){
     int i,j;
     int aans=0;
     int bbns=0;
     int vvns=0;
     for(i=0;i<n;++i){
         aans+=x[0][i];
     
     }
     for (i = 0; i < n; ++i) {
 for (j = 1; j < n; ++j){
     bbns+=x[i][j];
 }
    if(aans=bbns){
        return 1;
    }
    else{
        return 0;
    }
     
 }
  for (i = 1; i < n; ++i) {
 for (j = 0; j < n; ++j){
     vvns+=x[i][j];
     
 }
 if(aans=vvns){
     return 1;
 }
}

 

posted @ 2025-11-17 13:17  菲洛特拉托  阅读(4)  评论(0)    收藏  举报