大牛们求助:我在void的理解上出了问题
查看原帖
大牛们求助:我在void的理解上出了问题
1149836
thesadbee楼主2024/3/24 20:51

大牛们我有两个问题: **1)**我的struct是在int main外定义的,为什么同样是int main外的void bat函数无法对a.sum进行修改呢? **2)**有什么办法可以让void函数修改int main的值呢(不仅仅是本段代码中的struct,还有int…………) 大牛求助

#include <bits/stdc++.h>
using namespace std;

struct student
{
  string name;
  int qm;
  int zc;
  string gb;
  string xb;
  int lw;
  int sum;
}stu[101];

void bat(student a){
  if(a.qm>80 && a.lw>=1)a.sum+=8000;
  if(a.qm>85 && a.zc>80)a.sum+=4000;
  if(a.qm>90) a.sum+=2000;
  if(a.xb=="Y") a.sum+=1000;
  if(a.gb=="Y") a.sum+=850;
}

bool cmp(student a,student b){
 return a.sum>b.sum;
  }

int main(){
  int a;
  int all=0;
  scanf("%d",&a);
  for(int i=0;i<a;i++){
    string name;
    int qm;
    int zc;
  string gb;
  string xb;
  int lw;
  cin>>name>>qm>>zc>>gb>>xb>>lw;
  stu[i].name=name;
  stu[i].qm=qm;
  stu[i].zc=zc;
  stu[i].gb=gb;
  stu[i].xb=xb;
  stu[i].lw=lw;
  }
  for(int i=0;i<a;i++){
    bat(stu[i]);
    all+=stu[i].sum;
  }
  cout<<stu[0].name<<endl<<stu[0].sum<<endl<<all;
}


2024/3/24 20:51
加载中...