关于#C语言#的问题,如何解决?

在C语言测试过程中,第六部分的功能

请输入要进行计算的行数和列数:
1 4
请选择要进行的运算:
1. 加法
2. 减法
3. 乘法
4. 除法
4
2 / -858993460 = 0

#include <stdio.h>

#define ROW 3   // 宏定义二维数组的行数
#define COL 4   // 宏定义二维数组的列数

void input_array(int arr[][COL]);   // 录入二维数组函数声明
void output_array(int arr[][COL]);  // 输出二维数组函数声明
void menu();  // 菜单函数声明
void max_min_avg(int arr[][COL]);   // 求二维数组最大值、最小值、平均值函数声明
void bubble_sort(int arr[][COL], int choice);  // 冒泡排序函数声明
void operate_array(int arr[][COL]);  // 数组元素加减乘除函数声明
void transpose_array(int arr[][COL]);  // 二维数组转置函数声明
void count_string();  // 统计字符串的个数函数声明

int main() {
    int arr[ROW][COL];  // 定义二维数组
    int choice;  // 定义菜单选项变量

    while (1) {  // 循环显示菜单界面
        menu();  // 调用菜单函数
        scanf("%d", &choice);  // 获取用户选择的菜单选项

        switch (choice) {  // 根据用户选择的菜单选项执行相应的操作
            case 1:
                input_array(arr);  // 录入二维数组
                break;
            case 2:
                output_array(arr);  // 输出二维数组
                break;
            case 3:
                max_min_avg(arr);  // 求二维数组最大值、最小值、平均值
                break;
            case 4:
                bubble_sort(arr, choice);  // 对二维数组进行升序排序
                break;
            case 5:
                bubble_sort(arr, choice);  // 对二维数组进行降序排序
                break;
            case 6:
                operate_array(arr);  // 数组元素加减乘除
                break;
            case 7:
                transpose_array(arr);  // 二维数组转置
                break;
            case 8:
                count_string();  // 统计字符串的个数
                break;
            default:
                printf("输入有误,请重新输入!\n");  // 提示用户输入有误
                break;
        }

        if (choice == 8) {  // 如果用户选择退出程序,则跳出循环
            break;
        }
    }

    return 0;
}

void input_array(int arr[][COL]) {   // 录入二维数组函数定义
    printf("请输入%d行%d列的二维数组:\n", ROW, COL);
    for (int i = 0; i < ROW; i++) {
        for (int j = 0; j < COL; j++) {
            scanf("%d", &arr[i][j]);
        }
    }
    printf("录入成功!\n");
}

