C 在开关上使用do时出现问题

C 在开关上使用do时出现问题,c,C,刚开始使用循环时,我有一个原创的程序,可以从不同的CRN中选择一些课程,然后根据所代表的不同学分收费 现在我对做while循环很陌生,但我想我可以在do while中有一个if-else,然后继续循环。我的目标是让循环在选择的每个选项上退出,除了在分配的类数量之上选择的选项(在本例中,最大类数量为3) 它似乎不想循环,但是,这是一个糟糕的方式做一个做而循环,有没有一个更优雅的方式接近这些 do{ printf("Please enter Student ID:\n"); scanf("%i",

刚开始使用循环时,我有一个原创的程序,可以从不同的CRN中选择一些课程,然后根据所代表的不同学分收费

现在我对做while循环很陌生,但我想我可以在do while中有一个if-else,然后继续循环。我的目标是让循环在选择的每个选项上退出,除了在分配的类数量之上选择的选项(在本例中,最大类数量为3)

它似乎不想循环,但是,这是一个糟糕的方式做一个做而循环,有没有一个更优雅的方式接近这些

do{

printf("Please enter Student ID:\n");
scanf("%i", &studentId);
printf("Enter how may courses-up to 3:\n");
scanf("%f", &amount);


    if(amount == 1){
        printf("Enter the course number:\n\n");
        scanf("%d", &course);
        switch(course)
           {
             case 4587:
                credit1 = 4;
                break;
            case 4599:
                credit2 = 3;
                break;
            case 8997:
                credit3 = 1;
                break;
            case 9696:
                credit4 = 3;
                break;
            default:
                printf("Sorry invalid entry!\n\n");

                return 0;
          }
        a = 1;
    }
    else if(amount == 2){
        printf("Enter the 2 course numbers\n");
        scanf("%d %d", &course, &course1);
            switch(course)
             {
             case 4587:
                credit1 = 4;
                break;
            case 4599:
                credit1 = 3;
                break;
            case 8997:
                credit1 = 1;
                break;
            case 9696:
                credit1 = 3;
                break;
            default:
                printf("Sorry invalid entry!\n\n");
                return 0;
            }
          switch(course1)
            {
             case 4587:
                credit2 = 4;
                break;
            case 4599:
                credit2 = 3;
                break;
            case 8997:
                credit2 = 1;
                break;
            case 9696:
                credit2 = 3;
                break;
            default:
                printf("Sorry invalid entry!\n\n");
                return 0;
            }
           a = 1;
        }

    else if(amount == 0){
        printf("Thank you!\n\n");
        a = 1;
    }
    else if(amount > 3){
        printf("Invalid number of courses (up to 3)\n");
        a = 0;

    }
    else{
        printf("Sorry, we cant process your request this time-invalid number of courses.\n\n");
        printf("\t\t\tTry again. Goodbye!\n");
        return 0;
    }

}while(a = 0);
更换线路

}while(a = 0);

请这样做以允许循环可以执行。表达式(a=0)始终计算为真值,因此循环无法执行

替换该行

}while(a = 0);


请这样做以允许循环可以执行。表达式(a=0)始终计算为真值,因此循环无法执行

a=0
->
a==0
您没有显示变量定义,但是
scanf(“%f”,&amount)
需要
浮动金额
,这似乎很奇怪。请从else块中删除
return 0
语句,以便继续循环。谢谢大家
a=0
->
a==0
您没有显示变量定义,但是
scanf(“%f”、&amount)
需要
浮动金额
,这似乎很奇怪。请从else块中删除
return 0
语句,以便继续循环。谢谢大家!