=0&&x{a[n]=x;n++;}scanf("%d",&x);}for(i=0;ic[i]=0;for(i=0;ic[" />
搜档网
当前位置:搜档网 › C语言统计数字出现的个数

C语言统计数字出现的个数

程序功能:统计数字出现的个数
例如:输入1 2 3 1 2 4 2 3 1
输出:1 3
2 3
3 2
4 1
能看懂吗?就是1出现3次,2出现3次,3出现2次,4出现1次

#define M 50
main()
{int a[M],c[5],i,n=0,x;
scanf("%d",&x);
while (x!=-1)
{if (x>=0&&x<=4)
{a[n]=x;
n++;
}
scanf("%d",&x);
}
for (i=0;i<5;i++)
c[i]=0;
for (i=0;ic[a[i]]++;
printf("\n");
for (i=1;i<=4;i++)
printf("%d %d\n",i,c[i]);
}

先把帖子中的程序讲解一下:

a[M]存放输入的数据;
c[5]存放0,1,2,3,4的个数;
i为循环时使用的变量;
n=0为输入时的数据个数增量,也即a数据的下标增长量;
x为输入时的临时变量。

其程序思想为:
1、定义一个50个int型的数组a来存放输入的数据。
2、定义一个5个int型的数组c来存放0,1,2,3,4的个数。
3、先输入一个数。
4、进入while循环,在其中可以反复输入数据。
5、按要求统计打印出所统计的数据个数。

由上可知,程序具有以下限制:
1、输入的数据个数不能超过50个。
2、统计的数字中,0没有统计打印出来。
3、程序只能统计数字1~4的个数,就通用性而言,如果要增加统计数字个数,就会使程序变得较长,并且使用了for循环来实现。如果要统计从0~9的每个数字的个数,那么其后就要使用10次for循环来实现统计。显然还可以具有其他方法实现。
4、从程序的效率来考虑,输入数据和统计数字个数,两者是分离的。如果当程序较大时;或统计较多时(如银行系统),程序将变得难以忍受。
5、其优点是可以存放保留了输入的数据,但不能超过50个数据。

结论:以上程序只是适用于较小的应用软件,或者是定制的应用程序。

下面我再提出一种程序思想,大家可以编制对比一下,这里就不给出代码了。
1、定制一个int型数组,用于存放0~9的数据个数。
2、定制变量x,用于存放输入的临时变量。
3、使用while循环来实现数据输入。
4、在循环中留有出口,可以使用kbhit()函数来实现,看一看函数库就行。
5、此项可选,定义一个int型数组a,用于存放输入的数据。
6、在输入数据后就直接计算出数字的个数。不再单独利用for循环来进行统计,把输入和统计放在一起来实现。

以上方法叫做:计算任务量平均分配,因为把每次需要计算的任务量都平均分配到了用户在输入数据时的时间片里,用户感觉不到;一旦输入完毕,就可以立即打印结果。此种方法适合于大的软件工程,例如银行系统的数据统计

相关主题