重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
问题一,x和y都是双精度型(double)数变量,用格式输入和输出时,要使用格式符%lf,否则会出错,得不到正确的结果。
成都创新互联网站建设公司是一家服务多年做网站建设策划设计制作的公司,为广大用户提供了成都做网站、成都网站设计,成都网站设计,一元广告,成都做网站选成都创新互联,贴合企业需求,高性价比,满足客户不同层次的需求一站式服务欢迎致电。
你用的%d是整型(int)数的输出输入格式符。
所以你必须把他们统一起来,方法一是:把scanf和printf两个语句中的%d都换成%lf;方法二是:把前面定义语句double x,y;中的double换成int,语句变成:
int x,y;
采用上面两个方法都可以让程序正常运行。
问题二,scanf语句中双引号当中有“x=”,全部是:
scanf("x=%d",x);
或scanf("x=%lf",x);
这样的写法,要求在程序运行时,输入的内容要包含双引号内除格式符以外的所有字符,即你一定要输入:
x=2[回车]
系统才能读到x的值2。值得注意的是,x的大小写都必须跟程序中的大小写相同!
所以,你在程序运行时,直接输入:
2[回车]
系统并不会取得2,更不会把2赋值给x,所以,导致程序运行到后面,也不会得出正确的y的值(11)。
有鉴于此,也有两个办法让程序正确运行:
方法一,输入时按“x=2[回车]”;
方法二,由于按“x=”非常不方便,容易出错,建议把输入语句的x=去掉,改成:
scanf("%d",x);
或scanf("%lf",x);
就能按照你图片发来的输入方法操作,得到正确的结果了。
有什么问题请留言。
你的C语言程序中,else if的判断条件都不对,比如在C语言中1=x10应该改成1=xx10以此类推,其它两个也都不对,10=x30,应该改成10=xx30 ,30=x=60应该改成30=xx=60,就对了.
完整的更改后的C语言程序如下(改动的地方见注释)
#includestdio.h
int main()
{
int x,y;
printf("输入x的值:");
scanf("%d",x);
if (x1)
{
y=x;
}
else if (1=x x10) //这里改一下
{
y=2*x-1;
}
else if (10=x x30) //这里改一下
{
y=3*x-1;
}
else if (30=x x=60) //这里改一下
{
y=4*x-2;
}
else
{
y=5*x;
}
printf("y的值为:%d\n",y);
return 0;
}
写法1
if (x-5 x0) y = x;
if (x == 0) y=x-1;
if (x0 x10) y = x+1;
写法2
if (x-5 x10)
{
y=x; //在这个范围,不论怎样,先把y赋值为x
if (x=0) //在这个范围,需要对y值做修改
{
y = y-1; //先把y-1再说,对应x=0的情况,如果x!=0,那么我们再次修改
if(x0)
y = y+2; //刚刚y-1了,所以需要+2
}
}
写法3,终于是正常点的做法了
if (x-5 x0) y=x;
else
{
if (x10)
{
if (x==0) y=x-1;
else y=x+1;
}
}
写法4
switch(x)
{
case 0:
y=x-1;
break;
case -4;
case -3;
case -2;
case -1;
y=x;
break;
case 1;
case 2;
case 3;
case 4;
case 5;
case 6;
case 7;
case 8;
case 9;
y=x+1;
break;
}
我想问你个问题:你是不是用x = -1测试的??
那么y = x-1 跟 y = 2x的结果不是一样么,都是-2啊。。。不要因此得出结论x=-1的时候y=2x
另外,你这个函数如果用if就全用if,如果用if--else-if,就全部这样,不要混合用,很乱。
建议都用if--else if,这样能够看出是一个分段函数。
肯定出错了,x0难道就不10?所以else if(x10)似乎应该是else if(x=0 x10)吧?