c语言程序,x,y是单精度浮点数,如果x>0,y=x+1,如果x=0,y=0,如果x<0,y=x-1 100

要求用switchcase,不能出现if条件语句,同时保持小数位数不变,即输入x=1.52,输出y=2.52,输入x=0.0,输出y=0.0,输入x=-1,输出y=-2... 要求用 switch case ,不能出现if条件语句,同时保持小数位数不变,即输入x=1.52,输出y=2.52,输入x=0.0,输出y=0.0,输入x=-1,输出y=-2 展开
 我来答
texfyx
2011-11-08 · 超过11用户采纳过TA的回答
知道答主
回答量:38
采纳率:0%
帮助的人:29.2万
展开全部
用switch case的:
#include "stdio.h"
main()
{
float x,y;
printf("Input x:\n");
snacf("%f",&x);
switch(x<0)
{
case 1:y=x-1; //x<0为真
case 0:switch(x==0) //判断x是否等于0
{
case 1:y=0;
case 0:y=x+1; //x>0
}
printf("y=%f",y);
}
这是switch和case都不用的:
#include "stdio.h"
main()
{
float x;
printf("Input x:\n");
scanf("%f",&x);
printf("y=%f",x<0?x-1:x==0?0:x+1);
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
汪好帅
2011-11-08 · TA获得超过2832个赞
知道大有可为答主
回答量:1177
采纳率:0%
帮助的人:1526万
展开全部
#include <iostream.h>
#include <math.h>
void main()
{
float x,y;
cin>>x;
switch((int)((x+0.0)/abs(x)))
{
case -1:y = x -1;break;
case 1:y = x +1;break;
default:y = 0;break;
}
cout << y;
}
追问
输入0.010,输出应该是1.010,现在结果是0
追答
没错,把abs改成fabs是针对浮点数取绝对值的,但还是有个地方没有解决,等待思考。
就是输入0.0.输出只是0。
调试了一下,无论你输入0.0,还是0.000,在程序里面调试看到的X都变成单精度的0.000000,而所知道输出函数用cout就只输出0,printf不加控制就输出0.000000.目前,还真不知道哪种方法去获取输入的浮点数是个几位数的方法。0的这种原样输出的情况,还得高人来解了。贴个目前实效代码:
#include
#include
#include
#include
void main()
{
float x,y;
// scanf("%f",&x);
cin>>x;
// char buf[20];
int a = x / fabs(x);

switch(a)
{
case -1:y = x -1;break;
case 1:y = x +1;break;
default:

y = x;break;
}
cout << y<<endl;
// printf("%m.nf",y);
// sprintf(buf,"%f",x);
// printf("%s",buf);

}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
sunzhaofeng119
2011-11-08
知道答主
回答量:11
采纳率:0%
帮助的人:4.8万
展开全部
看书switch 语句 main ()
{float x,y;
scanf("x=%f,y=%f",&x,&y);
switch
{case x=1.52;:y=2.52;
case x=0.0;: y=0.0;
case x=-1;:y=-2;}printf("%f,%f",x,y);}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
骆书飞
2011-11-08
知道答主
回答量:15
采纳率:0%
帮助的人:2万
展开全部
float x,y;
scanf("%f",&x);
switch
{
case x>=0:y=x+1;
case x<0:y=x-1;
}
printf("%f",y);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式