1007 - 平均绩点

每门课的成绩分为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

C语言解答

#include<stdio.h>
#include<string.h>

int main()
{
	char a[80];
	int i,l,n;
	double s;
	while(gets(a))
	{
		l=strlen(a);
		for(n=s=i=0;i<l;i=i+2)
		{
			if(a[i]=='A')
				s+=4;
			else if(a[i]=='B')
				s+=3;
			else if(a[i]=='C')
				s+=2;
			else if(a[i]=='D')
				s+=1;
			else if(a[i]!='F')
				n++;
		}
		printf(n?"Unknown\n":"%.2lf\n",s/((l+1)/2));
	}
	return 0;
}

C++解答

#include<stdio.h>
#include<string.h>

int main()
{
	char a[80];
	int i,l,n;
	double s;
	while(gets(a))
	{
		l=strlen(a);
		for(n=s=i=0;i<l;i=i+2)
		{
			if(a[i]=='A')
				s+=4;
			else if(a[i]=='B')
				s+=3;
			else if(a[i]=='C')
				s+=2;
			else if(a[i]=='D')
				s+=1;
			else if(a[i]!='F')
				n++;
		}
		printf(n?"Unknown\n":"%.2lf\n",s/((l+1)/2));
	}
	return 0;
}
时间限制 1 秒
内存限制 32 MB
讨论 统计
上一题 下一题