調查電視節目受歡迎程度(程式碼及詳解)

午後的貓發表於2020-10-27

       某電視臺要調查觀眾對該臺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]++的時候可能會導致陣列角標越界)

       關於輸出:輸出項為欄目編號以及欄目所得票數,可通過一個迴圈來順序輸出欄目編號以及陣列中欄目所得票數。

相關文章