2018年苏州大学837复试机试C/C++

2018年苏州大学复试机试

要求

  1. 要求用C/C++编程;
  2. 对程序中必要的地方进行注释。
  3. 上机规则
    1. 请在电脑桌面上新建一个文件夹文件夹名为考试姓名(中文);
    2. 考试完毕后,将所编写的文件放在上述文件中。

第一题(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。

  1. 求出每门课程的平均成绩
  2. 求出全班的平均成绩
  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标准。

由于博主才疏学浅,如有错误请多多指正,如有更好解法请多多交流!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ORI2333

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值