HDU1202 无语题
2012-04-24 23:32
99 查看
这一题WA了8次。再看讨论时,骂声一片!个人也觉得这题出的不好。贴在这,供后来者借鉴。
#include<iostream> #include<iomanip> using namespace std; double judge_score(int tem) //分数对应的点数,题目给出的只是整数,所以调用时要强制类型转化 { if(tem>=90 && tem<=100) return 4.0; else if(tem>=80 && tem<=89) return 3.0; else if(tem>=70 && tem<=79) return 2.0; else if(tem>=60 && tem<=69) return 1.0; return 0.0; } int main() { int t,i; double credit,score; while(cin>>t) { double all_score=0.0,all_credit=0.0; for(i=0;i<t;i++) { cin>>credit>>score; if(score!=-1) //分数为-1,不计算 { all_score+=judge_score(int(score))*credit; //分数的强制类型转化,应该很重要,没做这个,结果WA了8次 all_credit+=credit; } } if(all_credit==0.0 || all_score==0.0) //GPA不存在 { cout<<-1<<endl; continue; } double GPA=all_score*1.0/all_credit; cout<<setiosflags(ios::fixed)<<setprecision(2)<<GPA<<endl; } return 0; }