第1个回答 2011-10-24
switch ... case 只能处理定值,处理不了范围,你这个问题只能用if else 来处理
if( x<=850 )
y = 0;
else if( x<=1350 )
y = 5;
else if( x<=2850 )
y = 10;
else if( y<=5850 )
y = 15;
else //最后一个条件和倒数第2个重复了
第2个回答 2011-10-24
#include<stdio.h>
int main()
{
int x;
printf("请输入X的值\n");
scanf("%d",&x);
int n;
if(x<=850)
{
n=1;
}
if(x<=1350 && x>850)
{
n=2;
}
if(x<=2850 &&x>1350)
{
n=3;
}
if(x<=5850 && x>2850)
{
n=4;
}
if(x>5850)
{
n=5;
}
switch(n)
{
case 1:printf("y=0\n");break;
case 2:printf("y=5\n");break;
case 3:printf("y=10\n");break;
case 4:printf("y=15\n");break;
case 5:printf("y=20\n");break;
default:printf("ERROR");break;
}
return 0;
}
非要用switch语句的话只好这样啦。
第3个回答 2011-10-25
#include <stdio.h>
void main()
{int c,y,x;
printf("输入一个数x=");
scanf("%d",&x);
if(x<=850)
c=0;
else if((850<x)&&(x<=1350))
c=1;
else if((1350<x)&&(x<=2850))
c=2;
else if((2850<x)&&(x<=5850))
c=3;
else
c=4;
switch(c)
{case(0):printf("y=0\n");break;
case(1):printf("y=5\n");break;
case(2):printf("y=10\n");break;
case(3):printf("y=15\n");break;
case(4):printf("y=20\n");break;
}
}
第4个回答 2011-10-24
switch不能判断一个数的范围。除非这些数成线性关系,进行归一化处理,使其每个条件变成一个数。
若没有规律可以处理,还非要用switch会很累的。如下:
switch(x)
{
case 0:
case 1:
...//此处省略n行
case 850:
y=0;break;
case 851:
case 852;
...//没完没了的省略
case 1350;
y=5;break;
...//省略很多呢
}
追问switch((x-350)/500)
本回答被提问者采纳