选秀节目打分,分为专家评委和大众评委,score[] 数组里面存储每个评委打的分数,judge_type[] 里存储与 score[] 数组对应的评委类别,judge_type[i] == 1,表示专家评委,judge_type[i] == 2,表示大众评委,n表示评委总数。打分规则如下:专家评委和大众评委的分数先分别取一个平均分(平均分取整),然后,总分 = 专家评委平均分 * 0.6 + 大众评委 * 0.4,总分取整。如果没有大众评委,则总分 = 专家评委平均分,总分取整。函数最终返回选手得分。函数的接口:int cal_score(int score[], int judge_type[], int n)
#include <stdio.h>
#define N 5
int cal_score(int score[], int judge_type[], int n){
int average1 = 0, average2 = 0;//average1表示专家评委的平均分, average2表示大众平均分
int count1 = 0, count2 = 0;
int i;
int sum;//总的平均分
//不符合条件,返回-1
while((score == NULL) || (judge_type == NULL) || (n == 0)){
return -1;
}
for(i = 0; i < n; i++){
if(judge_type[i] == 1){
count1 ++;
average1 += score[i];
}
if(judge_type[i] == 2){
count2++;
average2 += score[i];
}
}
if(count1 == 0){
sum = average2 / count2;
}else if(count2 == 0){
sum = average1 / count1;
}else{
average1 /= count1;
average2 /= count2;
sum = average1 * 0.6 + (average2 * 0.4);
}
return sum;
}
void main(){
int score[N];
int judge_type[N];
int i;
int scr;
printf("输入score:\n");
for(i = 0; i < N; i++){
scanf("%d", &score[i]);
}
printf("输入对应的评委类别:\n");
for(i = 0; i < N; i++){
scanf("%d", &judge_type[i]);
}
scr = cal_score(score, judge_type, N);
printf("平均分数是:\t%d", scr);
getchar();
getchar();
}