每次最小值的结果都是最后一行最后一列

我知道我的问题出在了每次用随机函数给二维数组赋值时,min也赋了新值,所以无法比较二维数组中数值的大小,但是我不知道该怎样改

img

img

img

img

int min = arr[0][0];

printf("%d ", arr[i][j]);
修改为
printf("%d ", min);
并且放在循环外面

你把int min放进循环里面了
删掉for里的定义,使用外面的定义

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以看下这个问题的回答https://ask.csdn.net/questions/7724168
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:向函数传递一维数组和已知大小的二维数组
  • 除此之外, 这篇博客: 二叉树创建过程答疑(指针参数传递与无法退出递归问题答疑)中的 注意输入的方法 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    1.该二叉树是先序创建的,所以先序手动输入节点必须递归回到根节点,才能完成二叉树的创建。
    2.简单说:不能随便输入例如“abcdefg##”,这样无法递归回到根节点
    正确的输入比如***“ab###”或者“ab##c##”***,就可以成功递归回到根节点,退出递归。

  • 您还可以看一下 程张浩老师的微信小程序项目实战之我画你猜视频课程课程中的 你猜我画小程序功能分析和数据库设计小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    问题解答:

    针对该问题,可以考虑在比较最小值时,不更新min变量的值,而是使用一个临时变量进行比较,最后再将较小值赋给min变量。具体实现步骤如下:

    1. 创建一个临时变量temp,将数组第一个元素的值赋给temp和min变量。
    int temp = arr[0][0]; // 临时变量赋初值
    int min = arr[0][0]; // min变量赋初值
    
    1. 使用两重循环遍历二维数组,获取数组中的每个元素的值。
    for(int i = 0; i < row; i++) {
        for(int j = 0; j < col; j++) {
            // 获取二维数组中的每个元素的值
            int currentNum = arr[i][j];
            // 在循环中比较临时变量和当前值的大小
            if(currentNum < temp) {
                // 如果当前值小于临时变量值则更新临时变量值
                temp = currentNum;
            }
        }
    }
    
    1. 在循环结束后,将temp变量中的最小值赋给min变量。
    min = temp;
    

    完整代码如下:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    #define ROW 5 // 定义二维数组的行数
    #define COL 5 // 定义二维数组的列数
    
    int main() {
        // 定义二维数组
        int arr[ROW][COL];
        // 使用系统时间初始化随机数种子
        srand(time(NULL));
        // 给二维数组随机赋值
        for(int i = 0; i < ROW; i++) {
            for(int j = 0; j < COL; j++) {
                arr[i][j] = rand() % 1000; // 生成0-999范围内的随机整数
            }
        }
        // 输出二维数组中的所有元素
        for(int i = 0; i < ROW; i++) {
            for(int j = 0; j < COL; j++) {
                printf("%d ", arr[i][j]);
            }
            printf("\n");
        }
        // 遍历数组找到最小值
        int temp = arr[0][0]; // 临时变量赋初值
        int min = arr[0][0]; // min变量赋初值
        for(int i = 0; i < ROW; i++) {
            for(int j = 0; j < COL; j++) {
                // 获取二维数组中的每个元素的值
                int currentNum = arr[i][j];
                // 在循环中比较临时变量和当前值的大小
                if(currentNum < temp) {
                    // 如果当前值小于临时变量值则更新临时变量值
                    temp = currentNum;
                }
            }
        }
        // 将临时变量中的最小值赋给min变量
        min = temp;
        // 输出二维数组的最小值
        printf("二维数组的最小值为:%d\n", min);
        return 0;
    }
    

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