C 代码的一部分会干扰循环吗?
我正在用C语言编写一个计算器,它可以执行基本的算术运算,并且可以循环,直到用户输入一个命令。我以为我已经掌握了循环的诀窍,但我只放了一个循环(用来开始一个新的操作),它就不起作用了。代码的一部分会干扰循环吗?语法错了吗?否则,程序运行良好C 代码的一部分会干扰循环吗?,c,loops,do-while,C,Loops,Do While,我正在用C语言编写一个计算器,它可以执行基本的算术运算,并且可以循环,直到用户输入一个命令。我以为我已经掌握了循环的诀窍,但我只放了一个循环(用来开始一个新的操作),它就不起作用了。代码的一部分会干扰循环吗?语法错了吗?否则,程序运行良好 int main(int argc, char *argv[]) { char reponse; int oper; float nb1, nb2, resultat; do { printf("En
int main(int argc, char *argv[])
{
char reponse;
int oper;
float nb1, nb2, resultat;
do
{
printf("Entrez les deux valeurs que vous voulez calculer: \n");
scanf("%f %f", &nb1, &nb2);
printf("\nValidez votre op\x82rateur pour effectuer votre cacul\n");
printf("choisissez \"1\" pour une addition, \"2\" pour une soustraction,\n");
printf("\"3\" pour une multiplication ou \"4\" pour une division\n");
scanf(" %d", &oper);
switch(oper )
{
case 1:
resultat = nb1 + nb2;
printf("\n%.2f + %.2f = %.2f\n", nb1, nb2, resultat);
break;
case 2:
resultat = nb1 - nb2;
printf("\n%.2f - %.2f = %.2f\n", nb1, nb2, resultat);
break;
case 3: resultat = nb1 * nb2;
printf("\n%.2f * %.2f = %.2f\n", nb1, nb2, resultat);
break;
case 4: resultat = nb1 / nb2;
printf("\n%.2f / %.2f = %.2f\n", nb1, nb2, resultat);
break;
default:
printf("\nErreur\n");
}
printf("\nVoulez-vous continuer \x85 faire des op\x82rations? [o/n]\n");
scanf(" c%", &reponse);
} while (reponse == 'o' || reponse == 'O');
printf("\nMerci au revoir ! Appuyez sur une touche quelconque pour terminer");
getch();
}
使用
scanf中的
c%
应改为%c
否,scanf
正在获取一个\n值,而不是等待用户输入“o”(当我说“否”时,我的意思是“不,这还不是全部”)-请参阅我的答案below@iccthedral:aaaaaaaaaaaaaaaaahhhhhhhh就是这样!谢谢啊,我真是个笨蛋@菲尔·纽比——实际上有几个问题。你很快就会发现(如果你还没有发现的话)iccthedral和William Morris都是正确的。请务必投票支持威廉·莫里斯,如果有帮助,请“接受”他的答案。
char reponse[4];
....
scanf("%3s", reponse);
} while (reponse[0] == 'o' || reponse[0] == 'O');