1007 - 平均绩点

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

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

Java解答

import java.text.DecimalFormat;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		while (scanner.hasNext()) {
			String line = scanner.nextLine();
			String[] str = line.split("\\s+");
			int length = str.length;
			double sum = 0;
			boolean flag = false;
			for (int i = 0; i < length; i++) {
				String s = str[i].trim();
				if (s.length() == 1) {
					char ch = s.charAt(0);
					double n = getScore(ch);
					if (n == -1) {
						flag = true;
						System.out.println("Unknown");
						break;
					} else {
						sum += (double)n + 0.0001;
					}
					
				} else {
//					flag = true;
//					System.out.println("Unknown");
//					break;
				}
			}
			
			if (flag) continue;
			
			DecimalFormat df = new DecimalFormat("0.00");
			System.out.println(df.format(sum / (double)length));

		}
	}

	public static double getScore(char ch) {

		switch (ch) {
		case 'A':
			return 4;
		case 'B':
			return 3;
		case 'C':
			return 2;
		case 'D':
			return 1;
		case 'F':
			return 0;
		default:
			return -1;
		}

	}
}

Python解答

#coding = utf-8

import re
import sys

f = sys.stdin;
#f = open('test.in', 'r');

def GetAns(line):
	markSet = ['A', 'B', 'C', 'D', 'F',];
	hashVal = { 'A':4, 'B':3, 'C':2, 'D':1, 'F':0 };

	ave = 0.0;
	for var in line:
		if( markSet.count(var) > 0 ):
			ave += hashVal[var];
		else:
			return 'Unknown';

	return ('%.2lf'%(1.0*ave/len(line)));

for line in f:
	line = line.split(' ');
	line[len(line)-1] = line[len(line)-1][:-1];
	print (GetAns(line));