蓝桥杯 歌唱比赛 C++算法提高 HERODING的蓝桥杯之路

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  X市正在进行歌唱比赛,请你写一个程序计算得分。

每名选手从1到N编号,每名选手的综合成绩由以下几个部分组成:

1.歌唱得分占70%

2.才艺展示得分占20%

3.观众投票得分占10%

4.不超过五分的特殊加分(如果总分超过100分则记为100)
输入格式
  第一行一个整数N,表示选手人数

接下来N行,每行四个整数,分别表示歌唱得分,才艺得分,投票得分和加分。
输出格式
  输出N行,每行一个数,表示得分(保留一位小数)
样例输入
6
62 50 60 1
77 71 85 3
98 79 98 5
75 62 60 0
99 72 68 4
82 88 89 2
样例输出
60.4
79.6
99.2
70.9
94.5
85.9
数据规模和约定
  N <= 10000;
提交代码

解题思路:
一个简单的输入判断问题,我用一个二维数组表示各个成绩(当然在做完之后发现结构体才是最好用的),另一个数组存储最后的总分,在输入成绩的时候就录入到总分中,并判断是否大于100,最后的输出要注意限制输出位数,代码如下:

#include<bits/stdc++.h>

using namespace std;

double a[10000][4];
double b[10000];

int main(){
	int n;
	cin >> n;
	for(int i = 0; i < n; i ++){
		for(int j = 0; j < 4; j ++){
			cin >> a[i][j];
			if(j == 0){
				b[i] += a[i][j] * 0.7;
			}else if(j == 1){
				b[i] += a[i][j] * 0.2;
			}else if(j == 2){
				b[i] += a[i][j] * 0.1;
			}else{
				b[i] += a[i][j];
			} 
			if(b[i] > 100){
				b[i] = 100;
			}
		}
	}	
	cout << setiosflags(ios::fixed) << setiosflags(ios::right) << setprecision(1);//限制输出位数 
	for(int i = 0; i < n; i ++){
		cout << b[i] << endl;
	}
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/HERODING23/article/details/107652827
今日推荐