如何在输出中添加空间

时间:2019-07-11 15:53:15

标签: c

数组大小<= 1000,并在C编程中反转数组,并且打印时出现问题。

例如,输出为:

  

7654321

我想要:

  

7 6 5 4 3 2 1

第一行输入有关数组中元素数量的信息。第二个显示数组的背面。

#include <stdio.h>

int main()
{
    int k, i;
    scanf("%d",&k); //no of integers in array
    int a[1000];    //size given in question 
    for(i=0;i<=1000;i++)//accepting input
        scanf("%d",&a[i]);
    for(i=k-1;i>=0;i--)//for reversing string 
        printf("%d",a[i]);//my problem
    //code
    return 0;
}

1 个答案:

答案 0 :(得分:1)

除了您的问题外,该程序无效。

程序中声明的数组的有效索引范围是[0, 1000)。 但是在这个循环中

for(i=0;i<=1000;i++)//accepting input
    scanf("%d",&a[i]);

您正在尝试访问索引等于1000的元素,尽管数组没有这样的元素。

如果编译器支持可变长度数组,则可以使用用户输入的元素数声明一个数组。

在这种情况下,程序看起来像

#include <stdio.h>

int main( void )
{
    size_t n;

    printf( "Enter the size of an array (0 - exit): " );

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

        for ( size_t i = 0; i < n; i++ ) scanf( "%d", &a[i] );

        putchar( '\n' );

        for ( size_t i = n; i != 0; i-- ) printf( "%d ", a[i-1] );

        putchar( '\n' );
    }
}

程序输出看起来像

Enter the size of an array (0 - exit): 10

9 8 7 6 5 4 3 2 1 0 

请注意printf的调用

printf( "%d ", a[i-1] )
         ^^^  

它可以替换为以下两个函数调用

for ( size_t i = n; i != 0; i-- ) 
{
    printf( "%d", a[i-1] );
    putchar( ' ' );
}