C语言检测结果无错误,但无法运行,麻烦帮看看
解决时间 2021-05-04 23:06
- 提问者网友:相思似海深
- 2021-05-04 12:52
#include<stdio.h>
#include<math.h>
void main()
{
int a,b,c,disc,x1,x2,p,q;
scanf("%d,%d,%d",&a,&b,&c);
printf("The equation");
{
if (a==0)
{
x1=-c/b;
x2=-c/b;
printf("x1=%d,x2=%d",x1,x2);
if (b==0)
{
printf("is not a quadratic\n");
if (c==0)
printf("has infinite roots\n");
else
printf("is not a quadratic\n");
}
else
printf("x1=%d,x2=%d",x1,x2);
}
else
disc=b*b-4*a*c;
{
if (disc>=0)
{
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;
x2=p-q;
printf("x1=%d\nx2=%d\n",x1,x2);
}
else
printf("%d+%di\n",p,q);
printf("%d-%di\n",p,q);
}
}
}
要在键盘上输入a,b,c的值
最佳答案
- 五星知识达人网友:何以畏孤独
- 2021-05-04 14:14
判断太乱,基本上没有对的,估计是楼主基本的 if else 用法不熟悉;
简单修改如下,得到虚根的部分没有加:
void main()
{
int a,b,c,disc,x1,x2,p,q;
scanf("%d,%d,%d",&a,&b,&c);
printf("The equation ");
{
if (a==0)
{
if (b==0)
printf(" Error!\n");
else
{
x1=-c/b;
x2=-c/b;
printf("x1=%d,x2=%d",x1,x2);
}
}
else
{
disc=b*b-4*a*c;
if (disc>=0)
{
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;
x2=p-q;
printf("x1=%d\nx2=%d\n",x1,x2);
}
else
{
// 这时 p 和 q 没有赋值, 所以以下两句得到的虚根是错的;
// 需要在这里给 p 和 q 赋值;
// printf("%d+%di\n",p,q);
// printf("%d-%di\n",p,q);
}
}
}
}
全部回答
- 1楼网友:纵马山川剑自提
- 2021-05-04 17:03
我晕 怎么你的if else 不配对呢?就是if else 出问题了 自己再看看 !!
- 2楼网友:零点过十分
- 2021-05-04 16:05
printf("The equation");
{ <-这里
- 3楼网友:孤老序
- 2021-05-04 15:32
单步调试看看吧,F10,和F11,祝你成功。
if嵌套有问题...
#include<stdio.h>
#include<math.h>
void main()
{
int a,b,c,disc,x1,x2;
double p, q;
scanf("%d,%d,%d",&a,&b,&c);
printf("The equation:\n");
if (a==0 && b != 0) {
x1=-c/b;
x2=-c/b;
printf("x1=%d,x2=%d",x1,x2);
} else if (a == 0 && b==0) {
printf("is not a quadratic\n");
} else if (a == 0 && b == 0 && c==0) {
printf("has infinite roots\n");
} else {
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
if (disc>=0) {
x1=p+q;
x2=p-q;
printf("x1=%d\nx2=%d\n",x1,x2);
} else {
printf("%f+%fi\n",p,q);
printf("%f-%fi\n",p,q);
}
}
}
我要举报
大家都在看
推荐资讯