在我用C语言编写的程序的这一部分中,Do-While是无限的。我试图做一个
如果有人要键入字符串而不是数字值,则循环。

int main(){
    int cnotas;

    do{
    printf("\nIngrese la Cantidad de Notas del Estudiante\n--------------------------------------------\n");    //asks for the number of grades that are going to be used in the average calculation

    if(cnotas>=1){    //if statement to break the loop when the amount of grades is 1 or more
        break;
    }

    }while(scanf("%d", &cnotas)==0 && cnotas<1);    \\gets the cnotas value and checks if is valid
    promedioe(cnotas);
    system("pause");
}


更新!

忘记提及我要拒绝来自用户的非数字输入,因此程序不会崩溃。

最佳答案

在以下语句中:while(scanf("%d", &cnotas)==0 && cnotas<1);您期望用户没有输入任何输入,因为scanf返回否。的输入已成功读取。同时,您期望输入值小于1。
cnotasauto变量,因此其起始值可以是任意值,请对其进行初始化。
更好地做到:}while(scanf(" %d",&cnotas)==1 && cnotas<1);
除此之外,您用错误的标记\\而不是//编写了注释。

关于c - C上的无限do-while循环(2个条件),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52350361/

10-11 18:49