Day5 7. 平均绩点 -卡码网C++基础课

题目链接:7. 平均绩点

题目描述

每门课的成绩分为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<iostream>
#include<string>
#include<stdio.h>
using namespace std;
int main(){
  string s;
  while(getline(cin,s)){
      float sum=0;
      int count=0;
      int flag=1;
      for(int i=0;i<s.size();i++){
          if(s[i]=='A') {sum+=4;count++;}
          else if(s[i]=='B'){sum+=3;count++;}
          else if(s[i]=='C'){sum+=2;count++;}
          else if(s[i]=='D'){sum+=1;count++;}
          else if(s[i]=='F'){sum+=0;count++;}
          else if(s[i]==' ') continue;
          else{
              flag=0;
              cout << "Unknown" << endl;
              break;
          }
      }
      if(flag) printf("%.2f\n",sum/count);
      
  }
  return 0;
}
小结

字符串 String

头文件引入
  #include<string>

声明与初始化
  string s1;              //默认初始化,s1是一个空字符串
  string s2 = "Hello";    //s2初始化为值是"Hello"字符串
  string s3(5,'a');       //s3是由5个'a'组成的字符串

字符串操作
  可以用 + 将字符串连接  如:s1="Hello"; s2="World"; s3=s1+' '+s2;
  size()获取字符串的长度
  使用下标操作符  [] 访问字符串中的每一位字符
  使用empty()来判断字符串是否为空

string的输入输出

  可使用cin cout 输入输出
    cin 输入 跳过开头的空白符,从第一个非空白符开始读取,直到遇到下一个空白符停止
    couts输出

  getline()输入
    一直读取字符,直到遇到换行符(Enter键)或文件结束符(如果从文件读取)才结束
    如:getline(cin, line);

  printf()输出
    输出保留两位小数的数字
    如:printf("%.2f\n", number);
    需引入头文件#include<stdio.h>

题目思想

持续读取一行行字符串
对字符串进行遍历
根据if-else匹配,进行sum增加和count增加
若遇到' '跳过,遇到其他不匹配字符跳出循环
为避免跳出循环后还打印平均绩点,需用flag,判断是否打印
posted @ 2025-12-18 15:16  afterday  阅读(1)  评论(0)    收藏  举报