Вывести элементы последовательности в обратном порядке - 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
и выводит эти числа в обратном порядке.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д