重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
问题出现在scanf,因为它读到回车就停止,却把回车留在缓冲区,下一次再来时,回车还在,它就继续把回车留着,所以什么数据都没读到就又停了,这是它的设计造成的,可以在循环中用getch()函数把每一次的回车去掉,就可以解决了,比如在printf("%.2f\n",b);
创新互联:从2013年成立为各行业开拓出企业自己的“网站建设”服务,为1000+公司企业提供了专业的成都网站设计、成都做网站、网页设计和网站推广服务, 按需网站策划由设计师亲自精心设计,设计的效果完全按照客户的要求,并适当的提出合理的建议,拥有的视觉效果,策划师分析客户的同行竞争对手,根据客户的实际情况给出合理的网站构架,制作客户同行业具有领先地位的。
一行后加getch();就可以了
#include stdio.h
#define PI 3.1415926
double getS(double r)
{
return PI * r * r;
}
double getC(double r)
{
return 2.0 * PI * r;
}
int main()
{
char ch;
double r;
do{
scanf("%lf", r);
printf("%.2lf,%.2lf\n", getS(r), getC(r));
getchar(); // for enter
scanf("%c", ch);
}while( ch == 'Y' );
return 0;
}
那个不是编程出来的,而是编译器调试时本身的功能,如果想模拟那个效果的话,可以在程序结尾写
getch();
如果没有这个函数,可以写
getchar();
如果还是没用,写
getchar();getchar();