2018年苏州大学复试机试
要求
- 要求用C/C++编程;
- 对程序中必要的地方进行注释。
- 上机规则 1. 请在电脑桌面上新建一个文件夹文件夹名为考试姓名(中文);2. 考试完毕后,将所编写的文件放在上述文件中。
第一题(20分)
题目
按下式要求计算e的近似值,n=5由键盘输入。
e = 1+1/1! + 1/2! + 1/3! +…+1/n!
代码
#include<iostream>usingnamespace std;doubleFactorial(int n);intmain(){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;return0;}//计算单个1/n!,返回数值 doubleFactorial(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),限定小数点后两位 usingnamespace std;constint NUM_STUDENTS =3;constint NUM_COURSES =4;// 函数声明 voidinputGrades(double grades[NUM_STUDENTS][NUM_COURSES]);voiddisplayCourseAverages(double grades[NUM_STUDENTS][NUM_COURSES]);voiddisplayClassAverage(double grades[NUM_STUDENTS][NUM_COURSES]);voidfindMinScoreStudent(double grades[NUM_STUDENTS][NUM_COURSES],int& minStudent);doublecalculateClassTotalScore(double grades[NUM_STUDENTS][NUM_COURSES],int studentIndex);intmain(){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;return0;}// 输入成绩 voidinputGrades(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];}}}// 计算每门课程的平均成绩并显示 voiddisplayCourseAverages(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;}}// 计算全班平均成绩并显示 voiddisplayClassAverage(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;}// 计算每个学生的总分 doublecalculateClassTotalScore(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;}// 找到总分最低的学生 voidfindMinScoreStudent(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标准。
由于博主才疏学浅,如有错误请多多指正,如有更好解法请多多交流!
版权归原作者 ORI2333 所有, 如有侵权,请联系我们删除。