受被两个攻轮流做到哭:[急]初学C语言问题

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 11:19:49
大家能给我解释下下面这个程序吗?
程序如下:
#include <stdio.h>
main()
{ float x,y;
printf("\n")
scanf("%f",&x);
if(x>0) y=x-7;
if(x=0) y=2;
if(x<0) y=3*x*x;
printf("%.2f \n",y);
}
程序运行如下;
3.8
-3.20

问题1;为什么格式输入时类型为小数,但结果输入的数值是3.8呢?
问题2;在用条件表达式的时候,没有对x y赋初值,为什么结果输出y的值为-3.20呢?

急呀,大家帮帮我吧!

scanf("%f",&x); 的意思是从键盘接受一个输入,运行结果3.8的意思是叫你运行的时候 从键盘输入3。8之后回车,这样把从键盘得到的3。8存给x
这样x>0运行y=x-7,所以最后输出y=-3。2

1 3.8就是你说的小数
2 前面已经有输入语句scanf("%f",&x); x为你要输入的数据

if(x>0) y=x-7; 如果输入的x大于0 那么y=x-7
if(x=0) y=2; 如果等于0 那么y=2
if(x<0) y=3*x*x; 如果小于0 那么 y=3*x*x

ps:不符合要求的数,不被执行,只执行符合要求的数!

printf("%.2f \n",y); 看到这句话了吗?它的意思就是说输出两位有效数字。“.2”就是这个意思,你尝试修改这个数字,就会出现其他没有出现的数字了。
一开始你对X负了初值,就是scanf("%f",&x);它的意思是从标准输入设备得到一个数字。
在编译的过程中,Y是没有值的,如果你是用VC编译的,你会看见这个Y的值是一个很大的负数,是一个没有意义的值。
当你对它进行第一次运算时y=x-7;y=2; y=3*x*x;系统就给了它初值,就是计算结束以后的值了。