作业帮 > 综合 > 作业

C++ while死循环的问题

来源:学生作业帮 编辑:大师作文网作业帮 分类:综合作业 时间:2024/11/13 20:51:25
C++ while死循环的问题
题目描述
每门课的成绩分为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
#include
using namespace std;
int main()
{
char a;
int b=0;
int c=0;
while(cin>>a)
{


switch(a)
{
case'A':b=b+4;break;
case'B':b=b+3;break;
case'C':b=b+2;break;
case'D':b=b+1;break;
case'F':b=b;break;
default:cout
C++ while死循环的问题
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
    char a;
double b=0;//定义成double型
double c=0;//定义成double型
double score=0;//可以增加一个计算总成绩的变量
bool temp=false;
while(true)//题目没有说明输入多少行 所以默认为无限输入
{
b=0;//每次重新输入时数据要初始化为0
c=0;//同上
temp=false;
score=0;
while((a=getchar())!='\n')//输入回车键表示完成一次输入
{  
if(a!=' ')//输入不是空格时就计算分数
{
switch(a)
{
case'A':b=b+4;break;
case'B':b=b+3;break;
case'C':b=b+2;break;
case'D':b=b+1;break;
case'F':b=b;break;
default:temp=true; break;//输入其它字符时记入temp为true在输入结束后输出对应的结果
}
c++;
}
}
if(!temp)
{
score=b/c;
cout<<fixed<<setprecision(2)<<score<<endl;
}
else
cout<<"Unknown"<<endl;
}
return 0;
}