Вывести элементы последовательности в обратном порядке - 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]);

Объяснение кода листинга программы

В этом коде:

  1. n--; - уменьшает значение переменной n на единицу. Это может быть необходимо, если ввод размера массива осуществляется до его инициализации, и нужно, чтобы n соответствовало реальному размеру массива.
  2. int arr[n]; - объявляет массив arr типа int с размером n.
  3. for (x=0; x<n; x++) scanf (%i, arr+x); - выполняет цикл, в котором происходит чтение n целых чисел с помощью функции scanf(). Каждое число сохраняется в соответствующем элементе массива arr.
  4. for (n=n-1; n>=0; n--) - выполняет цикл в обратном порядке по уменьшающемуся значению n.
  5. printf (%d , arr[n]); - выводит значение arr[n] в формате строки с пробелом после каждого числа. В итоге, данный код считывает n целых чисел, сохраняет их в массиве arr и выводит эти числа в обратном порядке.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.818 из 5
Похожие ответы