const int maxSTR=1024;
char buf[maxSTR]={0};
scanf("%s",buf);
int ln=strlen(buf);
int maxnum=0;
for(int i=0;i<ln;i++)
{
if(!isnum(buf)) return 1;
if(maxnum<buf)
maxnum=buf;
}
Максимальное число из введённого (многозначного) на C
Вводим, например:
234
Max = 4
Вводим 8456
Max = 8
т.е. из числа нужно вытащить самую большую цифру. Кото-нибудь поможет? Си только начал изучать...
прочитай строку и пройдись по ней....
Код:
maxdig=0;
while(n!=0)
{
int d=n%10;
d=d>maxdig?d:maxdig;
n=n/10;
}
while(n!=0)
{
int d=n%10;
d=d>maxdig?d:maxdig;
n=n/10;
}
Код:
int a,s;
for( ; ; ){
printf("Input value:");
scanf("%d", &a);
if(!a) break;
for(s=0; a%10>s; s=a%10, a/=10);
printf("s=%d", s);
}
for( ; ; ){
printf("Input value:");
scanf("%d", &a);
if(!a) break;
for(s=0; a%10>s; s=a%10, a/=10);
printf("s=%d", s);
}
Кажется так :). Но есть глюк. Числа более 10 знаков считаются не правильно...
Код:
maxdig=d>maxdig?d:maxdig;
2m0zg: неправильно, попробуй число 8143.
Внутренний цикле завершится, если следующая цифра будет меньше предыдущей, а остальные проверены не будут.
При более 10 знаков работать будет неправильно (да и при 10, не всегда) потому, что размер инта 32 бита и максимальное значение знакового = 2147483647.
Используй вариант wanja, поменяв строчку:
Код:
d=d>maxdig?d:maxdig;
на приведенную выше или вариант WidowMaker, если надо обработать длинное число.