c语言求c语言输出分段函数数 怎么错了吧

1976人阅读
C程序(333)
返回:&&【项目1:分段函数求值】从键盘输入x的值(要求为实型),根据公式1计算并输出x和y的值。&[参考解答]解法1 &#include &stdio.h&
#include &math.h&
int main ( )
scanf(&%lf&, &x);
else if(x&6)
//此处已经自然满足x&=2的条件
else if(x&10)
y=sqrt(x+1);
else //自然是x&=10的时候执行下一语句
y=1/(x+1);
printf(&%lf\n&, y);
}同学们的解法中,还有:解法2 &#include &stdio.h&
#include &math.h&
int main ( )
scanf(&%lf&, &x);
if(x&=2 && x&6)
if(x&=6 && x&10)
y=sqrt(x+1);
y=1/(x+1);
printf(&%lf\n&, y);
}  这个解法不能算错,但是不好,它会让计算机多“做”一些事情。例如,当输入x的值为1时,解法1只需要进行一次判断,直接求值即可,而当输入x的值为8时,解法1也只需要进行3次判断。但对于解法2,无论输入是多少,4次判断都少不了。  这是涉及“效率”的问题,可能在此处无关大碍,但专业人员对程序评价是,正确是底线,接下来就要关注效率。  充分用好else分支,显然程序更易懂一些,要习惯于用这种写法。  再一个需要强调并于条件的写法。以(x&=2 && x&6)为例,有人会写成(2=&x&6),这时,编译器会提示错误,由此改正尚不至于造成严重后果。而将同样的条件,有人写成(6&x&=2)时,不会有编译错误,但更大的风险却隐藏其中。例如x=4时,(x&=2 && x&6)的值为真(1):(x&=2)和(x&6)同时为真,故为真;(6&x&=2)的值为假(0):为假为原因是,6&4为真(1),故表达式相当于(1&=2);事实上,由于(6&x)的取值只能是0或1,无论x取值多少,(6&x&=2)永远为假。  将表示判断的表达式写好,事关正确性与效率。  有同学写出了下面的解法:解法3 &#include &stdio.h&
#include &math.h&
int main ( )
scanf(&%lf&, &x);
if(x&=2 && x&6)
if(x&=6 && x&10)
y=sqrt(x+1);
y=1/(x+1);
printf(&%lf\n&, y);
}  这个写法中,终于在第13行用了一个else。看似用上了双分支是好事,这个程序却是完全错误的。输入0或4运行一下,就会发现错误了。而分析程序,确实只要(x&=6 && x&10)为假,即使x&6已经在前面给y赋过值,else分支仍然要执行,y将被重新赋值,由此产生错误!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:4640768次
积分:74883
积分:74883
排名:第14名
原创:2004篇
转载:10篇
评论:6454条
难度:初级
类型:技术教程
难度:中级
类型:技术教程
难度:中级
类型:技术教程
文章:453篇
阅读:1379579
文章:488篇
阅读:1498021
文章:15篇
阅读:42261
迂者自勉:
※能取得一点点突破,就是进步
※并肩学生与不良学风坚决斗争
※甘为草根,仰慕草根之力量
※还原大学和大学学习之本色
∞心系教育,热爱生活
∞我的专栏-
∞给我写信
∞不用QQ-它会谋杀整段的时间
友情链接:周兆熊为IT学子解惑、
(12)(26)(22)(3)(6)(17)(13)(25)(19)(5)(4)(15)(45)(45)(44)(5)(45)(37)(107)(123)(64)(82)(78)(27)(43)(30)(15)(9)(13)(24)(43)(65)(60)(13)(16)(63)(56)(41)(18)(29)(10)(28)(32)(43)(46)(7)(10)(59)(83)(51)(38)(20)(32)(15)(22)(30)(28)(16)(4)(38)(1)C语言中,这个分段函数如何用switch-case语句实现?
bool isNegitive = x&0;
switch(isNegitive){
case true:
return -1;
case false:
return 2*x;
switch(x&0)
case true:y=2*x;break;
case false:
switch(x==0)
case true:y=0;break;
case false:y=-1;break;
把条件写进括号里,然后用switch套一个switch就可以了。
稍微变通一下还是可以的, 比如在switch之前先判断x和0的关系,生成一个常量,再在case里匹配
已有帐号?
无法登录?
社交帐号登录2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年3月 C/C++大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年3月 C/C++大版内专家分月排行榜第三
2013年3月 C/C++大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。用c语言编程1.有一分段函数:
14-03-26 &匿名提问}

我要回帖

更多关于 c语言计算分段函数 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信