实验四

实验任务1

q1:是连续存放的,两者相同

q2:是连续存放的 相同 相差16 地址位置相差十六个字节

实验任务2

q1:形参x[ ] 实参x

q2:input将键入的n个数存入数组 compute是计算数组内除去最高最低值后的平均值

实验任务3
q1:形参x[ ][N] 实参x
q2:不可省略
q3:output将n*n数组挨个输出 init将value赋值给数组
 
实验任务4
 #include<stdio.h>
 #define N 100
 void input(int x[], int n);
 double medium(int x[], int n);
 int i;
 int main() {
         int x[N];
         int n;
         double ans;
         while (printf("Enter n:"), scanf_s("%d", &n) != EOF) {
                 input(x, n);
                 ans = medium(x, n);
                 printf("ans=%g\n\n", ans);
        
    }
         return 0;
    
}
 void input(int x[], int n) {
    
             for (i = 0; i < n; ++i)
                 scanf_s("%d", &x[i]);
    
}
 double medium(int x[], int n) {
         double ans;
         int i, j;
         int t;
         for (i = 0; i < n - 1; ++i)
                 for (j = 0; j < n - i - 1; j++) {
                     if (x[j] > x[j + 1]) {
                             t = x[j];
                             x[j] = x[j + 1];
                             x[j + 1] = t;
            
        }
        
            
    }
         if (n % 2 == 0)
                 ans = (1.0 * x[n / 2] + 1.0 * x[n / 2 - 1]) / 2;
         else if (n % 2 != 0)
                 ans = 1.0 * x[(n + 1) / 2 - 1];
         return ans;
    
}

屏幕截图 2025-11-17 115008

#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);
// 函数rotate_to_right声明
// 待补足
 // ×××
int main() {
    int x[N][N];
    int n;
    printf("Enter n: ");
    scanf_s("%d", &n);
    input(x, n);
    printf("原始矩阵:\n");
    output(x, n);
    rotate_to_right(x, n);
    // 函数rotate_to_right调用
   // 待补足
    printf("变换后矩阵:\n");
    output(x, n);
    return 0;
}
// 函数定义
// 功能: 输入一个n*n的矩阵x
void input(int x[][N], int n) {
    int i, j;
    for (i = 0; i < n; ++i) {
        for (j = 0; j < n; ++j)
            scanf_s("%d", &x[i][j]);
    }
}
// 函数定义
// 功能: 输出一个n*n的矩阵x
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;
         int t;
         for (i = 0; i < n; ++i) {
                 t = x[i][n - 1];
                 for (j = n - 1; j > 0; j--) {
                         x[i][j] = x[i][j - 1];
            
                
        }
                 x[i][0] = t;
                 printf("%d", x[i][j]);
                 printf("\n");
        
    }
    
        
}

屏幕截图 2025-11-17 115055

#include <stdio.h>
#define N 100
void dec_to_n(int x, int n); // 函数声明
int main() {
    int x;
    while (printf("输入十进制整数: "), scanf_s("%d", &x) != EOF) {
        dec_to_n(x, 2);  // 函数调用: 把x转换成二进制输出
        dec_to_n(x, 8);  // 函数调用: 把x转换成八进制输出
        dec_to_n(x, 16); // 函数调用: 把x转换成十六进制输出
        printf("\n");
    }
    return 0;
}
void dec_to_n(int x, int n) {
        int i = 0, j, k = 0, h, m = 0, t, b;
         int a[N], y[N], z[N];
         if (n == 2) {
                if (x == 0) {
                         printf("0");
            
        }
                while (x > 0) {
                        a[i] = x % 2;
                        x = x / 2;
                         i++;
            
        }
                for (j = i - 1; j >= 0; j--)
                         printf("%d", a[j]);
        
    }printf("\n");
         if (n == 8) {
                 if (x == 0) {
                       printf("0");
            
        }
                 while (x > 0) {
                        y[k] = x % 8;
                         x = x / 8;
                        k++;
           
        }
                 for (h = k - 1; h >= 0; h--)
                        printf("%d", y[h]);
        
    }printf("\n");
        if (n == 16) {
                 if (x == 0) {
                        printf("0");
            
        }
                 while (x > 0) {
                         z[m] = x % 16;
                       x = x / 16;
                        m++;
            
        }
                for (t = m - 1; t >= 0; t--) {
                       b = z[t];
                        if (b == 10) {
                                printf("A");
                
            }
                        else if (b == 11) {
                                printf("B");
                
            }
                         else if (b == 12) {
                                printf("C");
               
            }
                         else if (b == 13) {
                                 printf("D");
                
            }
                         else if (b == 14) {
                                printf("E");
               
            }
                       else if (b == 15) {
                                printf("F");
                
            }
                         else
                           printf("%d", b);
            
        }
        
    }
    
}

屏幕截图 2025-11-17 115154

#include <stdio.h>
#define N 100

 // 函数声明
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_s("%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;
    
}

// 函数定义
 // 功能: 输入一个n*n的矩阵x
 void input(int x[][N], int n) {
        int i, j;
    
            for (i = 0; i < n; ++i) {
                 for (j = 0; j < n; ++j)
                        scanf_s("%d", &x[i][j]);
        
    }
    
}

 // 功能: 输出一个n*n的矩阵x
 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");
        
    }
    
}


// 功能: 判断一个n阶方阵是否为魔方矩阵,如果是,返回1,否则,返回0
 int is_magic(int x[][N], int n) {
         int i, j;
        //判断n是否为奇数
             if (n % 2 == 0)
                 return 0;
    
             //判断元素值
             int check[10000] = {};
         for (i = 0; i < n; ++i) {
                for (j = 0; j < n; ++j) {
                        int m = x[i][j];
                        if (m < 1 || m >(n * n))
                                 return 0;
                         if (check[m])
                                 return 0;
                         check[m] = 1;
            
        }
        
    }
        //以第一行为标准
            int sum = 0;
        for (j = 0; j < n; ++j)
                 sum += x[0][j];
    
             //计算每一行之和
             for (i = 1; i < n; i++) {
                 int sum1 = 0;
                 for (j = 0; j < n; j++)
                     sum1 += x[i][j];
                 if (sum != sum1)
                         return 0;
        
    }
         //计算每一列之和
             for (j = 0; j < n; j++) {
                 int sum2 = 0;
                for (i = 0; i < n; i++)
                     sum2 += x[i][j];
                 if (sum != sum2)
                         return 0;
        
    }
         //计算主对角线之和
        
            int sum3 = 0;
         for (i = 0; i < n; i++)
                 sum3 += x[i][i];
         if (sum != sum3)
                 return 0;
    
             //计算副对角线之和
             int sum4 = 0;
         for (i = 0; i < n; i++)
                sum4 += x[i][n - 1 - i];
        if (sum != sum4)
                return 0;
    
            //判断是否相等 
             return 1;
    
}

屏幕截图 2025-11-17 115238

屏幕截图 2025-11-17 115247

屏幕截图 2025-11-17 115259

 

 

 
posted @ 2025-11-17 11:54  www116  阅读(7)  评论(1)    收藏  举报