Цикл вайл язык Си #include main() { int N,a, max, i, imax; scanf("%d", &N); max=0; ...

0 голосов
122 просмотров

Цикл вайл язык Си
#include
main()
{
int N,a, max, i, imax;
scanf("%d", &N);
max=0;
i=0;
while (N>0)
{ i++;
a=N%10;
N=N/10;
if (a>max)
{ max=a;
imax=i;
}}
printf ("%d", imax);

}
это моя программа , где ошибка?
это задание

Дано натуральное число N (N<=10 в 9 степени). Определить порядковый номер его максимальной цифры, считая от начала числа (если таких цифр несколько, то вывести номер первой встретившейся)<br>
Пример входных и выходных данных
№ теста Входные данные Выходные данные
1 45545 2
2 100 1


Информатика (89 баллов) | 122 просмотров
Дан 1 ответ
0 голосов
Правильный ответ

В Вашей программе номер максимального числа подсчитывается  от младших разрядов числа к старшим, а вывести нужно номер от старших разрядов к младшим.  Поэтому, нужно добавить в программу строку   imax = i - imax + 1;   перед строкой
 printf ("%d", imax);
И ещё, так как нужно вывести первую максимальную цифру числа (если их несколько), то нужно изменить строку   if (a>max)   на  строку   if (a>=max)


(9.7k баллов)
0

это не работает

0

проверьте

0

в примере 45545

0

выводит 5

0

Ответ изменен.

0

спасибо

0

Не за что.