#include
#include
void main()
{
double a,b,c,disc,x1,x2,p,q;
int n;
char choice;
printf("請依次輸入a,b,c的值:\n");
scanf("%lf%lf%lf",&a,&b,&c);
disc=b*b-4*a*c;
if(disc>=0)
{
do
{
p=-b/(2.0*a);
q=sqrt(disc)/(2.0*a);
x1=p+q,x2=p-q;
printf("x1=%7.2f\nx2=%7.2f\n",x1,x2);
printf("是否繼續(是:Y 否:任意)");
choice=getchar();
if(choice=='Y'||choice=='y')
n=1;
else
n=0;
}while(n==1);
}
else
printf("輸入a、b、c的有誤!");
}
為什麼這個循環出不來,不知道是哪裡錯了,怎麼改,求解
你好,你的問題是這樣的。
在你輸入完c後,就要按下回車確定,這個時候,緩存區裡儲存的字符是enter鍵。
那麼在choice=這一行裡,getchar將直接讀取那個enter鍵並賦值給choice,接下來的話就直接跳出循環了。
解決的方法是:在if前scanf後的位置加上一句“getchar();”這樣就可以把緩存區裡面的那個enter字符給讀取掉了,接下來就正常了。。。
希望對你有幫助,你可以自己試一下。。覺得可以望采納