0

基本的に、ユーザーが数字を入力するCプログラムがあります(例:4)。それが定義しているのは、配列に入る整数の数です(最大10)。ただし、ユーザーが「1 5 2 6」と入力できるようにしたい(たとえば)。つまり、空白で区切られたリストとして。

ここのところ:

#include<stdio.h>;

int main()
{
    int no, *noArray[10];    
    printf("Enter no. of variables for array");
    scanf("%d", &no);

    printf("Enter the %d values of the array", no);
    //this is where I want the scanf to be generated automatically. eg:
    scanf("%d %d %d %d", noArray[0], noArray[1], noArray[2], noArray[3]);

    return 0; 
}

どうすればよいかわかりませんか?

ありがとう

4

2 に答える 2

1

scanfは、フォーマット指定子/パーセント記号の前にあるすべての空白を自動的に消費します (空白を含めて一度に 1 文字を消費する %c の場合を除きます)。これは、次のような行を意味します。

scanf("%d", &no);

読み取りたい整数の前にあるすべての空白を実際に読み取り、無視します。したがって、for ループを使用して、空白で区切られた任意の数の整数を簡単に読み取ることができます。

for(int i = 0; i < no; i++) {
  scanf("%d", &noArray[i]);
}

上記のように、noArray は int の配列である必要があり、各要素のアドレスを scanf に渡す必要があることに注意してください。また、 #include ステートメントの後にセミコロンを付けるべきではありません。コンパイラは、エラーでない場合でも警告を表示する必要があります。

于 2012-11-14T01:38:10.177 に答える
0
#include <stdio.h>

int main(int argc,char *argv[])
{
    int no,noArray[10];
    int i = 0;

    scanf("%d",&no);
    while(no > 10)
    {
        printf("The no must be smaller than 10,please input again\n");
        scanf("%d",&no);
    }
    for(i = 0;i < no;i++)
    {
        scanf("%d",&noArray[i]);
    }
    return 0;
}

このように試すことができます。

于 2012-11-14T03:31:56.853 に答える