虽然没有定义,但变量不会增加

时间:2017-05-05 08:08:55

标签: c variables increment post-increment

正如你们所看到的,我没有定义变量" n_students"因此它应该能够毫无问题地增加,但事实并非如此。当我把它放在用户定义函数中时,它也不会增加,所以这里的问题似乎是什么?

#define MAX_CLASS_SIZE 5
#define MAX_NAME_SIZE 11

    int main(void){
        student_t studentlist[MAX_NAME_SIZE];
        int n_students = 0; 
        int result;
        /* TODO */

        while (1){
        printMenu();
        int choice;
        scanf("%d", &choice);
        switch (choice) {
            case 1:
                if (n_students == MAX_CLASS_SIZE) {
                    printf("Class is full\n");
                }
                else {
                    addStudent(studentlist, n_students);
                    n_students++;
                }
  case 2:
            if (n_students == 0) {
                    printf("Class is empty\n");
                } else {
                    n_students--;
                }
                break;
        case 3:
            if (n_students == 0){
                    printf("Class is empty\n");
                } 
                else {
                    displayStudents(studentlist, n_students);
                } 
                break;
        case 4:
            saveDatabase(studentlist, n_students);
                break;
        case 5:
            result = loadDatabase(studentlist);
            if (result >= 0){
                n_students = result;
            }
            break;
        case 6:
            return 0;
        default:
            printf("Invalid choice.\n");
            break;
            }
    }

}


void addStudent(student_t *studentlist,int n_students)
{
    char name[1024];
    printf("Enter name>");
    scanf("%s", name);
    name[MAX_NAME_SIZE-1]= '\0';
    strcpy(studentlist[n_students].name, name);

    int day,month,year;
    while (1){
        printf("Enter birthday: day>");
        scanf("%d", &day);
        if (day >= 1 && day <=31){
            break;
        }
        printf("Invalid day. ");
    }

    while (1){
        printf("Enter birthday: month>");
        scanf("%d", &month);
        if(month >= 1 && month <= 12){
            break;
        }
        printf("Invalid month. ");
    }

    while (1){
        printf("Enter birthday: year>");
        scanf("%d", &year);
        if (year >= 1800 && year <= 2017){
            break;
        }
        printf("Invalid year. ");
    }

    float gpa;
    while (1){
        printf("Enter GPA>");
        scanf("%f", &gpa);
        if (gpa >= 0.0 && gpa <= 4){
            break;
        }
        printf("Invalid GPA. ");
    }

    studentlist[n_students].birthday.day = day;
    studentlist[n_students].birthday.month = month;
    studentlist[n_students].birthday.year = year;
    studentlist[n_students].gpa = gpa;
}

0 个答案:

没有答案