2014-09-01 75 views
0

我想創建一個二維數組,其中行和列的數量是固定的,列值將從控制檯輸入中獲取。如何從C語言的一行控制檯輸入創建一個數組?

void main() { 
    int myArray[3][5]; 
    int i; 
    int a, b, c, d, e; // for taking column values 

    for (i = 0; i < 3; i++) { // i represents number of rows in myArray 
     printf("Enter five integer values: "); 
     // taking 5 integer values from console input 
     scanf("%d %d %d %d %d", &a, &b, &c, &d, &e); 

     // putting values in myArray 
     myArray[i][1] = a; 
     myArray[i][2] = b; 
     myArray[i][3] = c; 
     myArray[i][4] = d; 
     myArray[i][5] = e; 
    } 
    // print array myArray values (this doesn't show the correct output) 
    for (i = 0; i < 3; i++) { 
     printf("%d\t %d\t %d\t %d\t %d\t", &myArray[i][1], &myArray[i][2], 
       &myArray[i][3], &myArray[i][4], &myArray[i][5]); 
     printf("\n"); 
    } 
} 

當我運行此程序時,它正確地輸入輸入,但沒有按預期顯示數組輸出。我怎麼能這樣做,任何想法?請幫忙。

+2

'&myArray的[I] [1]' - 爲什麼'&'? – Mat 2014-09-01 17:50:08

回答

2

您的第二維是從myArray [i] [0]到myArray [i] [4]聲明的。 它不是從myArray [i] [1]到myArray [i] [5]

1

您在最終打印中有不必要的&操作員。我還刪除了你的a,b,c,d,e變量,以使代碼更加簡潔。您可以掃描數組中直接傳遞每個元素地址的值。

#include <stdio.h> 
void main() 
{ 
    int myArray[3][5]; 
    int i; 

    for(i=0; i<3; i++){ //i represents number of rows in myArray 
     printf("Enter five integer values: "); 
     //taking 5 integer values from console input 
     scanf("%d %d %d %d %d",&myArray[i][0], &myArray[i][1], &myArray[i][2], &myArray[i][3], &myArray[i][4]); // you can directly scan values in your matrix 

    } 


    for(i=0; i<3; i++){ 
     printf("%d\t %d\t %d\t %d\t %d\t\n", myArray[i][0], myArray[i][1], myArray[i][2], myArray[i][3], myArray[i][4]); // no need for the & sign which returns the address of the variable 
    } 

} 
+0

感謝您的解決方案。我還有一件事要知道。有可能在二維數組中,行的值是整數,列值是float/double嗎?假設在我的數組行中意味着學生的卷號和列代表了幾個教程編號,那麼是否可以爲教程編號取滾動和浮點數/雙數的整數? – Esika 2014-09-17 16:14:30

0

嘗試使用%1d

#include <stdio.h> 

int main(void) 
{ 
    int i; 
    int x[5]; 

    printf("Enter The Numbers: "); 

    for(i = 0; i < 5; i++) 
    { 
     scanf("%1d", &x[i]); 
    } 

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

    return 0; 
}