读取字符串

时间:2016-02-29 17:02:21

标签: c arrays reverse

我必须创建一个接收一系列数字的程序,将它们存储在(int)数组中并以相反的顺序打印。输入由两行组成:第一行包含一个表示整数量的整数,第二行包含由空格分隔的整数,以反向顺序打印,如下例所示:

输入:

4

2 5 45 10

输出:

10 45 5 2

问题是我不能将每个整数存储在数组的不同位置,因为它们只用空格分隔(而不是[Enter])。我怎么能解决这个问题? (对不起英语,这不是我的母语)。

2 个答案:

答案 0 :(得分:3)

如果编译器支持可变长度数组,那么您可以编写类似下面的内容

#include <stdio.h>

int main( void ) 
{
    unsigned int n;

    if ( scanf( "%u", &n ) == 1 && n != 0 )
    {
        int a[n];
        unsigned int i = 0;

        while ( i < n && scanf( "%d", &a[i] ) == 1 ) i++;

        while ( i != 0 ) printf( "%d ", a[--i] );
        printf( "\n" );
    }
}    

如果要输入

4
2 5 45 10

然后程序输出

10 45 5 2

否则,您应该在读取第一个数字后动态分配数组。

答案 1 :(得分:-1)

scanf完成工作:

  int max;
  scanf("%d", &max); 

  for (int i = 0; i < max; i++)
  {
    int number;
    scanf("%d", &number); 
    printf("%d\n", number);
  }

这允许您输入:

3
11 12 13

你会得到这个输出:

11
12
13

将数字存储在数组中并以相反的顺序显示它们留给读者练习。