1. 程式人生 > >【TK】1010:平均績點分數

【TK】1010:平均績點分數

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都要復位 } }