这个题入门同学可以学习一下函数gets()的用法
题目描述
每门课的成绩分为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 <iomanip>
#include <cstring>
#include <cstdio>
using namespace std;
int main()
{
char s[1000004];
while(gets(s))
{
int l=strlen(s);
int flag=0;
for(int i=0; i<l; ++i)
{
if(s[i]!='A' && s[i]!='B' && s[i]!='C' && s[i]!='D' && s[i]!='F' &&s[i]!=' ')
{
flag=1;
cout<<"Unknown"<<endl;
break;
}
}
int sum=0;
int length=0;
if(flag==0)
{
for(int j=0; j<l; ++j)
{
if(s[j]=='A')
{
sum+=4;
length++;
}
if(s[j]=='B')
{
sum+=3;
length++;
}
if(s[j]=='C')
{
sum+=2;
length++;
}
if(s[j]=='D')
{
sum+=1;
length++;
}
if(s[j]=='F')
{
sum+=0;
length++;
}
}
double average=sum*1.0 / (length *1.0);
cout<<fixed<<setprecision(2)<<average<<endl;
}
}
return 0;
}