实验4

实验任务1

问题一
连续 相同
问题二
连续 相同 16 一行元素的总内存长度即4*N

实验任务2

问题一
x为数组名
形参int x[] 实参x
问题二
输入N个数字,存入一维数组x
将输入的数字去掉最大值与最小值,计算剩余数字的平均数

实验任务3

问题一
x为数组名
形参int x[][N] 实参x
问题二
不能
问题三
输出二维数组储存的元素的值 将二维数组中所有元素的值定义为value

实验任务4

#include <stdio.h>
#include <stdlib.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);
    }

    return 0;
}

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

}

double median(int x[], int n) {
    for (int i = 0; i < n-1; i++) {
        for (int j = 0; j < n-i-1; j++) {
            if (x[j] > x[j + 1]) {
                int t = x[j];
                x[j] = x[j + 1];
                x[j + 1] = t;

            }

        }
     if (n % 2 != 0)
        return x[n/ 2];
    else
        return (x[n / 2] + x[n / 2 - 1])/2.0;
}

image

实验任务5

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.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("输入n: ");
    scanf("%d", &n);
    input(x, n);

    printf("原始矩阵:\n");
    output(x, n);

    rotate_to_right(x, n);
    // 待补足

    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("%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 t;
    for (int j = 0; j < n; j++) {
        t = x[j][n - 1];
        for (int i = 0; i < n-1; i++) {
            
            x[j][n-1-i] = x[j][n-i-2];
               
        }
        x[j][0] = t;
    }


}

image

实验任务6

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.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);  // 函数调用: 把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) {
    if (x == 0) {
        printf("0");
        return;
    }
    int t = 0;
    if (x < 0) {
        t = 1;
        x = -x;
    }
    char y[N];
    int i = 0;
    while (x > 0) {

        int m = x % n;
        if (m < 10) 
            y[i] = '0' + m;
        
        else
            y[i] = 'A' + m - 10;

        x = x / n;
        i++;
    }
    if (t) {
        printf("-");
    }
    for (int j = i - 1; j > -1; j--) {
        printf("%c", y[j]);
    }
    printf("\n");
}

image

实验任务7

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#define N 100

// 函数声明
void input(int x[][N], int n);
void output(int x[][N], int n);
bool is_magic(int x[][N],int n);
// xxx

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;
}

// 函数定义
// 功能: 输入一个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("%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");
    }
}

bool is_magic(int x[][N], int n) {
    if (n % 2 == 0) 
        return false;
    int total = n * n;
    int y[N];
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            if (x[i][j]<1 || x[i][j] >total)
                return false;
            int t = x[i][j];
            y[t] = 1;
        }
    }
    for (int i = 1; i <= total; i++) {
        if (y[i]!=1)
            return false;
    }
    int sum = 0;
    for (int i = 0; i < n; ++i) {
        sum += x[i][0];
    
    }
    int t = 0;
    for (int i = 0; i < n; ++i) {
        for (int j = 0; j < n; ++j) {
            t += x[i][j];

        }
        if (t != sum)
            return false;
        t = 0;
    }
    t = 0;
    for (int j = 0; j < n; ++j) {
        for (int i = 0; i < n; ++i) {
            t += x[i][j];

        }
        if (t != sum)
            return false;
        t = 0;
    }
    t = 0;
    for (int i = 0; i < n; ++i) {
        t += x[i][i];
    }
        if (t != sum)
            return false;
    t = 0;
    for (int j = 0; j < n; ++j) {
        t += x[j][n - 1 - j];
    }
        if (t != sum)
            return false;

    return true;
}

image
image
我燃尽了......

posted @ 2025-11-11 22:29  浔匿  阅读(5)  评论(0)    收藏  举报