#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
typedef struct max {
char max1;
char max2;
char pos1;
char pos2;
} Max;
int main() {
long n = 836075291; /* число (надо бы вводить?) */
int len = floor(log10(abs(n)))+1; /* вычисляем число цифр */
char* bufer = malloc(len*sizeof(char)); /* буфер для числа */
Max* max = malloc(sizeof(Max)); /* буфер для результата */
memset(max,0,sizeof(Max));
char i = 0;
snprintf(bufer,len,"%d",n); /* переводим число в строку, 10-ичная система счисления) */
for(i=0;i<len;i++){
if((char)(*(bufer+i)-'0') > max->max1) {
max->max1 = (char)(*(bufer+i)-'0');
max->pos1 = i;
}
}
for(i=len-1;i>=0;i--){
if((char)(*(bufer+i)-'0') > max->max2 && (char)(*(bufer+i)-'0')!=max->max1) {
max->max2 = (char)(*(bufer+i)-'0');
max->pos2 = i;
}
}
printf("\npos1=%d", max->pos1); /* пишем положение старшей цифры */
printf("\npos2=%d", max->pos2); /* пишем положение почти старшей цифры */
printf("\nmax1=%d", max->max1); /* пишем максимальную цифру */
printf("\nmax2=%d", max->max2); /* пишем максимальную цифру */
free(bufer);
free(max);
return(0);
}