如何处理“以逗号分隔输入的一组数”?

原题:输入一串数,以‘,’分隔,输出所有数中去掉最大值、最小值之后剩下的个数。(其中最大值与最小值可能有多个)

将问题分解,则原问题包含两个细节点,一个核心点。

(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的判断。

后记:一个问题,刚入手时,要么想得太复杂,要么想得太简单,正确地分析和简化问题永远是解决问题的第一步。

posted @ 2014-04-30 20:00  beyonder  阅读(1605)  评论(0编辑  收藏  举报