int r,c;
int max_i = 0,max_j = 0,min_i=0,min_j=0;
int a[r][c];
int max=0,min=0;
printf("請輸入二維數組行(r),列(c):\n");
scanf("%d%d",&r,&c);
printf("請輸入數據:");
for (int i=0; i<r; i++) { //輸入數據
for (int j=0; j<c ; j++) {
scanf("%d",&a[i][j]);
printf("%d \t",a[i][j]);
if (min>a[i][j]) {
min=a[i][j];
min_i=i;
min_j=j;}
if (max<a[i][j]) {
max=a[i][j];
max_i=i;
max_j=j;
}
// min=a[0][0];
}
}
printf("最大數為:%d。下標為(%d , %d)\n",max,max_i,max_j);
printf("最小數為:%d。下標為(%d , %d)\n",min,min_i,min_j);
return 0;
為什麼只能輸出最大值和下標,不能輸出最小值和下標,求大神告知
很明顯,你這個程序有問題
問題是:你把最大最小值初始化為0了,然後拿0和你輸入的值進行比較。
你說只能輸入最大值,可能你輸入的全部是正數。
舉個例子
2*2的矩陣
我輸入 1 2 3 4,你的程序最大值為0,但是最小值就是0
我輸入-1 -2 -3 -4 , 你程序最大值為0,最小值為-4
這明顯是不合理的
建議在 printf("%d \t",a[i][j]); 後加上即可
if((i == 0)&&(j == 0))
{
min = max = a[0][0];
}