在我用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。cnotas
是auto
变量,因此其起始值可以是任意值,请对其进行初始化。
更好地做到:}while(scanf(" %d",&cnotas)==1 && cnotas<1);
除此之外,您用错误的标记\\
而不是//
编写了注释。
关于c - C上的无限do-while循环(2个条件),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52350361/