【TK】1010:平均績點分數
阿新 • • 發佈:2019-01-02
1010:平均績點分數
時間限制:1 秒記憶體限制:32 兆
標籤
簡單模擬
題目描述
每門課的成績分為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>
#include <string.h>
int main()
{
char a[100];
int i,n,flag;
double sum;//浮點數都設定為double
while(gets(a))//注意輸入有空格,scanf遇到空格就退出,用gets
{
flag=1;
sum=n=0;//sum統計字元對應的和,n統計字元個數
for(i=0;i<strlen(a);i+=2)//遇到空格跳過,故計數器為i+=2
{
if (a[i]=='A') sum+=4,n++;求平均數->求和+求個數
else if(a[i]=='B') sum+=3,n++;
else if(a[i]=='C') sum+=2,n++;
else if(a[i]=='D') sum+=1,n++;
else if(a[i]=='F') n++;
else flag=0;//標誌變數記錄有無非法輸入
}
if(flag)
{
printf("%.2f\n" ,sum/n);
}
else
{
printf("Unknown\n");
}
n=0;
sum=0;
flag=1;//多次輸入,所以計數器n,總和sum,標誌變數flag都要復位
}
}