user-0 提问: 运行这个程序怎么会出现这个结果

回复:
user: user-1
content: 引用 楼主 qq_21327741 的回复:#include <stdio.h> #include <math.h> void main() {       float x,y;        printf("请输入任意一个x的值：x=:");    scanf("%f",&x);    if (x<1)    {  y=x;       printf("y的值为：y=:%f\n",y);        }    else if (x>=10)    {  y=3*x-1;       printf("y的值为：y=:%f\n",y);    }    else        y=2*x-5;        printf("y的值为：y=:%f\n",y); } 输出结果没错，进了if（x<1）满足这个条件了，直接就输出了。如果不是要这个结果，你的逻辑有问题

user: user-2
content: 太大了~~~公司邮件发不出去！！ 你到我网盘去下载吧！！ http://pan.baidu.com/s/1o6C3hJO

user: user-2
content: 引用 11 楼 qq_21327741 的回复:[quote=引用 8 楼 cxzzwb 的回复:] 我怀疑的是，你没加{}的时候，编译器只把y=2*x-5; 这一句当做是最后一个eles块内的语句，而把最后一句printf当做是main块内的，所以运行的时候并没有执行y=2*x-5;  我刚做了个测试  main() { 	   float x,y;            printf("请输入任意一个x的值：x=:");        scanf("%f",&x);        if (x<1)        {   	      y=x;           printf("y的值为：y=:%f\n",y);        }        else if (x>=10)        { 	      y=3*x-1;           printf("y的值为：y=:%f\n",y);        }        /*else        {        	  y=2*x-5;           printf("y的值为：y=:%f\n",y);        }*/        else           y=2*x-5;           y=2*x-5;           printf("y的值为：y=:%f\n",y);     }  注意，我多了一行y=2*x-5; 得到的输出结果为 y=:0.500000 y=:-4.000000  所以可以证明我刚刚的推断是正确的！！ 请问你用得是什么软件写的c语言，能把软件包发给我吗，我的是win7系统的，邮箱895007098@qq.com.谢谢[/quote] 我用的是Dev-C++的，稍后发你

user: user-0
content: 引用 8 楼 cxzzwb 的回复:我怀疑的是，你没加{}的时候，编译器只把y=2*x-5; 这一句当做是最后一个eles块内的语句，而把最后一句printf当做是main块内的，所以运行的时候并没有执行y=2*x-5;  我刚做了个测试  main() { 	   float x,y;            printf("请输入任意一个x的值：x=:");        scanf("%f",&x);        if (x<1)        {   	      y=x;           printf("y的值为：y=:%f\n",y);        }        else if (x>=10)        { 	      y=3*x-1;           printf("y的值为：y=:%f\n",y);        }        /*else        {        	  y=2*x-5;           printf("y的值为：y=:%f\n",y);        }*/        else           y=2*x-5;           y=2*x-5;           printf("y的值为：y=:%f\n",y);     }  注意，我多了一行y=2*x-5; 得到的输出结果为 y=:0.500000 y=:-4.000000  所以可以证明我刚刚的推断是正确的！！ 请问你用得是什么软件写的c语言，能把软件包发给我吗，我的是win7系统的，邮箱895007098@qq.com.谢谢

user: user-3
content: 代码功能归根结底不是别人帮自己看或讲解或注释出来的；而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。 提醒：再牛×的老师也无法代替学生自己领悟和上厕所！ 单步调试和设断点调试（VS IDE中编译连接通过以后，按F10或F11键单步执行，按Shift+F11退出当前函数；在某行按F9设断点后按F5执行停在该断点处。）是程序员必须掌握的技能之一。

user: user-4
content: 很简单，，你加大括号，被程序运行了，

