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;
}
展开
 我来答
匿名用户
2012-06-08
展开全部
delta = b*b - 4*a*c;
这是给delta赋值,二次方程判别式
当然要放在循环里了,放在开头delta在循环里就不变了,计算当然不对了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
北斗七星高歌
2012-06-08
知道答主
回答量:7
采纳率:0%
帮助的人:5.8万
展开全部
开头就写的话,a和b的值都没有指定,因此当然不能得到所需的值了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Bull_林
2012-06-08
知道答主
回答量:30
采纳率:0%
帮助的人:21.6万
展开全部
那时候,a,b,c木有值呀!
delta=2331231312112(乱七八糟的数)
而且a,b,c会变的!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式