2017-01-07 50 views
2

我有一個任務是將整數數組排序爲偶數數組和奇數數組。然後我必須顯示哪些數字已放置在哪個位置。然而,在我的代碼中,並非數組中的所有位置都被佔用,所以最後我會收到隨機數字,當我想顯示數組的機率和均勻度時。而不是隨機數字,我想從字面上沒有添加任何東西。如何在'int'數組中添加'nothing'C

我做了以下內容:

int main() 
{ 
    int evens[10], whole[10], odds[10], i; 

    printf("Enter 10 integer(/whole) numbers\n"); 
    for (i = 0; i < 10; i++) 
    { 
     scanf("%d", &whole[i]); 
     if (whole[i] % 2 == 0) 
     { 
     evens[i] = whole[i]; 
     else odds[i] = whole[i]; 
     } 
    } 

    printf("Your even numbers are the following:\n"); 
    for (i = 0; i < 10; i++) 
    { 
     printf("%d\n", evens[i]); 
    } 

    printf("Your odd numbers are the following:\n"); 
    for (i = 0; i < 10; i++) 
    { 
     printf("%d\n", odds[i]); 
    } 

return 0; 
} 

,然後我得到這個輸出從1到10,其輸入的數字:

Your even numbers are the following: 
    -1832565259 
    2 
    1985901418 
    4 
    4200864 
    6 
    4200958 
    8 
    74 
    10 

    Your odd numbers are the following: 
    1 
    4200864 
    3 
    6356652 
    5 
    1986281400 
    7 
    1985964450 
    9 
    1985901427 

讓我怎麼得到的賠率/偶數組沒有這些像1985964450之間的隨機數字?有沒有一個命令可以直接添加任何東西?

+1

C中的值就是 - 值。在C中沒有「null」這樣的東西 - 相反,只是你的_interpret_值的方式。在你的情況下,你必須決定如何存儲一個值,它被解釋爲空。如果所有實數都是同樣有效的,那麼您將需要一個_second_值來表示某些內容是否爲「空」。 – Qix

回答

3

你應該有一個賠率計數器和平衡計數器。

int oddcount = 0; 
int evencount = 0; 

當你決定一個數是偶數,您使用此計數器知道數組中它應該去。例如:

if (whole[i] % 2 == 0) { 
    evens[evencount] = whole[i]; 
    evencount++; 
} 

注意evencount不僅讓你連號碼的數量,但因爲數組索引從零開始,它也告訴你什麼是下一個偶數的位置。

然後在最後修改for循環以使用輸入的偶數和奇數的實際數量。您甚至可以檢查零並打印特定消息,如No even numbers supplied

此外,除非您已被特別要求將輸入數字保存在數組中,否則不需要whole。你可以這樣做:

int input; 
for (i=0; i<10; i++) 
{ 
    scanf("%d", &input); 
    if (input %2 == 0) 
     /* ... */ 
    else 
     /* ... */ 
} 

作爲最後一句話,你應該縮進你的代碼。縮進只是增加了代碼之前的空格數量(就像我在上面的if中做的那樣)。縮進代碼非常重要,因爲它可以清晰地顯示代碼的結構。有關這方面更全面的討論,請閱讀:Importance of code indentation

2

最好有兩個變量表示索引,一個用於添加奇數,另一個用於添加偶數。那麼你將有兩個陣列沒有多餘的數據:)

int evensIndex = 0; 
int oddsIndex = 0; 
for (i=0; i<10; i++) 
{ 
    scanf("%d", &whole[i]); 

    if (whole[i] %2 == 0) 
    { 
     evens[evensIndex] = whole[i]; 
     evensIndex++; 
    } 
    else 
    { 
     odds[oddsIndex] = whole[i]; 
     oddsIndex++; 
    } 
} 
0
int main() 
{ 
int evens[10], temp, odds[10], i; 
int oddIndex = 0, evenIndex = 0; 

printf("Enter 10 integer(/whole) numbers\n"); 
for (i=0; i<10; i++) 
{ 
    scanf("%d", &temp); 
    if(temp%2) 
     odd[oddIndex++]=temp; 
    else 
     even[evenIdex++]=temp; 
} 

printf("Your even numbers are the following:\n"); 
for (i=0; i<10; i++) 
    printf("%d\n", evens[i]); 

printf("Your odd numbers are the following:\n"); 
for (i=0; i<10; i++) 
    printf("%d\n", odds[i]); 

return 0; 
}