我在C中创建了一个程序,它从键盘获取a,b和c的值,并显示“+ value”和“-value”。但是当我提供输入后,它会显示诸如“-1。#IND0”之类的输出。为什么会这样?没有编译错误......
继承我的代码:
#include<stdio.h>
#include<math.h>
int main(void)
{
int a,b,c;
double x1,x2;
printf("Enter a ");
scanf("%d",&a);
printf("Enter b ");
scanf("%d",&b);
printf("Enter c ");
scanf("%d",&c);
x1 = ( (-1 * b) + sqrt(pow(b,2) - (4 * a * c)) ) / 2 * (float)a ;
x2 = ( (-1 * b) - sqrt(pow(b,2) - (4 * a * c)) ) / 2 * (float)a ;
printf("Plus Value %.5f\n",x1);
printf("Minus Value %.5f\n",x2);
}
答案 0 :(得分:3)
您需要检查pow(b,2) - (4 * a * c)
是否为非负数,否则您无法取平方根。
同时检查a
不是0,因为你要除以它。
完整性检查对于避免意外行为非常重要。希望这有帮助!
答案 1 :(得分:-1)
您的程序仅对 a = 1 有效,因为当 a&gt; 1 以 a = 5 为例, sqrt(pow(b,2) - (4 * a * c))将导致 sqrt(-ve)值。这就是它提供此输出的原因。该程序在逻辑上是正确的,但并非适用于所有情况。