学生成绩结构
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
相关文章:
- 如何循环打印顶点结构
- 通过方法访问结构
- 使用不带参数的函数访问结构元素
- 预处理器:插入结构名称中的前一个行号
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 孤立代码块在结构中引发异常
- 有什么方法可以遍历结构吗
- 如何在 C# 中映射双 C 结构指针?
- 如何在C++中使用结构生成映射
- 无法将结构注册为增强几何体3D点
- 多成员Constexpr结构初始化
- C++将文本文件中的数据读取到结构数组中
- 如何重构类层次结构以避免菱形问题
- 如何在C++中序列化结构数据
- std::vector的包装器,使数组的结构看起来像结构的数组
- 没有为自己的结构调用列表推回方法
- 奇怪的结构&GCC&clang(void*返回类型)
- 在 c++ 中拥有一组结构的正确方法是什么?
- vscode g++链路故障:体系结构x86_64的未定义符号
- C++概念:如何使用'concept'检查模板化结构的属性?