帮我看一下这道C语言程序

来源:百度知道 编辑:UC知道 时间:2024/05/05 18:22:49
题目是这样的 有一函数 y = x (x<1)

y = 2*x-1 (1<=x<10)

y = 3*x-11 (x>=10)

我自己写的程序:
#include<stdio.h>
main()
{
int x,y;
scanf("%d",&x);

if (x<1)
if (x>=10) y = 3 * x - 10;
else y = x;
else y= 2 * x - 1;
printf("y=%d",y);
}
当输入20的时候动却执行 2*x-1 这条语句,而不是执行 3 * x - 10;
这是怎么回事,我刚学C语言不久,请帮我指出原因,谢谢.

搂主,以后再做这样的问题时(if 、、、else、、),先找if else配对,别搞的自己也晕了。
你的问题就出现在配对上,例如:(这是你的代码中几行)
if (x<1)
if (x>=10) y = 3 * x - 10;
else y = x;
else y= 2 * x - 1;

按照配对原则:else 总是与其最近靠前的if 配对。
配对为:
-----if
-----------if
-----------else
-----else
显然当你输入20 时,由于不满足第一条if语句,所以直接执行最后的else语句,也就是直接执行了 y=2*x-1 这条语句

必须先满足if(x<1),然后才执行if (x>=10) y = 3 * x - 10; else y = x;
因为if(x<1)不满足条件,所以跳到else y=2*x-1这一条了

main()
{
int x,y;
scanf("%d",&x);

if (x<1)
y=x;
else
if (x<10)
y = 2 * x - 1;
else
y= 3 * x - 11;
printf("y=%d",y);
}

晕倒~ 楼主写的实在是有点乱。。
支持 1楼的~~~~
这是 潭浩强 第三版 C语言的课后习题吧?
如果楼住有兴趣 我有这本书的答案~

你的 程序我们看懂 你看看我写的这个可以不,我现在没有c编译器 不能调试 如果不行再说
#include<stdio.h>
main()
{
int x,y;
scanf("%d",&x);

if (x<1)