m0_74094527 2022-12-31 22:37 采纳率: 50%
浏览 33
已结题

c++初学者求解答程序

输入一批学生某门课程考试的各题的分数,计算每个人的总分,统计各分数段 049, 5059, 6069,7079, 8089, 90100 的人数及占总人数的百分比。要求输入:课程名称,考试日期,学生班号,学生姓名,学号,课程考试得分。输出要求:课程名称,考试日期,学生班号;各分数段的人数及百分比。

Info类的作用是什么?
主函数每步的是怎么实现的?
谢谢解答!


#include <iostream>
#include <string>
using namespace std;
class Stu {
    public:
        Stu() {}
        ~Stu() {}
        string ClassName;
        string TestDate;
        string ClassNumber;
        string name;
        string num;
        double T[5];//题数 
        void input() { //输入成绩
            cout<<"请输入课程名称:";
            cin>>ClassName;
            cout<<"请输入考试日期:";
            cin>>TestDate;
            cout<<"请输入学生班号:";
            cin>>ClassNumber;
            cout<<"请输入学生姓名:";
            cin>>name;
            cout<<"请输入学生学号:";
            cin>>num;
            for(int i=0; i<5; i++) {
                cout<<"请输入学生该课程第"<<i+1<<"题成绩:";
                cin>>T[i];
            }
            cout<<endl;
        }
        double getscore() { //总分
            double sum;
            for(int i=0; i<10; i++) {
                sum+=T[i];
            }
            return sum;
        }
};
class Info {
    public:
        string classname;
        string testdate;
        string classnum;
        int n[6];
        int N;
        Info() {
            for(int i=0; i<6; i++) {
                n[i]=0;
            }
            N=0;
        }

};
int main() {
    int i,j,studentNum;
    cout<<"请输入学生人数:";
    cin>>studentNum;//输入学生人数 
    Stu stu[studentNum]; //创建Stu成员 
    Info info[studentNum];//创建Info成员 
    for(i=0; i<studentNum; i++) { //输入
        stu[i].input ();
    }
    info[0].classname =stu[0].ClassName ;
    info[0].testdate =stu[0].TestDate;
    info[0].classnum =stu[0].ClassNumber;
    for(i=0; i<studentNum; i++) { //输出 
        cout<<endl;
        for(int k=0; k<j; k++) {
            if( stu[i].ClassName ==info[k].classname &&
                    stu[i].TestDate ==info[k].testdate &&
                    stu[i].ClassNumber ==info[k].classnum ) {
                double score=stu[i].getscore();
                if(score<=49&&score>=0)
                    info[k].n[0]++;
                else if(score<=59&&score>=50)
                    info[k].n[1]++;
                else if(score<=69&&score>=60)
                    info[k].n[2]++;
                else if(score<=79&&score>=70)
                    info[k].n[3]++;
                else if(score<=89&&score>=80)
                    info[k].n[4]++;
                else if(score<=100&&score>=90)
                    info[k].n[5]++;
                info[k].N++;
            } else {
                j++;
                info[j-1].classname =stu[i].ClassName ;
                info[j-1].testdate =stu[i].TestDate ;
                info[j-1].classnum =stu[i].ClassNumber ;
            }
        }
    }
    for(i=0; i<j; i++) {
        cout<<endl;
        cout<<"课程名称:"<<info[i].classname<<endl;
        cout<<"考试日期:"<<info[i].testdate <<endl;
        cout<<"学生班号:"<<info[i].classnum <<endl;
        cout<<"0~49分人数:"<<info[i].n[0]<<endl;
        cout<<"50~59分人数:"<<info[i].n[1]<<endl;
        cout<<"60~69分人数:"<<info[i].n[2]<<endl;
        cout<<"70~79分人数:"<<info[i].n[3]<<endl;
        cout<<"80~89分人数:"<<info[i].n[4]<<endl;
        cout<<"90~100分人数:"<<info[i].n[5]<<endl;
        cout<<endl;
        cout<<"0~49分人数占总人数百分比:"<<info[i].n[0]*100/info[i].N<<"%"<<endl;
        cout<<"50~59分人数占总人数百分比:"<<info[i].n[1]*100/info[i].N<<"%"<<endl;
        cout<<"60~69分人数占总人数百分比:"<<info[i].n[2]*100/info[i].N<<"%"<<endl;
        cout<<"70~79分人数占总人数百分比:"<<info[i].n[3]*100/info[i].N<<"%"<<endl;
        cout<<"80~89分人数占总人数百分比:"<<info[i].n[4]*100/info[i].N<<"%"<<endl;
        cout<<"90~100分人数占总人数百分比:"<<info[i].n[5]*100/info[i].N<<"%"<<endl;
    }
    system("pause");
    return 0;
}
  • 写回答

2条回答 默认 最新

  • |__WhoAmI__| 2022-12-31 22:58
    关注

    Info 类是一个用来存储信息的类,它有三个成员变量:classname、testdate、classnum,用来存储课程名称、考试日期和班号信息;另外还有一个数组 n[6] 和一个变量 N,用来存储各分数段人数及总人数信息。

    主函数的每一步实现如下:

    1、输入学生人数,创建一个 Stu 类的数组 stu[] 和一个 Info 类的数组 info[]。

    2、循环输入每个学生的信息,并存储到 stu[] 数组中。
    3、将第一个学生的课程名称、考试日期和班号信息存储到 info[0] 中。

    4、循环输出每个学生的信息,并根据每个学生的总分将其分配到各分数段中。

    5、输出信息,包括课程名称、考试日期、班号、各分数段人数及百分比。
    仅供参考,望采纳。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月9日
  • 已采纳回答 1月1日
  • 创建了问题 12月31日

悬赏问题

  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系