c - 读取字符串中的数字序列

标签 c arrays reverse

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

输入:

4

2 5 45 10

输出:

10 45 5 2

问题是我无法将每个整数存储在数组的不同位置,因为它们仅由空格(而不是 [ Enter ] )分隔。我该如何解决这个问题? (抱歉英语,这不是我的母语)。

最佳答案

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

#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

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

关于c - 读取字符串中的数字序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35705230/

相关文章:

c++传递数组而不是可变长度参数列表

javascript - 数组中的任何更改都会更改整个数组吗?

c - 空声明中无用的类存储说明符

c - 是否允许编译器优化浮点常量乘法

c# - C#中的常量数组

java - 如何反转 Set<String> 中值的顺序

NGINX 反向代理内容无法正确显示

java - 可以以相反的顺序为java中的每个循环做一个吗?

c - gtk_events_pending() 返回 FALSE,事件仍然未决

检查 TCP 套接字上的传入接口(interface)