2016-09-20 34 views
0

摘要打印無符號整數數組和退出循環

我希望能夠編寫可以讓我保存10值的功能。我應該能夠通過0退出循環而不將0存儲到陣列。我應該可以重新輸入數組並繼續存儲,直到獲得10值。

問題

  1. 我開始寫一些簡單的,但是當我像存儲值5它會打印出5值,然後一些隨機數。這是爲什麼?

  2. 我怎樣才能退出循環沒有數組存儲0

我對這個東西很新,所以我希望我在這裏正確地遵循了規則。

代碼

#include <stdio.h> 

int main(void) 
{ 
    int arrayTable[9] = {0}; 
    int i; 

    for (i=0; i<10; i++) 
    { 
     printf("Enter Measurement #%i (or 0): ", i+1); 
     scanf("%d", &arrayTable[i]); 
     if (arrayTable[i] == 0) 
     { 
      break; 
     } 
    } 

    for (int i=0; i<10; i++) 
    { 
     printf("%d\n", arrayTable[i]); 
    } 

    return 0; 
} 
+2

要開始,'int arrayTable [9]'不能包含10個值。另一件事,即使您只輸入5個值,輸出循環也會打印10個值。其餘的將有未定義的值,特別是'arrayTable [9]'如前所述。第二個(輸出)循環,試試'for(int j = 0; j

+0

這個效果會說我想計算最小值,最大值和平均值?我怎樣才能打印存儲的值,而不是所有的0? – xxFlashxx

+0

@WeatherVane'int arrayTable [9] = {0};'初始化整個數組(9個值)爲0. –

回答

0

只要你想從數組丟棄0然後使用一個臨時變量,輸入它,檢查是否它是一個非零值,如果是這樣,則將其存儲到數組元素中,如果它是零則退出循環:

#include <stdio.h> 

int main(void) 
{ 

    int arrayTable[10] = {0}; 
    int iValue   = 0; 
    int i    = 0; 

    while(i < 10) 
    { 
     printf("Enter Measurement #%i (or 0): ", i+1); 
     scanf("%d", &iValue); // input iValue 

     if (!iValue) // if iValue is zero then exit loop without affecting array with this value 
      break; 
     else 
     { 
      arrayTable[i] = iValue; // if the value is non-zero store it in array and continue 
      i++; 
     } 
    } 

    for (int i = 0; i < 10; i++) 
    { 
     printf("%d\n", arrayTable[i]); 
    } 

    return 0; 
} 
+0

7,謝謝!這對我最有意義! – xxFlashxx

+0

@亞歷克斯歡迎!並感謝您將其標記爲已接受的答案 – Raindrop7

+1

輕微:不需要'else'。好的做法是檢查scanf()的返回值。 – chux

0

您probbaly想這樣的:

... 
    int arrayTable[10] = {0}; // <<< [10] instead of [9] 

    ... 

    for (i=0; i<10; i++) 
    { 
     if (arrayTable[i] == 0) // <<< add this 
     break;    // <<< 

     printf("%d\n", arrayTable[i]); 
    } 
    ... 
+1

如果我寫所有10個值。它將打印11個值,最後一個是隨機數。我怎麼能只打印10個值沒有第11個值 – xxFlashxx

+0

@Alex我不知道這個代碼如何能夠打印11個值而不是10個.' for(i = 0; i <10; i ++)'將循環'i'從0到9,這是10個值。 –

+0

不,你是對的,我有點不清楚。我指的是外部循環'(int j = 0; j xxFlashxx

1
#include <stdio.h> 

#define ArraySize 10 

int main(void){ 
    unsigned v, arrayTable[ArraySize] = {0}; 
    int n = 0;//number of elements 

    while(n < ArraySize){ 
     printf("Enter Measurement #%i (or 0): ", n + 1); 
     if(1 != scanf("%u", &v) || v == 0){//use other variable 
      break; 
     } 
     arrayTable[n++] = v; 
    } 

    for (int i = 0; i < n; ++i) { 
     printf("%u\n", arrayTable[i]); 
    } 

    return 0; 
}