2017-10-14 119 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]); 
    } 
}