0

行数と列数が固定され、列の値がコンソール入力から取得される 2 次元配列を作成したいと考えています。

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");
    }
}

このプログラムを実行すると、入力は正しく取得されますが、期待どおりに配列出力が表示されません。どうすればこれを行うことができますか?助けてください。

4

3 に答える 3

2

2 番目の次元は myArray[i][0] から myArray[i][4] に宣言されます。myArray[i][1] から myArray[i][5] ではありません

于 2014-09-01T17:51:02.807 に答える
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
    }

}
于 2014-09-01T17:53:56.313 に答える
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;
}
于 2014-09-01T17:55:07.343 に答える