#include<stdio.h>
#include<math.h>
int main()
{char x;
do
{int a,b,c;
double x1,x2,e,p,q;
printf("请输入一个一元二次方程()x^2+()x+()=0\n");
scanf("%d%d%d",&a,&b,&c);
printf("你设定的方程为%dx^2+%dx+%d=0\n",a,b,c);
e=b*b-a*a*c;
if(e<0){
printf("方程无解");
return 0;
}
p=-b/(2.0*a);
q=sqrt(e)/(2.0*a);
x1=p+q;x2=p-q;
printf("x1=%.2f\nx2=%.2f\n",x1,x2);
}
printf("是否要继续 Y/N");
scanf("%c",&x);
while(x=='Y'||x=='y');
return 0;
}
请大侠看看哪里有问题?
------解决方案--------------------
问题1:
e的计算出错,应该是e=b*b-4*a*c
问题2:
do{}while(表达式);这个循环的用法错了,while应该放在花括号的后面
按照你的思路作的修改:
- C/C++ code
do{ .....省略 printf("是否要继续 Y/N"); scanf("%c",&x);}while(x=='Y'||x=='y');