2 条题解

  • 0
    @ 2025-7-4 9:36:49

    重载运算符并自己写计算奖学金的方法

    #include <bits/stdc++.h>
    using namespace std;
    struct Stu
    {
        string nam;
        int qm, bj;  // 期末成绩、班级评议成绩
        char gb, xb; // 学生干部、西部省份
        int lw;      // 论文数
        int money;   // 拿到奖学金的数量
        // 用其他属性计算奖学金
        void cal()
        {
            money = 0;
            if (qm > 80 && lw >= 1)
                money += 8000;
            if (qm > 85 && bj > 80)
                money += 4000;
            if (qm > 90)
                money += 2000;
            if (qm > 85 && xb == 'Y')
                money += 1000;
            if (bj > 80 && gb == 'Y')
                money += 850;
        }
        bool operator<(const Stu &x)
        {
            return money < x.money;
        }
    };
    /*
    bool operator<(const Stu &x, const Stu &y)
    {
        return x.money < y.money;
    }
    */
    int n;
    Stu a[105];
    int main()
    {
        cin >> n;
        for (int i = 1; i <= n; i++)
            cin >> a[i].nam >> a[i].qm >> a[i].bj >> a[i].gb >> a[i].xb >> a[i].lw;
        int sum = 0;
        for (int i = 1; i <= n; i++)
        {
            a[i].cal();
            sum += a[i].money;
        }
        Stu ans = a[1];
        for (int i = 2; i <= n; i++)
            if (ans < a[i])
                ans = a[i];
        cout << ans.nam << "\n"
             << ans.money << "\n"
             << sum << "\n";
        return 0;
    }
    
    • 0
      @ 2025-3-12 17:58:07
      #include <bits/stdc++.h>
      using namespace std;
      int n;                 // 总人数
      string xm[105];        // 每个人的姓名
      int qm[105], bj[105];  // 每个人的期末成绩、班级成绩
      char gb[105], xb[105]; // 是否是学生干部、西部省份
      int lw[105];           // 论文数量
      int jxj[105];          // 奖学金数量
      int main()
      {
          cin >> n;
          for (int i = 1; i <= n; i++)
          {
              cin >> xm[i] >> qm[i] >> bj[i] >>
                  gb[i] >> xb[i] >> lw[i];
              jxj[i] = 0;
              if (qm[i] > 80 && lw[i] >= 1)
                  jxj[i] += 8000;
              if (qm[i] > 85 && bj[i] > 80)
                  jxj[i] += 4000;
              if (qm[i] > 90)
                  jxj[i] += 2000;
              if (qm[i] > 85 && xb[i] == 'Y')
                  jxj[i] += 1000;
              if (bj[i] > 80 && gb[i] == 'Y')
                  jxj[i] += 850;
          }
          int ansMax = 1; // 一开始认为第一个人奖学金最高
          int sum = 0;
          for (int i = 1; i <= n; i++)
          {
              if (jxj[i] > jxj[ansMax])
                  ansMax = i;
              sum += jxj[i];
          }
          cout << xm[ansMax] << "\n";
          cout << jxj[ansMax] << "\n";
          cout << sum;
          return 0;
      }
      

      #include <iostream>
      using namespace std;
      struct st
      {
          string name;//姓名 
          int qm, bj;//期末、班级评议 
          char gb, west;//干部、西部 
          int lw;//论文 
      };
      st s[101]; //s[0]~s[100] 都是一个 st 类型的变量 
      
      int main()
      {
          int n;
          // 谁获得了最多奖学金,获得了多少,总奖学金 
      	int maxi, maxx = 0, total = 0;
          cin >> n;
          for (int i = 1; i <= n; i++)
          {
              cin >> s[i].name >> s[i].qm >> s[i].bj >> s[i].gb >> s[i].west >> s[i].lw;
              int sum = 0;//计算第 i 位同学获得的奖学金 
              if (s[i].qm > 80 && s[i].lw >= 1)
                  sum += 8000;
              if (s[i].qm > 85 && s[i].bj > 80)
                  sum += 4000;
              if (s[i].qm > 90)
                  sum += 2000;
              if (s[i].west == 'Y' && s[i].qm > 85)
                  sum += 1000;
              if (s[i].gb == 'Y' && s[i].bj > 80)
                  sum += 850;
              if (maxx < sum)
                  maxx = sum, maxi = i;
              total += sum;
          }
          cout << s[maxi].name << "\n"
               << maxx << "\n" 
               << total;
          return 0;
      }
      
      
      • 1

      信息

      ID
      1223
      时间
      1000ms
      内存
      125MiB
      难度
      4
      标签
      递交数
      120
      已通过
      56
      上传者