c语言,变量定义的位置问题。
这是关于求一元二次实数解的问题,问题的重点不是实数解,那个对德尔塔的定义delta=b*b-4*a*c;,为什么不能在开头定义,也就是doublea,b,c;double...
这是关于求一元二次实数解的问题,问题的重点不是实数解,那个对德尔塔的定义delta = b*b - 4*a*c;,为什么不能在开头定义, 也就是
double a, b, c;
double delta;
double x1, x2;
char ch;
delta = b*b - 4*a*c;,
如果这样写,程序就达不到所要的效果了。这是为什么?
原程序如下:
# include <stdio.h>
# include <math.h>
int main(void)
{
double a, b, c;
double delta;
double x1, x2;
char ch;
do
{
printf("请输入一元二次方程的三个系数:\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
delta = b*b - 4*a*c;
if (delta > 0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("有两个解,x1 = %lf, x2 = %lf\n", x1, x2);
}
else if (0 == delta)
{
x1 = x2 = (-b) / (2*a);
printf("有唯一解,x1 = x2 = %lf\n", x1, x2);
}
else
{
printf("无实数解!\n");
}
printf("您想继续么(Y/N): ");
scanf(" %c", &ch);
}
while ('y'==ch || 'Y'==ch);
return 0;
} 展开
double a, b, c;
double delta;
double x1, x2;
char ch;
delta = b*b - 4*a*c;,
如果这样写,程序就达不到所要的效果了。这是为什么?
原程序如下:
# include <stdio.h>
# include <math.h>
int main(void)
{
double a, b, c;
double delta;
double x1, x2;
char ch;
do
{
printf("请输入一元二次方程的三个系数:\n");
printf("a = ");
scanf("%lf", &a);
printf("b = ");
scanf("%lf", &b);
printf("c = ");
scanf("%lf", &c);
delta = b*b - 4*a*c;
if (delta > 0)
{
x1 = (-b + sqrt(delta)) / (2*a);
x2 = (-b - sqrt(delta)) / (2*a);
printf("有两个解,x1 = %lf, x2 = %lf\n", x1, x2);
}
else if (0 == delta)
{
x1 = x2 = (-b) / (2*a);
printf("有唯一解,x1 = x2 = %lf\n", x1, x2);
}
else
{
printf("无实数解!\n");
}
printf("您想继续么(Y/N): ");
scanf(" %c", &ch);
}
while ('y'==ch || 'Y'==ch);
return 0;
} 展开
3个回答
2012-06-08
展开全部
delta = b*b - 4*a*c;
这是给delta赋值,二次方程判别式
当然要放在循环里了,放在开头delta在循环里就不变了,计算当然不对了
这是给delta赋值,二次方程判别式
当然要放在循环里了,放在开头delta在循环里就不变了,计算当然不对了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
开头就写的话,a和b的值都没有指定,因此当然不能得到所需的值了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那时候,a,b,c木有值呀!
delta=2331231312112(乱七八糟的数)
而且a,b,c会变的!
delta=2331231312112(乱七八糟的数)
而且a,b,c会变的!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询