用switch语句实现一个分段函数。

-----------------------------------------------------------------------------------------#include <stdio.h>int main (){ double x,y; int c; printf("输入x的值:"); scanf("%lf",&x); c=x/10; switch (c) { case 4: case 3: case 2:y=((-0.5)*x+3);break; case 1:y=10;break; case 0:y=x;break; default:y=0; } printf("%f\n",y);
}
这个哪错了

具体如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-15
代码本身没有错误,但没有完全反映函数表达式的意义,改如下:
int main (){
double x,y;
int c;
printf("输入x的值:");
scanf("%lf",&x);
if((c=x/10)<0) c=-1;
switch (c){
//case 4:删除此行,函数定义域中无40
case 3:
case 2:y=((-0.5)*x+3);break;
case 1:y=10;break;
case 0:y=x;break;
case -1:y=0;break;

default:c=-2;//超出定义域
}
if(c==-2) printf("输入错误!\n");
else printf("%f\n",y);
}本回答被提问者采纳