C語言實訓 實訓項目一 統計歌唱比賽成績

實訓項目一 統計歌唱比賽成績

有10名選手參加某歌唱比賽,每位選手演唱自己參賽曲目後,7名評委亮出自己的評分,後臺人員會去掉最高分和最低分,將剩下的5個值求平均來計算該選手的比賽得分。比賽結束後,將根據此平均分進行排名和頒獎。

在實訓中,我們來模仿這一過程,由用戶輸入選手名稱和評委得分,然後由程序計算每位選手的最高分和最低分並輸出,去掉這兩個值求得並輸出其平均分,然後根據平均分將排名輸出。

  具體實現步驟:

  • 定義數組
  • 輸入10名選手的名字並保存
  • 輸入評委給的分數
  • 找到每位選手的最高分
  • 找到最低分
  • 去掉最高分和最低分,求每位選手的平均分
  • 根據選手得分排名次
  • 輸出比賽結果
    #include <stdio.h>
    int max[10],min[10]; 
    double average[10];    
    int no[10]={0,1,2,3,4,5,6,7,8,9}; 
    int main()
    {
      char names[10][10];   /*定義二維字符數組存放選手名字*/
      int i;
      for(i=0;i<10;i++)
      {
        printf("please input the name of the No. %d singer\n",i+1);
               /*提示用戶輸入編號爲i+1的選手的名字*/
        gets(names[i]);  
              /*將用戶輸入的字符串作爲該選手的名字*/
      } 
    
      int score[10][7],j;
      for(i=0;i<10;i++)
      {
    	  printf("\nplease input the score of the No. %d singer\n",i+1);
               /*提示用戶輸入編號爲i+1的選手的成績*/
         for(j=0;j<7;j++)
             scanf("%d",&score[i][j]);
      }
    for(i=0;i<10;i++)
     {
       max[i]=score[i][0];
          for(j=1;j<7;j++)
            if(score[i][j]>max[i])
               max[i] = score[i][j];
         printf("the highest score of the No.%d singer is:%d\n", i+1, max[i]);
    }
    for(i=0;i<10;i++)
     {
       min[i]=score[i][0];
          for(j=1;j<7;j++)
            if(score[i][j]<min[i])
               min[i] = score[i][j];
         printf("the lowest score of the No.%d singer is:%d\n", i+1, min[i]);
    }
    int sum,temp;                 	/*清零*/
    for(i=0;i<10;i++)
     {
       sum=0;
       for(j=0;j<7;j++)
       sum+=score[i][j];        		/*累加*/
       sum=sum-max[i]-min[i];      	/*去掉最高和最低分*/
       average[i] = (double)sum/5;    	/*計算平均分*/
       printf("the average score of the No.%d singer is:%lf\n\n", i+1, average[i]);
    }
    for(i=1;i<=6;i++)
    {
         for(j=0;j<7-i;j++)
         {
            /*比較的average[no[j]],而不是no[j]本身*/
            if(average[no[j]]<average[no[j+1]]) 
            {
               temp=no[j];  no[j]=no[j+1];  no[j+1]=temp;  /*交換排名位置*/
            }
          }
    }
     for(i=0;i<10;i++)
     printf("%d : %s(number:%d) get %lf\n",i,names[no[i]],no[i]+1,average[no[i]]);
     return 0;
    }
    
    
    

     

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章