PAT甲级1036 Boys vs Girls 我的代码找不到错误?

原题链接
img

先贴上正确的代码


#include <iostream>
#include <cstdio>
#include <string>

class people{
    public:
        char name[10];
        char sex; 
        char id[10];
        int grade;
};

int main(){
    people M,F,temp;
    M.grade=101;
    F.grade=-1;
    int n;
    char sex; //不同之处
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%s %c %s %d",temp.name,&sex,temp.id,&temp.grade);
        if (sex=='M') {
            if(temp.grade<M.grade) M=temp;
        }
        if (sex=='F') {
            if(temp.grade>F.grade) F=temp;
        }
        }
        if(F.grade==-1) printf("Absent\n");
        else printf("%s %s\n",F.name,F.id);
        if(M.grade==101) printf("Absent\n");
        else printf("%s %s\n",M.name,M.id);
        if(F.grade==-1||M.grade ==101) printf("NA\n");
        else printf("%d\n",F.grade-M.grade);
        return 0;
    }



下面是我的代码:

#include <iostream>
#include <cstdio>
#include <string>

class people{
    public:
        char name[10];
        char sex;
        char id[10];
        int grade;
};

int main(){
    people M,F,temp;
    M.grade=101;
    F.grade=-1;
    int n;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%s %c %s %d",temp.name,&temp.sex,temp.id,&temp.grade);  //直接用了数据成员sex
        if (temp.sex=='M') {
            if(temp.grade<M.grade) M=temp;
        }
        if (temp.sex=='F') {
            if(temp.grade>F.grade) F=temp;
        }
        }
        if(F.grade==-1) printf("Absent\n");
        else printf("%s %s\n",F.name,F.id);
        if(M.grade==101) printf("Absent\n");
        else printf("%s %s\n",M.name,M.id);
        if(F.grade==-1||M.grade ==101) printf("NA\n");
        else printf("%d\n",F.grade-M.grade);
        return 0;
    }



唯一的差别就是主函数里面正确答案是重新定义了一个char型变量sex,我原来是直接用了类里面的数据成员,其余的全部一模一样,但我有两个测试点通过不了,请大家帮我看一下问题出在哪里呀?

如果就这个区别的话,应该是没有影响的,类的sex在后面并没有使用。