问题描述
- 求这个程序的一个问题!
-
#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.2fnx2=%7.2fn",x1,x2);
printf("是否继续(是:Y 否:任意)");
choice=getchar();
if(choice=='Y'||choice=='y')
n=1;
else
n=0;}while(n==1);
}
elseprintf("输入a、b、c的有误!");
}
解决方案
你好,你的问题是这样的。
在你输入完c后,就要按下回车确定,这个时候,缓存区里储存的字符是enter键。
那么在choice=这一行里,getchar将直接读取那个enter键并赋值给choice,接下来的话就直接跳出循环了。
解决的方法是:在if前scanf后的位置加上一句“getchar();”这样就可以把缓存区里面的那个enter字符给读取掉了,接下来就正常了。。。
解决方案二:
如果要无限继续的话,要在循环内,choice的赋值前加
解决方案三:
你是不是不小心按了回车了?按了回车程序就结束
解决方案四:
scanf("%lf%lf%lf",&a,&b,&c);
后增加一行:
getchar();
过滤可能错误出现的回国换行。
时间: 2025-01-01 16:31:08