Ошибка в поиске максимального элемента массива - 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будет храниться индекс первого максимального значения.