Распечатка элементов в массиве

#arrays #c

Вопрос:

В настоящее время код, над которым я работаю, близок, но у меня возникли проблемы с печатью сохраненных входных данных. Мой вывод должен выглядеть так, чтобы включать элементы ввода выше, а затем элементы в обратном порядке. В настоящее время мой код будет выводить только обратный массив.

     #include <stdio.h>
    
    int main(void) {
       const int NUM_VALS = 4;
       int courseGrades[NUM_VALS];
       int i;
    
       for (i = 0; i < NUM_VALS;   i) {
          scanf("%d", amp;(courseGrades[i]));
       }
       //above cannot be modified. Adding print statment below is 
       //close but only prints 4

       printf("%d n", courseGrades[i];
       for (i = NUM_VALS - 1; i > 0; i--) {
           printf("%d ", courseGrades[i]);
        }
        printf("%d n", courseGrades[i]);
       return 0;
    }
 

Комментарии:

1. Строка printf("%d n", courseGrades[i]); не находится внутри цикла for, поэтому она печатает только одну строку.

2. это было близко. Включение этой строки в цикл не работает. Ввод 7 9 10 11, так что его нужно распечатать, а затем перевернуть под ним, и это все, что у меня сейчас есть.

3. Попробуй это: i >= 0

Ответ №1:

Просто добавьте код для печати массива

 for (i = 0; i < NUM_VALS;   i) {
      printf("%d ", courseGrades[i]);
   }
printf("n");
 

Комментарии:

1. к сожалению, я не могу изменить эту часть кода. Я ненавижу сайт, который мы используем для заданий

2. какую часть кода вы можете изменить?

3. Я могу изменить только после последнего } из первого цикла for.

Ответ №2:

В первом цикле for переменная i увеличивается до NUM_VALS значения, которое равно 4 . После этого строка имеет printf(без закрывающей скобки)

 printf("%d n", courseGrades[i];
 

пытается печатать coursesGrade[4] по той причине, о которой я упоминал. Но в 4-м индексе нет значения, поэтому это вызывает неопределенное поведение. Поэтому сначала вам нужно удалить эту строку.

Кроме того, как упоминалось в комментариях выше, у вас есть ненужная строка, которая

 printf("%d n", courseGrades[i]);
 

Если вы настаиваете на его использовании, то сделайте это

 printf("%d n", courseGrades[0]);
 

или

 for (i = NUM_VALS - 1; i >= 0; i--) { // i>0 ==> i>=0
    printf("%d ", courseGrades[i]);
 }