C++大学教程(第九版)5.15修改GradeBook

2024-01-18 22:20

本文主要是介绍C++大学教程(第九版)5.15修改GradeBook,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

题目

代码

运行命令(在控制台输入)

运行截图


题目

(修改GradeBook)修改图5.9~图5.11所示的 GradeBook 程序,使它计算一组成绩的平均成绩。
成绩A为4分,成绩B为3分,依次类推。
A:4
B:3
C:2
D:1
E:0
F:-1

代码

注意有注释的位置,基本都是有修改的地方。

//5_15.h// GradeBook.h#include <string>class GradeBook
{
public:GradeBook(std::string);void setCourseName(std::string);std::string getCourseName() const;void setCourseTeacher(std::string);std::string getCourseTeacher() const;void displayMessage() const;void inputGrades();void displayGradeReport() const;private:std::string courseName;unsigned int aCount;unsigned int bCount;unsigned int cCount;unsigned int dCount;unsigned int eCount;unsigned int fCount;double gradeSum;//增加了存储分数和的变量
};
//5_15.cpp#include <iostream>
#include "5_15.h"
#include <iomanip>
using namespace std;GradeBook::GradeBook(string name) : aCount(0), bCount(0), cCount(0), dCount(0), eCount(0), fCount(0)
{setCourseName(name);
}void GradeBook::setCourseName(string name)
{if (name.size() <= 25)courseName = name;else{courseName = name.substr(0, 25);cerr << "name\"" << name << "\"exceeds maximum length(25).\n"<< "Limiting courseName to first 25 characters.\n"<< endl;}
}string GradeBook::getCourseName() const
{return courseName;
}void GradeBook::displayMessage() const
{cout << "Welcome to the grade book for " << getCourseName() << endl;
}void GradeBook::inputGrades() // 有修改
{int grade;gradeSum = 0.0; // 初始化cout << "Enter the letter grades:" << endl<< "Enter the EOF character to end input." << endl;while ((grade = cin.get()) != EOF){switch (grade){case 'A':case 'a':aCount++;gradeSum += 4; // 添加每个字母对应的分数break;case 'B':case 'b':bCount++;gradeSum += 3;break;case 'C':case 'c':cCount++;gradeSum += 2;break;case 'D':case 'd':dCount++;gradeSum += 1;break;case 'E':case 'e':eCount++;gradeSum += 0;break;case 'F':case 'f':fCount++;gradeSum += (-1);break;case '\n':case '\t':case ' ':break;default:cout << "Incorrect letter grade entered."<< "\nPlease enter a new grade." << endl;break;}}
}void GradeBook::displayGradeReport() const//有修改
{int count;cout << "\n\nNumber of students who received each letter grade:"<< "\nA:" << aCount << "\nB:" << bCount << "\nC:" << cCount<< "\nD:" << dCount << "\nE:" << eCount << "\nF:" << fCount << endl;count = aCount + bCount + cCount + dCount + eCount + fCount;                      // 求一共有多少个字母cout << "这一组成绩的平均数:" << gradeSum / (static_cast<double>(count)) << endl; // 计算平均数;
}
//5_15main.cpp#include <iostream>
#include "5_15.h"
using namespace std;int main()
{GradeBook myGradeBook("zhang san");myGradeBook.displayMessage();myGradeBook.inputGrades();myGradeBook.displayGradeReport();return 0;
}

运行命令(在控制台输入)

g++ 5_15main.cpp 5_15.cpp -o 5_15.exe
5_15.exe

注意:如果输入5_15.exe执行不了,可以尝试使用 ./5_15.exe (别忘记最开始的点),我之前用这个命令执行的代码。

运行截图

最后,大家有问题欢迎一起交流,正在努力学习C++ ~~~

这篇关于C++大学教程(第九版)5.15修改GradeBook的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/620446

相关文章

C++ move 的作用详解及陷阱最佳实践

《C++move的作用详解及陷阱最佳实践》文章详细介绍了C++中的`std::move`函数的作用,包括为什么需要它、它的本质、典型使用场景、以及一些常见陷阱和最佳实践,感兴趣的朋友跟随小编一起看... 目录C++ move 的作用详解一、一句话总结二、为什么需要 move?C++98/03 的痛点⚡C++

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

详解C++ 存储二进制数据容器的几种方法

《详解C++存储二进制数据容器的几种方法》本文主要介绍了详解C++存储二进制数据容器,包括std::vector、std::array、std::string、std::bitset和std::ve... 目录1.std::vector<uint8_t>(最常用)特点:适用场景:示例:2.std::arra

C++构造函数中explicit详解

《C++构造函数中explicit详解》explicit关键字用于修饰单参数构造函数或可以看作单参数的构造函数,阻止编译器进行隐式类型转换或拷贝初始化,本文就来介绍explicit的使用,感兴趣的可以... 目录1. 什么是explicit2. 隐式转换的问题3.explicit的使用示例基本用法多参数构造

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

C++打印 vector的几种方法小结

《C++打印vector的几种方法小结》本文介绍了C++中遍历vector的几种方法,包括使用迭代器、auto关键字、typedef、计数器以及C++11引入的范围基础循环,具有一定的参考价值,感兴... 目录1. 使用迭代器2. 使用 auto (C++11) / typedef / type alias

Python + Streamlit项目部署方案超详细教程(非Docker版)

《Python+Streamlit项目部署方案超详细教程(非Docker版)》Streamlit是一款强大的Python框架,专为机器学习及数据可视化打造,:本文主要介绍Python+St... 目录一、针对 Alibaba Cloud linux/Centos 系统的完整部署方案1. 服务器基础配置(阿里

C++ scoped_ptr 和 unique_ptr对比分析

《C++scoped_ptr和unique_ptr对比分析》本文介绍了C++中的`scoped_ptr`和`unique_ptr`,详细比较了它们的特性、使用场景以及现代C++推荐的使用`uni... 目录1. scoped_ptr基本特性主要特点2. unique_ptr基本用法3. 主要区别对比4. u

C++11中的包装器实战案例

《C++11中的包装器实战案例》本文给大家介绍C++11中的包装器实战案例,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录引言1.std::function1.1.什么是std::function1.2.核心用法1.2.1.包装普通函数1.2.

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js