输入一组数据,现在要你统计各个数据出现了多少次。
输入格式:
输入一组整数数据,数据的总数量sum(sum>=21),各个数据的值x(x<=20)。
输出格式:
输出sum值。
从小到大输出各个数据x(0<=x<=20)出现的次数,没有出现的输出0,输出格式为x出现的次数+空格。
输入样例:
在这里给出一组输入。例如:
1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
输出样例:
在这里给出相应的输出。例如:
21
0 3 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
各个数据值不大于20,那么就可以定义一个长度为21的整数数组,记录每个数出现的次数
#include <stdio.h>
int main()
{
int a[21] = {0},n=0,m,i;
char r;
do
{
scanf("%d",&m);
n++;
a[m]++;
r = getchar();
}while(r != '\n');
printf("%d\n",n);
for(i=0;i<n;i++)
printf("%d ",a[i]);
}
这样写:
#include <stdio.h>
int main()
{
int a[21];
for (int i = 0; i < 21; i++)
a[i] = 0;
int num;
while (scanf("%d", &num) != EOF) {
a[num]++;
if (getchar() == '\n')
break;
}
int sum = 0;
for (int i = 1; i <= 20; ++i)
sum += a[i];
printf("%d\n", sum);
for (int i = 0; i < 21; i++) {
if (i == 0)
printf("%d", a[i]);
else
printf(" %d", a[i]);
}
return 0;
}