鱼C论坛

 找回密码
 立即注册
查看: 458|回复: 3

[已解决]我的代码哪里错了

[复制链接]
发表于 2023-12-21 16:43:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
问题描述】创建一个学生类,成员变量有姓名(Name),学号(ID)和三门课c++(CPlusScore)和高等数学(AMathScore)和大学英语(CEngScore)的成绩,成员函数有max()和avg(),分别为计算每个学生最高分和平均分的函数,如图1所示。初始化5个学生的信息,然后自定义函数实现计算5个学生的最高分的均值和平均分的均值并输出。

6-1.png

【样例输入】

1001 Kim 99 95 97

1002 Sam 89 78 85

1003 Tim 90 95 97

1004 Kathy 60 53 70

1005 Jane 70 89 63



我的代码哪里错了
#include <iostream>
#include<string>
using namespace std;

class Student
{
        public:
                string name;
                int ID;
                int scorec;
                int scorem;
                int scoree;
};
int main()
{double avg1,avg2,avg3,avg4,avg5;
   Student s1;
   cin>>s1.ID>>s1.name>>s1.scorec>>s1.scorem>>s1.scoree;
   avg1=1.0*(s1.scorec+s1.scoree+s1.scorem)/3;
   Student s2;
   cin>>s2.ID>>s2.name>>s2.scorec>>s2.scorem>>s2.scoree;
     avg2=1.0*(s2.scorec+s2.scoree+s2.scorem)/3;
   Student s3;
   cin>>s3.ID>>s3.name>>s3.scorec>>s3.scorem>>s3.scoree;
     avg3=1.0*(s3.scorec+s3.scoree+s3.scorem)/3;
      Student s4;
   cin>>s4.ID>>s4.name>>s4.scorec>>s4.scorem>>s4.scoree;
     avg4=1.0*(s4.scorec+s4.scoree+s4.scorem)/3;
      Student s5;
   cin>>s5.ID>>s5.name>>s5.scorec>>s5.scorem>>s5.scoree;
     avg5=1.0*(s5.scorec+s5.scoree+s5.scorem)/3;
     double a[5]={avg1,avg2,avg3,avg4,avg5};
     double max=a[0];double min=a[0];
     for(int i=0;i<5;i++)
     {
             if(a[i]>max)
             {
                     max=a[i];
                 }
         }
          for(int j=0;j<5;j++)
     {
             if(a[j]<min)
             {
                     min=a[j];
                 }
         }
         cout<<max<<endl;
         cout<<min<<endl;
    return 0;
}
最佳答案
2023-12-21 16:43:59
在您的代码中,有几个地方出现了错误:

1. 您没有包括头文件iostream和string。请确保加上#include <iostream>和#include <string>。

2. 您在使用std命名空间前没有写using namespace std;。这将导致您无法使用cin和cout等标准输入输出流。请在main函数之前加上using namespace std;。

3. 您在for循环中缺少了循环条件。请在for循环的括号中添加循环条件,例如i < 5。

4. 您对a进行了错误的初始化。请使用数组或容器来存储avg1到avg5,并计算它们的最大值和最小值。

下面是修改后的代码:

#include <iostream>
#include <string>
using namespace std;

class Student
{
public:
    string name;
    int ID;
    int scorec;
    int scorem;
    int scoree;
};

int main()
{
    double avg1, avg2, avg3, avg4, avg5;
    Student s1;
    cin >> s1.ID >> s1.name >> s1.scorec >> s1.scorem >> s1.scoree;
    avg1 = 1.0 * (s1.scorec + s1.scoree + s1.scorem) / 3;

    Student s2;
    cin >> s2.ID >> s2.name >> s2.scorec >> s2.scorem >> s2.scoree;
    avg2 = 1.0 * (s2.scorec + s2.scoree + s2.scorem) / 3;

    Student s3;
    cin >> s3.ID >> s3.name >> s3.scorec >> s3.scorem >> s3.scoree;
    avg3 = 1.0 * (s3.scorec + s3.scoree + s3.scorem) / 3;

    Student s4;
    cin >> s4.ID >> s4.name >> s4.scorec >> s4.scorem >> s4.scoree;
    avg4 = 1.0 * (s4.scorec + s4.scoree + s4.scorem) / 3;

    Student s5;
    cin >> s5.ID >> s5.name >> s5.scorec >> s5.scorem >> s5.scoree;
    avg5 = 1.0 * (s5.scorec + s5.scoree + s5.scorem) / 3;

    double a[] = { avg1, avg2, avg3, avg4, avg5 };
    double max = a[0], min = a[0];

    for (int i = 0; i < 5; i++)
    {
        if (a[i] > max)
        {
            max = a[i];
        }
        if (a[i] < min)
        {
            min = a[i];
        }
    }

    cout << "最高分的均值:" << max << endl;
    cout << "平均分的均值:" << (avg1 + avg2 + avg3 + avg4 + avg5) / 5 << endl;

    return 0;
}

