C语言陷入死循环

#include<stdio.h>#include<math.h>main(){floata,b,c,x,y;charm;printf("请输入三角形三边长度:\n");... #include<stdio.h>#include<math.h>
main()
{
float a,b,c,x,y;
char m;
printf ("请输入三角形三边长度:\n");
scanf ("%f%f%f",&a,&b,&c);
x=(a+b+c)/2;
y=x*(x-a)*(x-b)*(x-c);
y=sqrt(y);
if(fabs(a-b)>=c||fabs(a-c)>=b||fabs(b-c)>=a||a+b<=c||a+c<=b||c+b<=a)
printf ("该条件不构成三角形\n要继续吗?(Y)继续,其他退出\n");
else
printf ("三角形面积为:%f\n要继续吗?(Y)继续,其他退出\n",y);
scanf("%c%c",&m);
switch(m)
{
case 'Y': case 'y': return main();break;
default: break;
}
fflush(stdin);
}
我是想让程序重复使用直至按其他键退出···但是到了switch语句就会停止然后死掉- -求高手帮忙
展开
 我来答
军军vs华华
2012-10-24 · TA获得超过263个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:158万
展开全部
#include<stdio.h>
#include<math.h>
#include<conio.h>
void main()
{
float a,b,c,x,y;
char m;
jun:printf ("请输入三角形三边长度:\n");
scanf ("%f%f%f",&a,&b,&c);
x=(a+b+c)/2;
y=x*(x-a)*(x-b)*(x-c);
y=sqrt(y);
if(fabs(a-b)>=c||fabs(a-c)>=b||fabs(b-c)>=a||a+b<=c||a+c<=b||c+b<=a)
printf ("该条件不构成三角形\n要继续吗?(Y)继续,其他退出\n");
else
printf ("三角形面积为:%f\n要继续吗?(Y)继续,其他退出\n",y);
m=getch();
switch(m)
{
case 'Y':case'y' :goto jun;break;
default: break;
}
getch();
}
试试我这个,我刚调试完,可以...我主要看了下你的程序,在你的头文件里面加上#include<conio.h>,然后把scanf("%c",&m);换成m=getch();也照样能运行结果出来....至于为什么,我想是字符型输入scanf与getch的差别,scanf会提前读取缓存原有的字符,这是我的理解,希望对你有帮助...
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaobomo
2012-10-24 · TA获得超过523个赞
知道小有建树答主
回答量:533
采纳率:100%
帮助的人:365万
展开全部
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,x,y;
char s='Y';
while(1)
{
printf("请输入三角形三边长度:\n");
scanf("%f\n%f\n%f",&a,&b,&c);
x=(a+b+c)/2;
y=x*(x-a)*(x-b)*(x-c);
y=sqrt(y);
if(fabs(a-b)>=c||fabs(a-c)>=b||fabs(b-c)>=a||a+b<=c||a+c<=b||c+b<=a)
printf("该条件不构成三角形\n要继续吗?(Y)继续,其他退出\n");
else
printf("三角形面积为:%f\n要继续吗?(Y)继续,其他退出\n",y);
fflush(stdin);
scanf("%c",&s);
if(s=='y' || s=='Y')
continue;
else
break;
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
佘忆之eV
2012-10-24
知道答主
回答量:5
采纳率:0%
帮助的人:5.7万
展开全部
修改如下,测试已通过。
...........
printf ("三角形面积为:%f\n要继续吗?(Y)继续,其他退出\n",y);

scanf("%*[^\n]");
scanf("%*c");
scanf("%c",&m);
switch(m)

.......
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
果虾若笑葩15
2012-10-24 · TA获得超过766个赞
知道小有建树答主
回答量:464
采纳率:100%
帮助的人:369万
展开全部
main()
{
float a,b,c,x,y;
char m;
m = 'Y';

while(m == 'Y' || m == 'y')
{

printf ("请输入三角形三边长度:\n");
scanf ("%f%f%f",&a,&b,&c);
x=(a+b+c)/2;
y=x*(x-a)*(x-b)*(x-c);
y=sqrt(y);
if(fabs(a-b)>=c||fabs(a-c)>=b||fabs(b-c)>=a||a+b<=c||a+c<=b||c+b<=a)
printf ("该条件不构成三角形\n要继续吗?(Y)继续,其他退出\n");
else
printf ("三角形面积为:%f\n要继续吗?(Y)继续,其他退出\n",y);
scanf("%c%c",&m); /*这句感觉使用scanf("%c",&m);就可以了*/

}
fflush(stdin);
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友52966c6
2012-10-24
知道答主
回答量:65
采纳率:0%
帮助的人:15.1万
展开全部
#include<stdio.h>
#include<math.h>
void main()
{
float a,b,c,x,y;
char s='Y';
while(1)
{
printf("请输入三角形三边长度:\n");
scanf("%f\n%f\n%f",&a,&b,&c);
x=(a+b+c)/2;
y=x*(x-a)*(x-b)*(x-c);
y=sqrt(y);
if(fabs(a-b)>=c||fabs(a-c)>=b||fabs(b-c)>=a||a+b<=c||a+c<=b||c+b<=a)
printf("该条件不构成三角形\n要继续吗?(Y)继续,其他退出\n");
else
printf("三角形面积为:%f\n要继续吗?(Y)继续,其他退出\n",y);
fflush(stdin);
scanf("%c",&s);
if(s=='y' || s=='Y')
continue;
else
break;
}
} 没有问题,绝对能行。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式