#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. пожалуйста, считайте ответ принятым, если это помогло