实验4

image

1:连续,值相同

2:连续,值相同,差值16,差值为列的数值

image

 

1.形参用地址或数组名+[],实参为数组名

2.依次输入n个数;去掉最大最小值求平均数

image

1.形参为地址或数组名+[][x],实参为数组名

2.不能省略,会报错

3.依次输出数组为数列;将值赋给某数组的所有元素

#include <stdio.h>
#define N 100
int input(int x[],int n);
double median(int x[],int n);
// 函数声明
// 待补足
// xxx
int main() {
    int x[N];
    int n;
    double ans;
    while (printf("Enter n: "), scanf_s("%d", &n) != EOF) {
        input(x, n); // 函数调用
        ans = median(x, n); // 函数调用
        printf("ans = %g\n\n", ans);
    }
    return 0;
}

int input(int x[],int n) {
    int i=0;
    for (i;i<n;i++) {
        scanf_s("%d", &x[i]);
        }
    for (int i = 0; i < n - 1; i++) {
        for (int j = 0; j < n - 1 - i; j++) {
            if (x[j] > x[j + 1]) {
                int t = x[j + i];
                x[j + i] = x[j];
                x[j] = t;
            }
        }
    }
    }

double median(int x[],int n) {
    if (n % 2) {
        return x[(n + 1) / 2];

    }
    else
        return (x[n / 2] + x[n / 2 - 1]) / 2.0;
}
// 函数定义
// 待补足
// xxx

image

#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 a[N];
    for (int i = 0; i < n; i++) {
        a[i] = x[i][n-1];
    }
    for (int i = 0; i < n; i++) {
        for (int j = n-1; j >0; j--)
            x[i][j] = x[i][j - 1];
    }
    for (int i = 0; i < n; i++) {
        x[i][0] = a[i];
    }
}
// 函数rotate_to_right定义
// 功能: 把一个n*n的矩阵x,每一列向右移, 最右边一列绕回左边
// 待补足
// xxx

 

image

 

#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 a[N];
    int i = 0;
while (x != 0) {
    a[i] = x % n;
    x=x / n;
    i++;
}
for (i; i > 0; i--) {
    if (a[i-1]<10) {
        printf("%d", a[i - 1]);
    }
    else {
        printf("%c", a[i - 1]-10+'A');
    }
}
printf("\n");

}
// 函数定义
// 功能: 把十进制数x转换成n进制,打印输出
// 补足函数实现

image

#include <stdio.h>
#define N 100
int is_magic(int x[][N], int n);// 函数声明
void input(int x[][N], int n);
void output(int x[][N], int n);
// 待补足函数is_magic声明
// xxx
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");
    }
}
int is_magic(int x[][N], int n) {
    int sum=0;
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            if (x[i][j]<1 || x[i][j]>n * n)
                return 0;
            for (int a = 0; a < n; a++) {
                for (int b = 0; b < n; b++) {
                    if (x[i][j] == x[a][b] && a != i && b != j)
                        return 0;
                }
            }
        }
    }

            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    sum += x[i][j];
                }
                if (sum != n * (n * n + 1) / 2)
                    return 0;
                sum = 0;
            }
            for (int j = 0; j < n; j++) {
                for (int i = 0; i < n; i++) {
                    sum += x[i][j];
                }
                if (sum != n * (n * n + 1) / 2)
                    return 0;
                sum = 0;
            }
            for (int i= 0; i < n;i++) {
                sum += x[i][i];
            }
            if (sum != n * (n * n + 1) / 2)
                return 0;
            sum = 0;
            for (int i= 0,j=n-1; i < n;i++,j--) {
                sum += x[i][j];
            }
            if (sum != n * (n * n + 1) / 2)
                return 0;
            sum = 0;
            return 1;
}
// 功能: 判断一个n阶方阵是否为魔方矩阵,如果是,返回1,否则,返回0
// 待补足函数is_magic定义
// xxx

 

image

 

posted @ 2025-11-17 14:26  even_233  阅读(1)  评论(0)    收藏  举报