Как добавить пространство в выходной - PullRequest
0 голосов
/ 11 июля 2019

Размер массива <= 1000 и обратный массив в программировании на Си, проблема в печати. ​​</p>

Например, вывод:

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 Ответ

1 голос
/ 11 июля 2019

Помимо вашего вопроса программа недействительна.

Допустимый диапазон индексов для объявленного в программе массива: [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( ' ' );
}        
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...