PATB1004:成绩排名

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_29475553/article/details/52434313

PATB1004:成绩排名 简单结构体的 + 数组 求最值

【参考答案1】

//B1004成绩排名; 常规思路  与节省空间思路
struct STU1{
    string name;
    string ID;
    int score;

}stu1[1010];

void B1004(){
    int N;
    cin >> N;
    int maxId = 0, minId=0;
    for (int i = 0; i < N; i++)
    {
        cin >> stu1[i].name >> stu1[i].ID >> stu1[i].score;
        if (stu1[maxId].score < stu1[i].score)
        {
            maxId = i;
        }

        if (stu1[minId].score > stu1[i].score)
        {
            minId = i;
        }
    }
    cout << stu1[maxId].name <<" "<< stu1[maxId].ID << endl;
    cout << stu1[minId].name << " " << stu1[minId].ID << endl;
}

【注意点】

相比于上面答案,只是开了temp maxStu minStu 的结构体

输入时候直接比较 temp.scor与 maxStu.score minStu.score 比较得到赋值给结构体

for (int i = 0; i < n; i++){
scanf("%s%s%d",s_temp.name,s_temp.id,&s_temp.score);
if (s_temp.score<s_min.score){
  s_min = s_temp;//**关键点 直接对结构体进行赋值**
}
if (s_temp.score>s_max.score){
  s_max = s_temp;
}

【参考答案2】

//重要,求最大值只需要,1max初始化,2for获取临时可变的对象

    #include <cstdio> 
//求结构体,s数组中某个属性的最值
const int length = 20;
struct STUD{
  char name[length];
  char id[length];
  int score;
};
STUD s_temp,s_min,s_max;//声明三个学生,其中s_temp(可变的)用来scanf传输数据

//重要,求最大值只需要,1max初始化,2for获取临时可变的对象

void structmax(){
  s_min.score = 101;//一定不是最小的数
  s_max.score = -1;//一定不是最z最大的数,所以一定一开始就会进入判断语句
  int n;
  scanf("%d", &n);
  for (int i = 0; i < n; i++){
    scanf("%s%s%d",s_temp.name,s_temp.id,&s_temp.score);
    if (s_temp.score<s_min.score){
    s_min = s_temp;//这里是直接把当前学生作为最大的学生,而非最大分数,不然无法得到其他相关联的如id 
    }
    if (s_temp.score>s_max.score){
        s_max = s_temp;
    }

  }
  printf("%s %s\n", s_max.name, s_max.id);
  printf("%s %s\n", s_min.name, s_min.id);

}
展开阅读全文

没有更多推荐了,返回首页