PATB1004:成绩排名

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);

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值