我试图理解为什么我得到这个输出,我放了一个 while 循环去使用另一种方法,我不知道为什么它不起作用!调试操作显示值 1,与在 if 子句上输入相同的条件并调用注册方法在屏幕上打印“Test”。
//Struct Student
typedef struct {
char name[50];
float grade[4];
int status;
} Student;
Student students[MAX_STUDENT];
//Methods Statements
void menu();
void registerStudent();
void deleteStudent();
void reproved();
void search();
int operation;
int main() {
menu();
return 0;
}
//Display menu
void menu(){
system("cls");
while(operation != 5){
printf("1 - Register Student\n");
printf("2 - Delete Student\n");
printf("3 - Reproved Students\n");
printf("4 - Find Student\n");
printf("5 - Exit\n");
scanf("%i", &operation);
if(operation == 1){
registerStudent();
}
};
}
void registerStudent(){
char name[50];
float grade[4];
int op;
int i;
while(op != 0){
system("cls");
printf("Type the name: ");
//Fgets to read line
fgets(name, sizeof(name), stdin);
printf("First two months: ");
scanf("%f", &grade[0]);
printf("Second two months: ");
scanf("%f", &grade[1]);
printf("Third two months: ");
scanf("%f", &grade[2]);
printf("Fouth two months: ");
scanf("%f", &grade[3]);
printf("1 - Continue\n");
printf("0 - Exit\n");
for(i=0; i<MAX_STUDENT; i++){
if(students[i].status == 0){
students[i].grade[0] = grade[0];
students[i].grade[1] = grade[1];
students[i].grade[2] = grade[2];
students[i].grade[3] = grade[3];
strcpy(students[i].name, name);
break;
}
}
}
}
输出:
PS:现在可以使用了!
最佳答案
在menu()
中操作
未初始化使用,在registerStudent()
中op
也未初始化使用。
关于C - While 循环错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44641914/