学生成绩结构

Structure of student marks

本文关键字:结构      更新时间:2023-10-16

我已将strudent定义为:

struct student{
    char name[50];
    int roll;
    int marks;
};

我正在尝试打印s中具有最高marks字段的student

struct student s[5];
int i;
cout << "Enter information of students : " << endl;
for(i=0;i<3;++i)
{
    cout <<"Enter roll no : ";
    cin>>s[i].roll;
    cout << "Enter name : ";
    cin >> s[i].name;
    cout << endl << "Enter marks : ";
    cin >> s[i].marks;
    cout << endl;
}
for(int j=0;j<3;j++)
{
    if(s[j].marks>60)
    {
        cout<<s[j].roll<<"  "<<s[j].name<<" = "<<s[j].marks<<" is Passed"<<endl;
    }
    else
    {
        cout<<s[j].roll<<" "<<s[j].name<<" = "<<s[j].marks<<" is Failed"<< endl;
    }
}
cout<<endl;
cout<<endl;
int max=s[0].marks;
for(int k=0; k<3; k++)
{
    if(s[k].marks>max)
    {
        max=s[k].marks;
    }
    cout<<s[k].roll<<" "<<s[k].name<<" "<<max<<" is top in the class:"<<endl;
}

现在我打印所有的学生!我只想要在所有学生中得分最高的那个学生的名字和卷号。我做错了什么?

你说你:想要所有学生中得分最高的学生的姓名和名册

要做到这一点,你需要找到得分最高的学生的索引。但在我给您举一个如何做到这一点的例子之前,我需要初始化整个s数组。这意味着:

  • 初始化循环需要运行数组的大小(for(i = 0; i < sizeof(s) / sizeof(s[0]); ++i)
  • 或者您的数组大小需要与循环匹配(student s[3]

一旦完成,你就可以有效地使用max_element来找到你的高分学生:

const auto it = max_element(cbegin(s), cend(s), [](const auto& lhs, const auto& rhs){ return lhs.marks < rhs.marks; });

it现在指向你分数最高的学生,你可以这样打印:

cout << it->roll << ' ' << it->name << ' ' << it->marks << " is top in the classn";

你可以在这里看到一个活生生的例子:http://ideone.com/JcPQMI