Максимум
Напишите программу, которая находит максимум введенных целых чисел.
На вход поступает количество чисел, а затем сами числа.
Вот решение этой задачи:
/* Программа max.c "Максимум чисел" */ #include <stdio.h> int main () { int i, n, a, max; printf ("Введите количество чисел: "); scanf ("%d", &n); printf ("Введите %d чисел: ", n); scanf ("%d", &max); for(i = 1; i < n ; i++) { scanf ("%d", &a); if(a > max) max = a; } printf ("%d", max); return 0; }
scanf
считывает
объекты, разделенные любым числом пробельных символов.
Обратите внимание на второй printf
он имеет два аргумента:
printf ("Введите %d чисел: ", n);
%d
, которое соответствует формату "десятичная запись целого числа". На месте этого выражения будет напечатано на экране компьютера значение второго аргумента, то есть значение переменной n
.
В программе max.c
мы впервые встречаемся с условным оператором if
и оператором цикла
for
.
Оператор условного перехода записывается так:
if(A) B;
A
, то сделать B
".
Оператор for
устроен следующим образом:
for(A; B; C) D;
D
может быть как одной командой, так и произвольным набором команд,
заключенных в блок.
Команды объединяются в блок с помощью заключения их в фигурные скобок.
В нашем случае D
это
scanf ("%d", &a); if(a > max) max = a;
D
называется телом цикла это то, что будет выполнятся несколько раз.
Сколько именно? Это зависит от B
тело D
будет выполнятся пока выполнено условие B
.
Например, строчка
for( i = 0 ; i < 10 ; i++ ) { printf ( "Hi!" ); }
Hi!
". Более подробно:
- положим
i = 0
; - проверим, что
i < 10
; если условие не выполнено, то перейдем к пункту 5; - выполним
printf ( "Hi!" )
; - выполним
i++
(увеличим переменнуюi
на 1) и перейдем к пункту 2; - конец цикла;
for
можно изобразить в виде блок схемы:

- Объявляем все переменные, которые встретятся встречаются в нашей программе:
-
n
количество чисел, -
i
переменная цикла, -
max
переменная для хранения текущего найденного максимума, -
a
переменная с очередным числом, в неё мы считываем каждое число.
-
- Печатаем на экран приглашение ввести число
n
. - Считываем
n
. - Печатаем на экран приглашение "Введите
n
чисел". - Считываем первое из этих
n
чисел в переменнуюmax
. - В цикле
n - 1
раз считываем очередное число, и если оно больше, чем текущий максимум, то обновляем переменнуюmax
. - Выводим значение переменной
max
.
scanf
указываем переменные,
в которые нужно поместить считываемые данные, то перед именем переменной ставим знак & (амперсанд), в то время как в printf
при печати значений переменных амперсанд не ставится.
Операция "амперсанд" это операция взятия адреса.
Если a
есть значение переменной a
, то &a
это адрес в памяти компьютера, где хранится переменная a
: одно есть само число, другое место, где это число хранится.
- Функции
scanf
нужно знать не текущее значение переменной, а еёадрес
, чтобы положить туда результат считывания. - Функции
printf
нужно знать значения переменных, чтобы их печатать.

scanf
нужно передавать адреса переменных, куда помещать считываемые данные.