C++-一道OJ算法题目(求平均绩点)发生错误的原因

发布于 2017-04-20 18:36:19 字数 1380 浏览 1214 评论 1

题目描述:
每门课的成绩分为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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说ぺ晚安 2017-10-07 06:19:56

你的while循环末尾没有重置 flag = true;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文