C语言if后大括号的作用?

刚开始学C额。。看教程自己写了个解一元二次方程的代码。代码如下#include<stdio.h>#include<math.h>intmain(void){inta=1;... 刚开始学C额。。看教程自己写了个解一元二次方程的代码。代码如下
#include <stdio.h>
#include <math.h>

int main(void)
{
int a = 1;
int b = 5;
int c = 6;
double deta;
double x1;
double x2;
deta = b * b - 4 * a * c ;
if ( deta < 0 )

printf ("无解");

else if ( deta == 0)
{
x1 = ( -b ) / 2 * a;
printf ("计算的结果为:x1=x2=%f " ,x1);
}
else ------------------------------------------------------------①
{
x1 = ( -b + sqrt (deta) ) / 2 * a;
x2 = ( -b - sqrt (deta) ) / 2 * a;
printf ("计算的结果为x1=%f x2=%f " , x1 , x2);
}
return 0;
}
①后面的判断语句,现在加着大括号执行结果正确
计算的结果为x1=-2.000000 x2=-3.000000 Press any key to continue

但是去了大括号以后,执行结果变成这样了
解a=1 b=5 c=6这个方程结果还是对的
但是如果解一个无解的方程,比如a=1 b=2 c=3
会出现这样的结果
无解计算的结果为x1=-925596313493178310000000000000000000000000000000000000000000
0.000000 x2=-1.#IND00 Press any key to continue

为啥?

程序哪里有写的不规范的,还望高手指点一下啊!谢谢
展开
 我来答
动植物世界
高粉答主

2020-02-10 · 原创动物解说创作者(原创、原创、原创) 每天都趴网看各位的评...
动植物世界
采纳数:235 获赞数:371931

向TA提问 私信TA
展开全部

书写是正确的。加大括号表示这是一段整体的语句块,当满足else条件后,语句块里面语句按顺序执行;如果不加大括号,则只会执行else后面的第一句。

然后if语句结束,后面2句已经不属于if语句中了,这样不管deta等于什么,x2 = ( -b - sqrt (deta) ) / 2 * a;和printf ("计算的结果为x1=%f x2=%f " , x1 , x2);都会执行。

扩展资料:

ANSI C提供了标准C语言库函数。

C语言初学者比较喜欢的Turbo C 2.0提供了400多个运行时函数,每个函数都完成特定的功能,用户可随意调用。这些函数总体分成输入输出函数、数学函数、字符串和内存函数、与BIOS和DOS有关的函数、 字符屏幕和图形功能函数、过程控制函数、目录函数等。

Windows系统所提供的Windows SDK中包含了数千个跟Windows应用程序开发相关的函数。其他操作系统,如Linux,也同样提供了大量的函数让应用程序开发人员调用。

作为程序员应尽量熟悉目标平台库函数其功能。这样才能游刃有余地开发特定平台的应用程序。比如作为Windows应用程序的开发者,应尽量熟悉Windows SDK;作为Linux应用程序开发者,应尽量熟悉Linux系统调用和POSIX函数规范。 

参考资料来源:百度百科-c语言

百度网友a39fb3e
推荐于2017-10-02 · TA获得超过4466个赞
知道小有建树答主
回答量:477
采纳率:100%
帮助的人:67.2万
展开全部
请看范例:
if(表达式)
{
……
} //--------------------复合语句①
else
{
……
} //--------------------复合语句②
大括号的作用为把多个单一的语句括起来成为一个复合语句,这样,若表达式为非0(真),则执行复合语句①,若表达式为0(假),则执行复合语句②。
如有错误,请多原谅。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
落叶l无情
2014-07-26 · TA获得超过1417个赞
知道大有可为答主
回答量:1372
采纳率:0%
帮助的人:1413万
展开全部
书写是正确的。加大括号表示这是一段整体的语句块,当满足else条件后,语句块里面语句按顺序执行;如果不加大括号,则只会执行else后面的第一句,然后if语句结束,后面2句已经不属于if语句中了,这样不管deta等于什么,x2 = ( -b - sqrt (deta) ) / 2 * a;和printf ("计算的结果为x1=%f x2=%f " , x1 , x2);都会执行。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
野文菜A
2014-07-26 · TA获得超过830个赞
知道小有建树答主
回答量:645
采纳率:100%
帮助的人:515万
展开全部
else ------------------------------------------------------------①
{
x1 = ( -b + sqrt (deta) ) / 2 * a;
x2 = ( -b - sqrt (deta) ) / 2 * a;
printf ("计算的结果为x1=%f x2=%f " , x1 , x2);
}
没有大括号,相当于这样的:
else ------------------------------------------------------------①
{
x1 = ( -b + sqrt (deta) ) / 2 * a;
}
x2 = ( -b - sqrt (deta) ) / 2 * a;
printf ("计算的结果为x1=%f x2=%f " , x1 , x2);

最后两条代码怎么都会执行,不管( deta == 0)是否成立
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蚊香Dd
2014-07-26
知道答主
回答量:3
采纳率:0%
帮助的人:3968
展开全部
if后加括号表示if条件成立后,执行括号内所有的
不加括号表示成立后执行if后的下一条语句,只有一条,到“;”为止
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式