如何处理“以逗号分隔输入的一组数”?
原题:输入一串数,以‘,’分隔,输出所有数中去掉最大值、最小值之后剩下的个数。(其中最大值与最小值可能有多个)
将问题分解,则原问题包含两个细节点,一个核心点。
(1)一串数:数有多少?
(2)以‘,’分隔:如何处理?
(3)核心要求:输出所有数中去掉最大值、最小值之后剩下的个数
//华为编程:输出去掉最大最小数后数的个数
#include <stdio.h>
#define N 20
int main()
{
int min,max,i=0;
int len=0;
int count=0;
int a[N];
char c='0';
while(c!='\n')
{
scanf("%d",&a[i]);
scanf("%c",&c);
i++;
}
len=i;
max=min=a[0];
for(i=1;i<len;i++)
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
for(i=0;i<len;i++)
{
if((a[i]!=max)&&(a[i]!=min))
count++;
}
printf("%d\n",count);
return 0;
}
max和min的初值有什么影响?代码可进一步简化,在循环输入时,进行max和min的判断。
后记:一个问题,刚入手时,要么想得太复杂,要么想得太简单,正确地分析和简化问题永远是解决问题的第一步。
浙公网安备 33010602011771号