2017-10-14 121 views
0

當我Enter新的價值,他們應該在View顯示像如何打印值列表?

1. 1 2 3 4 5 //first values 
2. 6 5 9 8 3 // second values 
3. 4 2 3 8 5 // ... 

列表,而是它打印只是第一個值的整個列表。如果可能的話,我嘗試修復這個沒有二維數組的問題。有任何想法嗎?

#include <stdio.h> 
#define LENGTH 5 
const char *menuMsg = "\n\n\t Menu \n\n\t v (View)\n\t e (Enter)\n\t q (Quit)\n"; 

int main(){ 
    int run = 1; 
    while(run){ 
     puts(menuMsg); 
     char choice; 
     scanf(" %c", &choice); 

     int x, z; 
     int a[LENGTH]; 
     int list=6; 

     if(choice=='e') { 
      for(x=0; x<LENGTH; x++){ 
       printf("Enter nr.%d: ", x+1); 
       scanf("%d", &a[x]); 
      } 
      z++; 
     } 
     else if(choice=='v') { 
      for(z=0; z<list; z++){ 
       printf("\n%d. ", z+1); 
       for(x=0; x<LENGTH; x++){ 
        printf("%d ", a[x]); 
       } 
      } 
     } 
     else if(choice=='q') run = 0; 
    } 
    return 0; 
} 
+1

'一個[長度]'只保存數據的一行。你應該繼續使用一個2維數組。 –

回答

1

您的陣列a的長度僅爲5。我很擔心,你因爲你指望它打印出6排5張值 - 30個人數的定義。

這可能會實現,修改你的需求:

#define LENGTH 5 // amount in a row (number of cols) 
#define HEIGHT 6 // amount of rows 

a[LENGTH * HEIGHT] = { 0, 2, 3, 4...}; 

for (z=0; z < HEIGHT; z++){ 
    printf("\n%d. ", z+1); 
    for (x=0; x < LENGTH; x++){ 
     printf("%d ", a[x + LENGTH*z]); 
    } 
}