平均绩点
题目描述
每门课的成绩分为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 <stdio.h>
int main()
{
char a[1000];
char *p=a;
double sum=0;
int k=0,lan=0;
while(gets(a))//输入有空格用gets
{
lan=0;//初始化
k=0;
sum=0;
p=a;
while(*p)//字符串读取到末尾
{
switch(*p)
{
case ‘A’:sum+=4;k++;
break;
case ‘B’:sum+=3;k++;
break;
case ‘C’:sum+=2;k++;
break;
case ‘D’:sum+=1;k++;
break;
case ‘F’:sum+=0;k++;
break;
case ’ ':break;
default:lan=1;break;
}
p++;//自增
}
if(!lan)
printf("%.2f\n",sum/k);
else
printf(“Unknown\n”);//不能放在default里
}
return 0;
}
转载:https://blog.csdn.net/xiaolan7777777/article/details/97017266