yangzhixiaohuli 发表于 2023-12-21 16:43:34

我的代码哪里错了

问题描述】创建一个学生类,成员变量有姓名(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={avg1,avg2,avg3,avg4,avg5};
   double max=a;double min=a;
   for(int i=0;i<5;i++)
   {
           if(a>max)
           {
                   max=a;
               }
       }
          for(int j=0;j<5;j++)
   {
           if(a<min)
           {
                   min=a;
               }
       }
       cout<<max<<endl;
       cout<<min<<endl;
    return 0;
}

FishC 发表于 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, min = a;

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

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

    return 0;
}

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

sfqxx 发表于 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;
    double max_avg = 0;
    double avg_avg = 0;
    for (int i = 0; i < n; i++) {
      cin >> students.ID >> students.Name >> students.CPlusScore >> students.AMathScore >> students.CEngScore;
      max_avg += students.max();
      avg_avg += students.avg();
    }
    cout << max_avg / n << " " << avg_avg / n << endl;
    return 0;
}

求最佳答案{:10_254:}

sfqxx 发表于 2023-12-21 19:24:55

c
页: [1]
查看完整版本: 我的代码哪里错了