程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言-求這個程序的一個問題!

c語言-求這個程序的一個問題!

編輯:編程解疑
求這個程序的一個問題!

#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字符給讀取掉了,接下來就正常了。。。

希望對你有幫助,你可以自己試一下。。覺得可以望采納圖片說明

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved