我知道我的问题出在了每次用随机函数给二维数组赋值时,min也赋了新值,所以无法比较二维数组中数值的大小,但是我不知道该怎样改
int min = arr[0][0];
把
printf("%d ", arr[i][j]);
修改为
printf("%d ", min);
并且放在循环外面
你把int min放进循环里面了
删掉for里的定义,使用外面的定义
1.该二叉树是先序创建的,所以先序手动输入节点必须递归回到根节点,才能完成二叉树的创建。
2.简单说:不能随便输入例如“abcdefg##”,这样无法递归回到根节点
正确的输入比如***“ab###”或者“ab##c##”***,就可以成功递归回到根节点,退出递归。
问题解答:
针对该问题,可以考虑在比较最小值时,不更新min变量的值,而是使用一个临时变量进行比较,最后再将较小值赋给min变量。具体实现步骤如下:
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 = 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;
}