大牛们我有两个问题: **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;
}