问答详情
源自:4-14 结束语句之break语句

我敲代码敲到晕头转向啦,求助求助啊~

4. 让用户输入学生的人数n,然后输入这n个学生的语文成绩,保存在数组中。然后分别计算输出:

(1)统计语文成绩平均分。

(2)不及格的学生序号及成绩、并统计不及格人数。

(3)最高分的成绩及最高分的学生的序号。


提问者:qq_酸涩的糖葫芦_0 2015-11-19 08:06

个回答

  • AAnonymous
    2015-11-19 15:09:54
    已采纳

    // bug: 多个最高分只记录了一个
    #include <iostream>
    #include <map>
    using namespace std;
    int main()
    {
    	int N; std::cin >> N;
    	int *score = new int[N];
    	int sum = 0;
    	float average = 0.0;
    	map<int, int> failMap;
    	int highest[2] = { 0 };
    	for (int i = 0; i < N; ++i) {
    		cin >> score[i];
    		sum += score[i];
    		if(score[i]>highest[1]){
    			highest[0] = i;
    			highest[1] = score[i];
    		}
    		if(score[i] < 60){
    			failMap.insert(make_pair(i, score[i]));
    		}
    	}
    	average = static_cast<float>(sum) / static_cast<float>(N);
    
    	cout << "(1)语文成绩平均分" << endl;
    	cout << average << endl;
    	cout << "(2)不及格学生序号及成绩" << endl;
    	for (auto x : failMap)
    		cout << "序号:" << x.first << " 成绩:" << x.second << endl;
    	cout << "不及格人数:" << failMap.size() << endl;
    	cout << "(3)最高分学生序号及成绩" << endl;
    	cout << "序号:" << highest[0] << " 成绩:" << highest[1] << endl;
    
    	return 0;
    }