C (我的代码卡在第一个功能中)

c++ (My code is stuck in the first function)

本文关键字:第一个 功能 我的 代码      更新时间:2023-10-16
#include<iostream>
using namespace std;
struct student_type{
    char name[50];
    int score;
    float grade;
}studs[1];
void getData(student_type studs[]){
    int label=1;
    for(student_type *p=studs; p<=&studs[1]; ++p){
        cout<<"Student " << label++;
        cout<<"nName: ";
        cin.get(p->name,50);
        cout<<"Test Score: ";
        cin >> p->score;
        cin.get();
    }
}
void determineGrade(student_type studs[]){
    for(student_type *p; p<=&studs[1]; ++p){
        if(p->score<=69&&p->score>=0){
            p->grade=5.00;
        } else if(p->score<=73&&p->score>=70){
            p->grade=3.00;
        } else if(p->score<=77&&p->score>=74){
            p->grade=2.75;
        } else if(p->score<=80&&p->score>=78){
            p->grade=2.50;
        } else if(p->score<=83&&p->score>=81){
            p->grade=2.25;
        } else if(p->score<=87&&p->score>=84){
            p->grade=2.00;
        } else if(p->score<=90&&p->score>=88){
            p->grade=1.75;
        } else if(p->score<=93&&p->score>=91){
            p->grade=1.50;
        } else if(p->score<=97&&p->score>=94){
            p->grade=1.25;
        } else {
            p->grade=1.00;
        }
    }
}
void printData(student_type studs[]){
    int label=1;
    for(student_type *p=studs; p<=&studs[1]; ++p){
        cout<<"Student " << label++;
        cout<< "n Name: "<<p->name;
        cout<< "n Test Score: "<<p->score;
        cout<< "n Grade: "<<p->grade << endl << endl;
    }
}
int returnGrade(student_type studs[]){
    int box=0;
    box=studs[0].score;
    for(student_type *p=studs; p<=&studs[1]; ++p){
        if(p->score>box){
            box=0;
            box=p->score;
        }
    }return box;
}
void highestScorers(student_type studs[], int box){
    cout<< "nnHIGHEST SCORERS:" << endl; 
    for(student_type *p; p<=&studs[1]; ++p){
        if(box==p->score){
            cout<< p->name << endl;
        }
    }
}
main(){
    getData(studs);
    determineGrade(studs);
    printData(studs);
    int box=returnGrade(studs);
    highestScorers(studs, box);
}

我不知道为什么我的代码陷入了GetData部分,我也在另一台PC中做到了,但是在GetData的第一个循环之后,编译器显示"不起作用。几个月前,我已经做到了,它起作用了这是我刚从结构和指针算术开始的时候,我检查了我的旧代码,我的旧代码和新代码(我发布的代码)完全相同,但是当我的旧代码时,此代码在我的旧时遇到问题代码没有。

由于getData函数存在一些问题,所以这是我的旧代码。您会在这里看到它相似,但我的新代码不起作用。

void getData(student_type studs[]){
    int label=1;
for(student_type *p=studs; p<=&studs[1]; ++p) {
    cout<< "Student " << label ;
    cout<< "nName: ";
    cin.get(p->name, 50);
    do {
        cout<< "Score: ";
        cin >> p->score;
    } while (p->score>100 || p->score<0);
    cout<< endl;
    ++label;
        cin.get();
    }
}

在以下行

    for(student_type *p; p<=&studs[1]; ++p){

您应该初始化变量p不初始化。您应该将其设置为已知值。我想您想如下初始化它。另外,您的停止条件走得太远:使用<代替<=

    for(student_type *p=studs; p<&studs[1]; ++p){
相关文章: