Вывести элементы последовательности в обратном порядке - C (СИ)
Формулировка задачи:
Дана последовательность из n чисел. Требуется написать программу, которая выведет её в обратном порядке. То, что я написала (ниже) вроде бы работает, но если убрать "n--", то получается, что в массиве больше чисел, чем было задано. А если убрать равно в одном из неравенств, то вообще выводятся какие-то большие числа. Можете, пожалуйста, объяснить в чём дело?
#include <stdio.h>
#include <stdlib.h>
int main() {
int n;
int x=0;
scanf ("%i", &n);
n--;
int arr[n];
for (x; x<=n; x++) scanf ("%i", &arr[x]);
for (n; n>=0; n--) printf ("%d ", arr[n]);
return 0;
}Решение задачи: «Вывести элементы последовательности в обратном порядке»
textual
Листинг программы
n--; // Зачем ???
int arr[n];
for (x=0; x<n; x++) scanf ("%i", arr+x);
for (n=n-1; n>=0; n--) printf ("%d ", arr[n]);
Объяснение кода листинга программы
В этом коде:
n--;- уменьшает значение переменнойnна единицу. Это может быть необходимо, если ввод размера массива осуществляется до его инициализации, и нужно, чтобыnсоответствовало реальному размеру массива.int arr[n];- объявляет массивarrтипаintс размеромn.for (x=0; x<n; x++) scanf (%i, arr+x);- выполняет цикл, в котором происходит чтениеnцелых чисел с помощью функцииscanf(). Каждое число сохраняется в соответствующем элементе массиваarr.for (n=n-1; n>=0; n--)- выполняет цикл в обратном порядке по уменьшающемуся значениюn.printf (%d, arr[n]);- выводит значениеarr[n]в формате строки с пробелом после каждого числа. В итоге, данный код считываетnцелых чисел, сохраняет их в массивеarrи выводит эти числа в обратном порядке.