void output_array(int arr[][COL]) {   // 输出二维数组函数定义
    printf("二维数组的值为:\n");
    for (int i = 0; i < ROW; i++) {
        for (int j = 0; j < COL; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
}

void menu() {  // 菜单函数定义
    printf("------菜单------\n");
    printf("1. 录入二维数组\n");
    printf("2. 输出二维数组\n");
    printf("3. 求二维数组最大值、最小值、平均值\n");
    printf("4. 对二维数组进行升序排序\n");
    printf("5. 对二维数组进行降序排序\n");
    printf("6. 数组元素加减乘除\n");
    printf("7. 二维数组转置\n");
    printf("8. 统计字符串的个数\n");
    printf("请输入菜单选项:\n");
}

void max_min_avg(int arr[][COL]) {   // 求二维数组最大值、最小值、平均值函数定义
    int max = arr[0][0], min = arr[0][0], sum = 0;
    float avg;

    for (int i = 0; i < ROW; i++) {
        for (int j = 0; j < COL; j++) {
            if (arr[i][j] > max) {
                max = arr[i][j];
            }
            if (arr[i][j] < min) {
                min = arr[i][j];
            }
            sum += arr[i][j];
        }
    }

    avg = (float)sum / (ROW * COL);

    printf("二维数组的最大值为:%d\n", max);
    printf("二维数组的最小值为:%d\n", min);
    printf("二维数组的平均值为:%.2f\n", avg);
}

void bubble_sort(int arr[][COL], int choice) {  // 冒泡排序函数定义
    int temp;

    for (int i = 0; i < ROW * COL - 1; i++) {
        for (int j = 0; j < ROW * COL - i - 1; j++) {
            if (choice == 4) {  // 如果选择升序排序
                if (arr[j / COL][j % COL] > arr[(j + 1) / COL][(j + 1) % COL]) {
                    temp = arr[j / COL][j % COL];
                    arr[j / COL][j % COL] = arr[(j + 1) / COL][(j + 1) % COL];
                    arr[(j + 1) / COL][(j + 1) % COL] = temp;
                }
            } else {  // 如果选择降序排序
                if (arr[j / COL][j % COL] < arr[(j + 1) / COL][(j + 1) % COL]) {
                    temp = arr[j / COL][j % COL];
                    arr[j / COL][j % COL] = arr[(j + 1) / COL][(j + 1) % COL];
                    arr[(j + 1) / COL][(j + 1) % COL] = temp;
                }
            }
        }
    }

    printf("排序成功!\n");
}

void operate_array(int arr[][COL]) {  // 数组元素加减乘除函数定义
    int row, col, choice;
    int result;  // 存储计算结果

    printf("请输入要进行计算的行数和列数:\n");
    scanf("%d %d", &row, &col);

    printf("请选择要进行的运算:\n");
    printf("1. 加法\n");
    printf("2. 减法\n");
    printf("3. 乘法\n");
    printf("4. 除法\n");
    scanf("%d", &choice);

    switch (choice) {  // 根据用户选择的运算符进行计算
        case 1:
            result = arr[row - 1][col - 1] + arr[col - 1][row - 1];
            printf("%d + %d = %d\n", arr[row - 1][col - 1], arr[col - 1][row - 1], result);
            break;
        case 2:
            result = arr[row - 1][col - 1] - arr[col - 1][row - 1];
            printf("%d - %d = %d\n", arr[row - 1][col - 1], arr[col - 1][row - 1], result);
            break;
        case 3:
            result = arr[row - 1][col - 1] * arr[col - 1][row - 1];
            printf("%d * %d = %d\n", arr[row - 1][col - 1], arr[col - 1][row - 1], result);
            break;
        case 4:
            result = arr[row - 1][col - 1] / arr[col - 1][row - 1];
            printf("%d / %d = %d\n", arr[row - 1][col - 1], arr[col - 1][row - 1], result);
            break;
        default:
            printf("输入有误,请重新输入!\n");
            break;
    }
}

void transpose_array(int arr[][COL]) {  // 二维数组转置函数定义
    int temp;

    for (int i = 0; i < ROW; i++) {
        for (int j = i + 1; j < COL; j++) {
            temp = arr[i][j];
            arr[i][j] = arr[j][i];
            arr[j][i] = temp;
        }
    }

    printf("转置成功!\n");
}

void count_string() {  // 统计字符串的个数函数定义
    char str[100];
    int upper = 0, lower = 0, digit = 0, other = 0;

    printf("请输入一个字符串:\n");
    scanf("%s", str);

    for (int i = 0; str[i] != '\0'; i++) {
        if (str[i] >= 'A' && str[i] <= 'Z') {
            upper++;
        } else if (str[i] >= 'a' && str[i] <= 'z') {
            lower++;
        } else if (str[i] >= '0' && str[i] <= '9') {
            digit++;
        } else {
            other++;
        }
    }

    printf("大写字母个数:%d\n", upper);
    printf("小写字母个数:%d\n", lower);
    printf("数字个数:%d\n", digit);
    printf("特殊符号个数:%d\n", other);
}


为何会出现这样的情况?应该如何修改?请教各位,如果能帮忙修改我将感激不尽!

四则运算传入的实参并没有初始化,就是一些随机的值

这个程序好像整个不对
你是做矩阵运算还是简单的四则运算?为什么用数组?整个没有输入数据到数组里

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^