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语句就会停止然后死掉- -求高手帮忙 展开
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语句就会停止然后死掉- -求高手帮忙 展开
6个回答
展开全部
#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会提前读取缓存原有的字符,这是我的理解,希望对你有帮助...
#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会提前读取缓存原有的字符,这是我的理解,希望对你有帮助...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
}
#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;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
修改如下,测试已通过。
...........
printf ("三角形面积为:%f\n要继续吗?(Y)继续,其他退出\n",y);
scanf("%*[^\n]");
scanf("%*c");
scanf("%c",&m);
switch(m)
.......
...........
printf ("三角形面积为:%f\n要继续吗?(Y)继续,其他退出\n",y);
scanf("%*[^\n]");
scanf("%*c");
scanf("%c",&m);
switch(m)
.......
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
}
{
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);
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#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;
}
} 没有问题,绝对能行。
#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;
}
} 没有问题,绝对能行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询