c语言中的switch语句

当x<=850, y=0;
850<x<=1350, y=5;
1350<x<=2850, y=10;
2850<x<=5850, y=15;
5850<=x, y=20;
用c语言中switch语句表示。

简单的说switch语句也是属于判断语句,if else语句适合3个以内的判断,但是多了用if就不太方便了,所以这时3个以上的判断用switch语句就比较方便了,结构就像楼上的兄弟们那样写的,大概怎么用我举个例子你就懂了。
例:判断一周的食谱,就是星期几的食谱是什么,首先一个星期7天,那么判断七次,用switch语句写法如下:
#include
void main()
{
int a;//定义变量用于开辟1到7的数字即一星期的天数。
printf("看看星期几的食谱是什么?");
scanf("%d",&a);
switch(a)//开始判断1-7的食谱。
{
case 1:printf("星期一吃水果\n");
break;//结束语句,判断这天后提示完就不执行下面的语句了,否则逻辑错误。
case 2:printf("星期二吃蔬菜\n");
break;
case 3:printf("星期三吃火锅\n");
break;
case 4:printf("星期四吃米饭\n");
break;
case 5:printf("星期五吃西餐\n");
break;
case 6:printf("星期六吃米饭\n");
break;
case 7:printf("星期天吃满汉全席\n");
break;
default:printf("请输入正确的日期\n");//default语句类似else,如果不输入1到7的正确日期就显示这个语句。
break;
}
}
温馨提示:答案为网友推荐,仅供参考
第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)

本回答被提问者采纳
相似回答