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自动使用格式说明符/百分号之前的任何空格(%c 除外,它一次使用一个字符,包括空格)。这意味着像这样的一行:

scanf("%d", &no);

实际上读取并忽略您要读取的整数之前的所有空格。因此,您可以使用 for 循环轻松读取由空格分隔的任意数量的整数:

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

请注意,noArray 应该是一个整数数组,并且您需要将每个元素的地址传递给 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 回答