2018年苏州大学复试机试
要求
- 要求用C/C++编程;
- 对程序中必要的地方进行注释。
- 上机规则
- 请在电脑桌面上新建一个文件夹文件夹名为考试姓名(中文);
- 考试完毕后,将所编写的文件放在上述文件中。
第一题(20分)
题目
按下式要求计算e的近似值,n=5由键盘输入。
e = 1+1/1! + 1/2! + 1/3! +…+1/n!
代码
#include <iostream>
using namespace std;
double Factorial(int n);
int main() {
int n = 1;
double Sum = 0;
cout << "请输入n=" << endl;
cin >> n;
//计算和
for (int i = 0; i < n; ++i) {
Sum += Factorial(i + 1);
}
cout << "e的计算值为:" << Sum << endl;
return 0;
}
//计算单个1/n!,返回数值
double Factorial(int n){
double Ele = 1;
double Sum_Eone = 0;
for (int i = 0; i < n; ++i) {
Ele *= i + 1;
}
Sum_Eone = 1.0 / Ele;
return Sum_Eone;
}
结果
第二题(30分)
题目
以下三个问题,要求用函数编写:
有一个班的学生,本学期学了四门课,从键盘输入该班各同学各门课的成绩,假设学生数为3。
- 求出每门课程的平均成绩
- 求出全班的平均成绩
- 求出课程最低分的学生和成绩。
代码
#include <iostream>
#include <iomanip> //用来精确浮点数位数,fixed << setprecision(2),限定小数点后两位
using namespace std;
const int NUM_STUDENTS = 3;
const int NUM_COURSES = 4;
// 函数声明
void inputGrades(double grades[NUM_STUDENTS][NUM_COURSES]);
void displayCourseAverages(double grades[NUM_STUDENTS][NUM_COURSES]);
void displayClassAverage(double grades[NUM_STUDENTS][NUM_COURSES]);
void findMinScoreStudent(double grades[NUM_STUDENTS][NUM_COURSES], int& minStudent);
double calculateClassTotalScore(double grades[NUM_STUDENTS][NUM_COURSES], int studentIndex);
int main() {
double grades[NUM_STUDENTS][NUM_COURSES];
// 输入成绩
inputGrades(grades);
// 显示每门课程的平均成绩
displayCourseAverages(grades);
// 显示全班平均成绩
displayClassAverage(grades);
// 找到课程最低分的学生
int minStudent;
findMinScoreStudent(grades, minStudent);
// 显示结果
cout << "课程最低分的学生是学生 " << minStudent + 1 << ",成绩为:" << endl;
for (int j = 0; j < NUM_COURSES; ++j) {
cout << "课程 " << j + 1 << ": " << fixed << setprecision(2) << grades[minStudent][j] << endl;
}
cout << "总成绩: " << fixed << setprecision(2) << calculateClassTotalScore(grades, minStudent) << endl;
return 0;
}
// 输入成绩
void inputGrades(double grades[NUM_STUDENTS][NUM_COURSES]) {
cout << "请输入每位学生的四门课程成绩:" << endl;
for (int i = 0; i < NUM_STUDENTS; ++i) {
for (int j = 0; j < NUM_COURSES; ++j) {
cout << "学生 " << i + 1 << " 课程 " << j + 1 << " 成绩:";
cin >> grades[i][j];
}
}
}
// 计算每门课程的平均成绩并显示
void displayCourseAverages(double grades[NUM_STUDENTS][NUM_COURSES]) {
cout << "每门课程的平均成绩:" << endl;
for (int i = 0; i < NUM_COURSES; ++i) {
double courseAverage = 0;
for (int j = 0; j < NUM_STUDENTS; ++j) {
courseAverage += grades[j][i];
}
courseAverage /= NUM_STUDENTS;
cout << "课程 " << i + 1 << ": " << fixed << setprecision(2) << courseAverage << endl;
}
}
// 计算全班平均成绩并显示
void displayClassAverage(double grades[NUM_STUDENTS][NUM_COURSES]) {
double classAverage = 0;
for (int i = 0; i < NUM_STUDENTS; ++i) {
for (int j = 0; j < NUM_COURSES; ++j) {
classAverage += grades[i][j];
}
}
classAverage /= (NUM_STUDENTS * NUM_COURSES);
cout << "全班平均成绩: " << fixed << setprecision(2) << classAverage << endl;
}
// 计算每个学生的总分
double calculateClassTotalScore(double grades[NUM_STUDENTS][NUM_COURSES], int studentIndex) {
double totalScore = 0;
for (int j = 0; j < NUM_COURSES; ++j) {
totalScore += grades[studentIndex][j];
}
return totalScore;
}
// 找到总分最低的学生
void findMinScoreStudent(double grades[NUM_STUDENTS][NUM_COURSES], int& minStudent) {
minStudent = 0; // 初始化为第一个学生
for (int i = 1; i < NUM_STUDENTS; ++i) {
double totalScoreCurrent = calculateClassTotalScore(grades, i);
double totalScoreMin = calculateClassTotalScore(grades, minStudent);
if (totalScoreCurrent < totalScoreMin) {
minStudent = i;
}
}
}
结果
最后
此代码为个人编写,题目参考互联网资源,使用平台为Clion,C++17标准。
由于博主才疏学浅,如有错误请多多指正,如有更好解法请多多交流!