我創建了一個函式,用于將integer用戶輸入的新值添加到二維 (2D) 陣列中。我想integer在將它添加到陣列之前檢查新提供的是否大于前一個。
如果它是一個一維陣列,那將很容易。我會索引陣列-1并檢查值。
但是現在有了二維,我很困惑,我不知道如何檢查前一行的值。
我應該為每一行創建 if 陳述句嗎?(似乎不是最優的)
到目前為止我做了什么:
#include <stdio.h>
#define N 3
#define M 5
void get_numbers()
{
int i, j, number;
int TABLE[N][M];
for (i = 0; i < N; i )
{
for (j = 0; j < M; j )
{
printf("Position: [%d, %d]: ", i 1, j 1);
scanf("%d", &number);
if (j > 0)
{
while (number < TABLE[i][j-1])
{
printf("The new number should be larger than the previous one %d \n", TABLE[i][j-1]);
printf("Please try again\n");
printf("Position: [%d, %d]: ", i 1, j 1);
scanf("%d", &number);
}
TABLE[i][j] = number;
}
}
}
}
int main () {
get_numbers();
}
uj5u.com熱心網友回復:
陣列的所有元素TABLE[i][0]都保持未初始化。
你需要寫
for (i = 0; i < N; i )
{
for (j = 0; j < M; j )
{
printf("Position: [%d, %d]: ", i 1, j 1);
scanf("%d", &number);
if ( j == 0 )
{
TABLE[i][j] = number;
}
else
{
while (number <= TABLE[i][j-1])
{
printf("The new number should be larger than the previous one %d \n", TABLE[i][j-1]);
printf("Please try again\n");
printf("Position: [%d, %d]: ", i 1, j 1);
scanf("%d", &number);
}
TABLE[i][j] = number;
}
}
}
如果你還想在需要寫的時候比較一行的第一個元素和上一行的最后一個元素
for (i = 0; i < N; i )
{
for (j = 0; j < M; j )
{
printf("Position: [%d, %d]: ", i 1, j 1);
scanf("%d", &number);
if ( i == 0 && j == 0 )
{
TABLE[i][j] = number;
}
else
{
while ( number <= ( j == 0 ? TABLE[i-1][M - 1] : TABLE[i][j-1] ) )
{
printf("The new number should be larger than the previous one %d \n", TABLE[i][j-1]);
printf("Please try again\n");
printf("Position: [%d, %d]: ", i 1, j 1);
scanf("%d", &number);
}
TABLE[i][j] = number;
}
}
}
另一種方法是將二維陣列重新解釋為一維陣列。例如
int *p = ( int * )TABLE;
for ( i = 0; i < N * M; i )
{
printf("Position: [%d, %d]: ", i / M 1, i % M 1 );
scanf("%d", &number);
if ( i == 0 )
{
p[i] = number;
}
else
{
while ( number <= p[i-1] )
{
printf("The new number should be larger than the previous one %d \n", p[i-1] );
printf("Please try again\n");
printf("Position: [%d, %d]: ", i / M 1, i % M 1 );
scanf("%d", &number);
}
p[i] = number;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/461285.html
上一篇:洗掉串列中的節點