修改后的代码会接受5个学生的信息,计算每个学生的最高分和平均分,然后计算最高分的均值和平均分的均值,并输出结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-21 16:43:59 | 显示全部楼层    本楼为最佳答案   
在您的代码中,有几个地方出现了错误:

1. 您没有包括头文件iostream和string。请确保加上#include <iostream>和#include <string>。

2. 您在使用std命名空间前没有写using namespace std;。这将导致您无法使用cin和cout等标准输入输出流。请在main函数之前加上using namespace std;。

3. 您在for循环中缺少了循环条件。请在for循环的括号中添加循环条件,例如i < 5。

4. 您对a进行了错误的初始化。请使用数组或容器来存储avg1到avg5,并计算它们的最大值和最小值。

下面是修改后的代码:

#include <iostream>
#include <string>
using namespace std;

class Student
{
public:
    string name;
    int ID;
    int scorec;
    int scorem;
    int scoree;
};

int main()
{
    double avg1, avg2, avg3, avg4, avg5;
    Student s1;
    cin >> s1.ID >> s1.name >> s1.scorec >> s1.scorem >> s1.scoree;
    avg1 = 1.0 * (s1.scorec + s1.scoree + s1.scorem) / 3;

    Student s2;
    cin >> s2.ID >> s2.name >> s2.scorec >> s2.scorem >> s2.scoree;
    avg2 = 1.0 * (s2.scorec + s2.scoree + s2.scorem) / 3;

    Student s3;
    cin >> s3.ID >> s3.name >> s3.scorec >> s3.scorem >> s3.scoree;
    avg3 = 1.0 * (s3.scorec + s3.scoree + s3.scorem) / 3;

    Student s4;
    cin >> s4.ID >> s4.name >> s4.scorec >> s4.scorem >> s4.scoree;
    avg4 = 1.0 * (s4.scorec + s4.scoree + s4.scorem) / 3;

    Student s5;
    cin >> s5.ID >> s5.name >> s5.scorec >> s5.scorem >> s5.scoree;
    avg5 = 1.0 * (s5.scorec + s5.scoree + s5.scorem) / 3;

    double a[] = { avg1, avg2, avg3, avg4, avg5 };
    double max = a[0], min = a[0];

    for (int i = 0; i < 5; i++)
    {
        if (a[i] > max)
        {
            max = a[i];
        }
        if (a[i] < min)
        {
            min = a[i];
        }
    }

    cout << "最高分的均值:" << max << endl;
    cout << "平均分的均值:" << (avg1 + avg2 + avg3 + avg4 + avg5) / 5 << endl;

    return 0;
}

修改后的代码会接受5个学生的信息,计算每个学生的最高分和平均分,然后计算最高分的均值和平均分的均值,并输出结果。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-21 17:18:06 | 显示全部楼层
题目中要求你需要创建一个学生类,该类要包含用于计算学生最高分和平均分的成员函数。在你的程序中,你并没有按照题目的要求去创建类,而仅仅是将所有内容都放在main函数中去执行。

参考代码:
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

class Student {
public:
    string Name;
    int ID;
    int CPlusScore;
    int AMathScore;
    int CEngScore;
    // 计算最高分
    int max() {
        return std::max({CPlusScore, AMathScore, CEngScore});
    }
    // 计算平均分
    double avg() {
        return (CPlusScore + AMathScore + CEngScore) / 3.0;
    }
};

int main() {
    int n = 5;
    Student students[5];
    double max_avg = 0;
    double avg_avg = 0;
    for (int i = 0; i < n; i++) {
        cin >> students[i].ID >> students[i].Name >> students[i].CPlusScore >> students[i].AMathScore >> students[i].CEngScore;
        max_avg += students[i].max();
        avg_avg += students[i].avg();
    }
    cout << max_avg / n << " " << avg_avg / n << endl;
    return 0;
}

求最佳答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-21 19:24:55 From FishC Mobile | 显示全部楼层
c
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 12:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表