Ошибка в поиске максимального элемента массива - C (СИ)
Формулировка задачи:
Здавствуйте. Написал программу для нахождения максимального элемента масссива.
Ввожу 1, 2, 3 - выдает max=какое-нибудь большое непонятное число
Из-за чего это и где ошибка? Помогите пожалуйста
#include <stdio.h> #define size 3 void main() { int mas[size]; int i, max; max=0; for(i=0; i<size; i++) { scanf("%i", &mas[i]); if (i==0 || mas[i]>max) max=mas[i]; } printf("max=%i", &max); }
Решение задачи: «Ошибка в поиске максимального элемента массива»
textual
Листинг программы
#include <stdio.h> #define size 3 void main() { int mas[size]; int i, num, max; max=0; for(i=0; i<size; i++) { scanf("%i", &mas[i]); if (i==0 || mas[i]>max) { max=mas[i]; num=i; } } printf("max=%i\nnummax=%i", max, num); }
Объяснение кода листинга программы
В этом коде:
- Объявлен массив
mas
размеромsize
переменной типаint
. - Далее, объявлены переменные
i
,num
иmax
также типаint
. - Переменная
max
инициализируется значением 0. - В цикле
for
перебираются все элементы массиваmas
. - Каждый элемент массива
mas
считывается с помощью функцииscanf
в переменнуюnum
, а затем проверяется условие, что текущий элемент больше максимального значения, хранящегося в переменнойmax
. - Если условие выполняется, то значение текущего элемента присваивается переменной
max
, а значение переменнойi
присваивается переменнойnum
. - После окончания цикла, выводятся значения переменных
max
иnum
. Ошибка в коде заключается в том, что при равенстве двух максимальных значений, будет проигнорировано второе максимальное значение, и в переменнойnum
будет храниться индекс первого максимального значения.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д