某电视台要调查观众对该台8个栏目(设相应栏目编号为1~8)的受欢迎情况,共调查了n位观众(1≤n≤1000),现要求编写程序,输入每一位观众的投票情况(每位观众只能选择一个最喜欢的栏目投票),统计输出各栏目的得票情况。
输入格式
输入在第1行中给出一个正整数n(1≤n≤1000),第2行输入n个整数,其间以空格分隔。输出格式
按顺序输出所有8个栏目的编号和得票数,每个数占4位,每行输出一个栏目的编号和得票数。输入样例
10
3 4 7 6 3 9 2 3 1 8
输出样例
1 1
2 1
3 3
4 1
5 0
6 1
7 1
8 1
代码如下:
#include<stdio.h>
int main()
{
int n,i;
int a[8]={0};//每个栏目的票数默认为0
scanf("%d",&n);//定义有几位观众投票
for(i=0;i<n;i++)//几位观众投票就循环几次
{
int j;
scanf("%d",&j);
if(j>0&&j<9)//栏目编号不是1-8不计票
a[j-1]++;//因为数组是从0开始定义的,所以所对应的节目的票数就是a[j-1]
}
for(i=0;i<8;i++)
printf("%4d%4d\n",i+1,a[i]);//题目要求每个数占4位,所以是%4d
return 0;
}
本题需要做的就是输出栏目编号以及观众的投票情况。
因为栏目编号是已经规定好的,所以我们只需要定义一个数组来存每个栏目所得的票数,并将默认各栏目的票数设为0。之后再循环输入各观众的投票情况,并将数组中栏目所对应的票数+1即可。
关于计票:由输入样例可知观众的投票有可能是无效票(如:9),所以当出现无效票时,则不计该票。(否则当a[j-1]++的时候可能会导致数组角标越界)
关于输出:输出项为栏目编号以及栏目所得票数,可通过一个循环来顺序输出栏目编号以及数组中栏目所得票数。