user: user-2
content: 我怀疑的是，你没加{}的时候，编译器只把y=2*x-5; 这一句当做是最后一个eles块内的语句，而把最后一句printf当做是main块内的，所以运行的时候并没有执行y=2*x-5;  我刚做了个测试  main() { 	   float x,y;            printf("请输入任意一个x的值：x=:");        scanf("%f",&x);        if (x<1)        {   	      y=x;           printf("y的值为：y=:%f\n",y);        }        else if (x>=10)        { 	      y=3*x-1;           printf("y的值为：y=:%f\n",y);        }        /*else        {        	  y=2*x-5;           printf("y的值为：y=:%f\n",y);        }*/        else           y=2*x-5;           y=2*x-5;           printf("y的值为：y=:%f\n",y);     }  注意，我多了一行y=2*x-5; 得到的输出结果为 y=:0.500000 y=:-4.000000  所以可以证明我刚刚的推断是正确的！！

user: user-5
content: 引用 6 楼 qq_21327741 的回复:[quote=引用 3 楼 u013163178 的回复:] #include <stdio.h> #include <math.h> void main() {       float x,y;        printf("请输入任意一个x的值：x=:");    scanf("%f",&x);    if (x<1)    {  y=x;//这里y被赋值为0.5       printf("y的值为：y=:%f\n",y);        }    else if (x>=10)//这后面的代码都不执行    {  y=3*x-1;       printf("y的值为：y=:%f\n",y);    }    else        y=2*x-5;//不执行        printf("y的值为：y=:%f\n",y);//执行 请问你是用什么软件写的这个程序，软件发给我可好，邮箱：895007098@qq.com[/quote] 我用linux下的vim

user: user-6
content: #include <stdio.h> #include <math.h> void main() {       float x,y;        printf("请输入任意一个x的值：x=:");    scanf("%f",&x);    if (x<1)    {  y=x;       printf("y的值为：y=:%f\n",y);        }    else if (x>=10)    {  y=3*x-1;       printf("y的值为：y=:%f\n",y);    }    else {        y=2*x-5;        printf("y的值为：y=:%f\n",y);     } }  if 和else当条件满足时只会执行后面的第一句语句，加上{}后除外。

user: user-0
content: 引用 3 楼 u013163178 的回复:#include <stdio.h> #include <math.h> void main() {       float x,y;        printf("请输入任意一个x的值：x=:");    scanf("%f",&x);    if (x<1)    {  y=x;//这里y被赋值为0.5       printf("y的值为：y=:%f\n",y);        }    else if (x>=10)//这后面的代码都不执行    {  y=3*x-1;       printf("y的值为：y=:%f\n",y);    }    else        y=2*x-5;//不执行        printf("y的值为：y=:%f\n",y);//执行 请问你是用什么软件写的这个程序，软件发给我可好，邮箱：895007098@qq.com

user: user-0
content: 为什么else后不加大括号的时候就只调用printf，上面的那一个y=2*x-5怎么就不调用。 而如果换成这样的话，换成这样，为什么那个y=2*x-5就能被调用 #include <stdio.h> #include <math.h> void main() {       float x,y;         printf("请输入任意一个x的值：x=:");    scanf("%f",&x);    if (x<1)    {  y=x;//这里y被赋值为0.5       printf("y的值为：y=:%f\n",y);         }      if (x>=10)    {  y=3*x-1;       printf("y的值为：y=:%f\n",y);    }    else        y=2*x-5        printf("y的值为：y=:%f\n",y)

user: user-7
content: else {        y=2*x-5;        printf("y的值为：y=:%f\n",y); } 大括号括起来 else的分支，如果不给大括号，默认是紧接着的一行代码

user: user-5
content: #include <stdio.h> #include <math.h> void main() {       float x,y;        printf("请输入任意一个x的值：x=:");    scanf("%f",&x);    if (x<1)    {  y=x;//这里y被赋值为0.5       printf("y的值为：y=:%f\n",y);        }    else if (x>=10)//这后面的代码都不执行    {  y=3*x-1;       printf("y的值为：y=:%f\n",y);    }    else        y=2*x-5;//不执行        printf("y的值为：y=:%f\n",y);//执行

user: user-8
content: 楼上可能正解

user: user-9
content: 你最后的else没加  大括号对，导致else里只有y=2*x-5;有效。。 后面一句 printf("y的值为：y=:%f\n",y); 无论如何都会被调用