C++-一道OJ算法题目(求平均绩点)发生错误的原因
题目描述:
每门课的成绩分为A、B、C、D、F五个等级,为了计算平均绩点,规定A、B、C、D、F分别代表4分、3分、2分、1分、0分。
输入格式
有多组测试样例。每组输入数据占一行,由一个或多个大写字母组成,字母之间由空格分隔。
输出
每组输出结果占一行。如果输入的大写字母都在集合{A,B,C,D,F}中,则输出对应的平均绩点,结果保留两位小数。否则,输出“Unknown”。
样例输入
A B C D F
B F F C C A
D C E F
样例输出
2.00
1.83
Unknown
我的代码:
#include<iostream>
#include<string>
using namespace std;
int main()
{
double sum = 0;
int averagenum;
bool flag = true;
string s;
while(getline(cin,s))
{
int a = s.size();
averagenum = (s.size()+1)/2;
for(int i = 0;i < s.size();i = i+2)
{
if(s[i] == 'A')
sum += 4;
else if(s[i] == 'B')
sum += 3;
else if(s[i] == 'C')
sum += 2;
else if(s[i] == 'D')
sum += 1;
else if(s[i] != 'F')
flag = false;
}
if(flag == false)
cout << "Unknown" << endl;
else
{
cout.precision(2);
cout << fixed << sum/averagenum << endl;
}
sum = 0;
}
return 0;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你的while循环末尾没有重置 flag = true;