2014-09-01 172 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; 
}