c语言求分段函数用switch。 咋不出结果啊 有简单的方法也管大神们

题目是y=3x(-6<=x<0)
y=2x-6(x==0)
y=x+2(0<x>=6)
#include<stdio.h>
main()
{
double x,y;
int p;
scanf("%lf",&x);
if(x>6||x<-6)
printf("no");
else if(x<0)
p=1;
else if(x>0)
p=2;
else if(x==0)
p=3;
switch(p)
{
case '1':printf("%f",y=3*x);break;
case '2':printf("%f",y=x+2);break;
case '3':printf("%f",y=x+2);break;
}
}

第1个回答  2014-04-01
case 1:printf("%f",y=3*x);break;
case 2:printf("%f",y=x+2);break;
case 3:printf("%f",y=x+2);break

不是'1','2','3'。
第2个回答  2014-04-01
case '1':printf("%f",y=3*x);break;
case '2':printf("%f",y=x+2);break;
case '3':printf("%f",y=x+2);break;
改成
case 1:printf("%f",y=3*x);break;
case 2:printf("%f",y=x+2);break;
case 3:printf("%f",y=x+2);break;
'1'是字符1对应的ascii码本回答被提问者采纳
第3个回答  2014-04-01
语法没有错误么?你应该把case中 1 2 3的单引号去掉,表示测试的是数字,如果带单引号,表示测试的是一个字符,而这又与你定义的p的类型冲突
第4个回答  2014-04-01
嵌套出现错误