Atn2129 2016-02-05 06:03 采纳率: 100%
浏览 1612
已采纳

求这个程序的一个问题!

#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的有误!");
}

为什么这个循环出不来,不知道是哪里错了,怎么改,求解图片图片

  • 写回答

4条回答 默认 最新

  • Johnny_Law 2016-02-05 07:53
    关注

    你好,你的问题是这样的。
    在你输入完c后,就要按下回车确定,这个时候,缓存区里储存的字符是enter键。
    那么在choice=这一行里,getchar将直接读取那个enter键并赋值给choice,接下来的话就直接跳出循环了。

    解决的方法是:在if前scanf后的位置加上一句“getchar();”这样就可以把缓存区里面的那个enter字符给读取掉了,接下来就正常了。。。

    希望对你有帮助,你可以自己试一下。。觉得可以望采纳图片说明

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 vue2中使用计算属性
  • ¥50 远程桌面打开Mastercam、没有许可证、物理机打开正常
  • ¥15 ubuntu安装gdal后java读取tif文件报错
  • ¥15 请问lammps怎么做两种金属连接的原子浓度分布图
  • ¥15 求jacquard数据集
  • ¥15 w10部分软件不能联网
  • ¥15 关于安装hbase的问题(操作系统-windows)
  • ¥15 novnc连接pve虚拟机报错安全协议不支持262
  • ¥15 设备精度0.03给多少公差能达到CPK1.33
  • ¥15 qt+ffmpeg报错non-existing PPS 0 referenced