本题主要的得分点在怎么求数组中的最大值和次大值,方法有很多,最常见的就是对数组进行排序,可以很轻松得到最大值和次大值。本题采用另外一个思路,第一次先在数组中找到最大值,第二次查找剩下的最大值(排除掉最大值,不是删除)
另外比较困扰的一点就是怎么直接从带空格的输入中直接得到整型数字,而不是像本题一样先当字符串去接收,然后从字符串中转数字保存到另外的一个整型数组中
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stddef.h>
#include <ctype.h>
int main()
{
// please write your code here
char oriInput[200] = {0};
int inputInt[100] = {0};
fgets(oriInput,200,stdin);
int len = strlen(oriInput);
int i=0,k=0;
int fimax=0,semax=0;
char *pStart = oriInput;
for(i=0; i<len; i++)
{
if(oriInput[i] == ' ')
{
oriInput[i] = '\0';
inputInt[k++] = atoi(pStart);
pStart = &oriInput[i+1];
}
}
inputInt[k] = atoi(pStart);
for(i=0; i<=k; i++)
{
if(fimax < inputInt[i])
fimax = inputInt[i];
}
for(i=0; i<=k; i++)
{
if(semax < inputInt[i] && inputInt[i] != fimax)
semax = inputInt[i];
}
if(fimax == semax)
semax = 0;
printf("%d %d",fimax,semax);
return 0;
}