я думаю, что с этим массивом что-то не так, но я не знаю, что именно?

#c

#c

Вопрос:

 #include <stdio.h>
#include <stdlib.h>



int main() {
    int n;
    scanf("%d",amp; n );
    int array[n];
    scanf("n%d",array );
    int i;
    for( i=0;i<=n;i  )
    if(array[i]>array[i-1]amp;amp;array[i]>array[i 1]){
        printf("n%d",array[i]);
    }
    
    return 0;
}
 

Входные данные — это как размер, так и элементы массива, программа должна печатать элементы, которые больше своих соседей (элементы в правой и левой части массива).

входные данные: 5 (размер массива)
2 4 3 2 1 (элементы массива)

выход: 4 (больше, чем 2 и 3)

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

1. По крайней мере, укажите, каково текущее поведение программы. // Хотя вам следует немного подумать об этом и помнить, что доступ к массиву вне границ — это неопределенное поведение.

2. Вы сканируете только один элемент, так почему массив?

3. @Saba zare Вы не можете прочитать весь массив, используя такой вызов scanf scanf(«n%d»,array ); . Этот scanf считывает значение только для первого элемента массива. Также, если массив содержит n элементов, допустимый диапазон индексов равен [0, n)

4. И вам, вероятно, нужно просмотреть свой учебник, заметки к урокам или учебные пособия, чтобы увидеть, как они считываются в массив, потому что вы считываете только один элемент array[0] .

5. scanf("n%d",array ); но почему?

Ответ №1:

Я думаю, что ты пытаешься это сделать

 #include <stdio.h>

int main() {

  int i, n;
  printf("Enter length of array : ");
  scanf("%d", amp; n);

  int array[n];

  //getting values for array
  printf("Enter elements of array : n");
  for (i = 0; i < n; i  ) {
    printf("array[%d] => ", i);
    scanf("%d", amp; array[i]);

  }
  printf("Output : ");
  for (i = 1; i < n - 1; i  ) {
    if (array[i] > array[i - 1] amp;amp; array[i] > array[i   1]) {
      printf("%dt", array[i]);
    }
  }

  return 0;
}
 

Здесь следует отметить одну вещь: вы можете использовать malloc() , realloc() для динамического распределения.
Я думал не кодировать ответ, но, похоже, вы новичок в C.
Итак, сначала начните изучать основы

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

1. пожалуйста, считайте ответ принятым, если это помогло