日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

PAT甲级1137 Final Grading:[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数

發布時間:2025/4/5 c/c++ 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 PAT甲级1137 Final Grading:[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 題目分析
    • 題目鏈接

題目分析



分析:

首先一個學生有id,另外有4個成績:編程成績、期中成績、期末成績、總評成績。現有3個成績單:編程成績、期中成績、期末成績,讓計算總評成績,并排序輸出。

解答:使用string 到結構體的映射(建立hash表),<學號,學生結構體>,把所有信息存入結構體。

這里使用到結構體里面寫函數,結構體里面寫默認構造函數、結構體里面重載運算符等知識。(備注:和C++類很像)

//學生結構體 struct Student{string id;int program,mid,final;int grade;//默認構造函數:所有成績初始化為-1Student(): program(-1),mid(-1),final(-1),grade(-1) {}//計算總評成績void calc(){if(final > mid) grade = final;//round四舍五入函數else grade = round(mid * 0.4 + final * 0.6);}//重載小于號:排序bool operator<(const Student& a)const{if(grade !=a.grade) return grade > a.grade;else return id< a.id;} };

然后遍歷hash表,找出符合條件(及格)的學生結構體放入vector,對vector排序輸出即可。

AC代碼

#include<bits/stdc++.h> using namespace std;const int N =1e5+10; int p ,m , n;struct Student{string id;int program,mid,final;int grade;//構造函數Student(): program(-1),mid(-1),final(-1),grade(-1) {}void calc(){if(final > mid) grade = final;else grade = round(mid * 0.4 + final * 0.6);}bool operator<(const Student& a)const{if(grade !=a.grade) return grade > a.grade;else return id< a.id;} };unordered_map<string,Student> mp;int main(){cin >> p >> m >> n;string id;int grade;for(int i = 0; i<p ; i++){cin >> id>> grade;mp[id].id = id,mp[id].program = grade;}for(int i = 0; i<m ; i++){cin >> id>> grade;mp[id].id = id,mp[id].mid = grade;}for(int i = 0; i<n ; i++){cin >> id>> grade;mp[id].id = id,mp[id].final = grade;}vector<Student> students;for(auto item : mp){auto stu = item.second;stu.calc(); //計算總成績if(stu.program >= 200 && stu.grade >= 60)students.push_back(stu);}sort(students.begin(),students.end());for(auto s : students)printf("%s %d %d %d %d\n", s.id.c_str(), s.program, s.mid,s.final,s.grade);}

題目鏈接

PAT甲級1137 Final Grading
https://www.acwing.com/problem/content/1632/

總結

以上是生活随笔為你收集整理的PAT甲级1137 Final Grading:[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。