如何处理“以逗号分隔输入的一组数”?
原题:输入一串数,以‘,’分隔,输出所有数中去掉最大值、最小值之后剩下的个数。(其中最大值与最小值可能有多个)
将问题分解,则原问题包含两个细节点,一个核心点。
(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的判断。
后记:一个问题,刚入手时,要么想得太复杂,要么想得太简单,正确地分析和简化问题永远是解决问题的第一步。