> 唯美句子 > C语言switch语句实例问题

C语言switch语句实例问题

C语言switch语句实例问题

#include

int main()

{

int n,x;

printf("What's the result?\n");/*这里的格式是%d 不是%f*/

scanf("%d",&n);

x=n/10;

switch(x)

{

case 10:

case 9:

printf("A\n");

break;

case 8:

printf("B\n");

break;

case 7:

printf("C\n");

break;

case 6:

printf("D\n");

break;

default:

printf("E\n");

break;

}

}

C语言中,如何在switch case后面调用函数,一共5个case,都要用函数的调用

#include

void test1()

{

printf("test1\n");

}

void test2()

{

printf("test2\n");

}

void test3()

{

printf("test3\n");

}

void test4()

{

printf("test4\n");

}

void test5()

{

printf("test5\n");

}

int main()

{

int i = 1; //修改i的值,可以调用不同的函数

switch(i)

{

case 1:

test1();

break;

case 2:

test2();

break;

case 3:

test3();

break;

case 4:

test4();

break;

case 5:

test5();

break;

default:

break;

}

return 0;

}

关于c语言switch语句的用法

凡是使用过的人都会有同样的感觉——C语言的使用灵活这个特点既是优点又是缺点, 因为对精通C语言的用户来讲, 灵活就意味着编程可以无拘无束, 甚至随心所欲; 但对初学者或者是尚未摸着规律的用户来说, 有时候就会觉得C程序设计有点象雾里看花, 摸不着头脑。 因为灵活就意味着没有一个标准。 而实际上,C 语言和其它计算机语言一样, 只要你真正掌握了该语言的每一个语句的特点, 理解、 运用就不难掌握了。 下面就C语言中switch 语句的使用特点谈谈自己的体会。 ---- switch 语句的格式如下: switch( 表达式) {case 常量表达式1: 语句1 case 常量表达式2: 语句2 case 常量表达式3: 语句3 case 常量表达式n: 语句n default : 语句n+1 } ---- 从表面上看来,switch 语句与PASCAL 语言中的case 语句以及FOXBASE 中的do case 语句非常类似, 只是关键字有所不同: 一个是switch; 而另一个是case 或do case。 但如果仔细阅读过教材或有关参考书的话, 就绝不会有此想法。 从语句的功能上来看,PASCAL 和case 语句或FOXBASE 的do case 语句中的常量表达式是用来与case 后面的表达式比较以确定执行哪一个语句, 一旦执行了某一语句, 则会自动地结束这一case 后的语句; 而C 的switch 语句则不然。 首先,switch 语句中的常量表达式只是起到一个入口作用, 一旦执行了相应的语句后, 只要没有强迫中断语句(break),它就会一直按顺序继续执行下去, 也就是会执行其它case 后面的语句, 直到遇到“}” 符号才停止。 乍看觉得有点不可事议, 但若仔细回味且切身编程体会, 那么就会感司到C的switch 语句的独到之处。 接下来就几个具体例子来剖析:switch 语句的特点以及区别于其它语言中的相应语句的妙处。 ---- 第一个例子: 根据输入的百分制成绩, 然后给出‘A’ ~‘E’ 相应的等级符(90-100 为‘A’、80-89 为‘B’、70-79 为‘B’、60-69 为‘C’、0-59 为‘E’)。主要的处理程序段如下:(temp、score、grade 皆为整型变量) temp=score/10; switch(temp) {case 9:grade=‘A’; case 8:grade=‘B’; case 7:grade=‘C’; case 6:grade=‘D’; case 5:grade=‘E’; } printf(“the grade is %c”,grade); ---- 仔细阅读这段程序( 根据C语言的特点),就会发现有很多错误。 首先, 对100 分和低于50 分的情况没有考虑; 其次,C 语言的switch 特点是顺序执行, 那么这段程序不输入的分数如何, 最后的输出都将是‘E’。因此, 修改这段程序, 可以得到一个正确答案是: temp=score/10; switch(temp) {case 10: case 9:grade=‘A’;break; case 8:grade=‘B’;break; case 7:grade=‘C’;break; case 6:grade=‘D’;break; case 5: case 4: case 3: case 2: case 1: case 0:grade=‘E’; } printf(“the grade is %c,grade”); ---- 但这么一个结果还不算是一个好的C程序, 因为它只是能得到正确的解, 没有真正用到C的特点。 如果将C的特点运用到这段程序中, 则程序将优化成如下: grade=‘A’; temp=score/10; switch(temp) {case 0: case 1: case 2: case 3: case 4: case 5:grade++; case 6:grade++; case 7:grade++; case 8:grade++; case 9: case 10: } printf(“the grade is %c,grade”); ---- 从这段程序中, 我们可以体会到前面所说的该语句的特点。 ---- 第二个例子: 运输公司对用户计算运费。 距离(s) 越远, 每公里运费越低。 具体标准如下: s < 250 (km) 没有折扣 250 < =s < 500 (km) 2% 折扣 500 < =s < 1000 (km) 5% 折扣 1000 < =s < 2000(km) 8% 折扣 2000 < =s < 3000(km) 10% 折扣 3000 < =s (km) 15% 折扣 ---- 设每公里每吨货物的基本运费为p, 货物重为w, 距离为s, 折扣为d, 则总运费计算公式为: ---- f=p*w*s*(1-d) ---- 分析此问题, 折扣的变化是有规律的: 折扣的“ 变化点” 都是250 的倍数(250,500,1000,2000,3000)。利用这一特点, 可以再设一变量c, 它代表250 的倍数。 当c<1 时, 无折扣;1<=c<2 时, 折扣为d=2%;2<=c<4 时,d=5%;4<=c<8 时,d=8%;8<=c=12 时,d=15%。 所以可以有如下没有错误的程序段: scanf(“%f,%f,%d”,&p,&w,&s); if(s>=3000)c=12 else c=s/250 switch(c) {case 0:d=0;break; case 1:d=2;break; case 2: case 3:d=5;break; case 4: case 5: case 6: case 7:d=8;break; case 8: case 9: case 10: case 11:d=10;break; case 12:d=15; } f=p*w*s*(1-d/100.0); printf(“freight%15.f”,f); ---- 如同前一个题目, 这个程序段也完全可以利用switch 特点, 改进优化得到如下程序段: d=0 scanf(“%f,%f,%k”,&p,&w,&s); if(s>=3000)c=12 else c=s/250 switch(c) {case 12:d+=5; case11: case 10: case 9: case 8:d+=2; case 7: case 6: case 5: case 4:d+=3; case 3: case 2:d+=3; case 1:d+=2; case 0: } f=p*w*s*(1-d/100.0); printf(“freight%15.4f”,f); ---- 从上面两个例子分析, 使我们可以比较清楚地看见C语言中switch 语句与其它语言中相应语句的区别。 尽管在学习和教计算机语言的过程中, 我们始终认为语言是相通的, 这样便于学习一门新的语言。 但是真正要把某一门计算机语言学好, 非得掌握它的特点。 ---- 这里仅仅是自己在编程实践过程中的一点体会, 有错误的地方恳请批评指正。 希望对你有帮助!

C语言switch语句例题

首先,你的程序有问题!printf后面没有那个冒号。

#include

int main()

{

int k;

scanf("%d",&k);

switch(k)

{

case 1:printf("%d\n",k++);

case 2:printf("%d\n",k++);

case 3:printf("%d\n",k++);

case 4:printf("%d\n",k++);

break;

default:printf("FULL!\n");

}

return 0;

}

/////////////输入1

输出:

1

2

3

4

进入case 1,输出1

k变成2,进入case 2,输出2

k变成3,进入case 3,输出3

k变成4,进入case 4,输出4

遇到break,退出switch。

输入3过程是一样的,只是从case 3开始,输出:

3

4

C语言中的Switch-case语句

switch语句的语法如下(case、default和break是其配套关键字):

switch ( 表达式)

{

case 常量表达式1:

语句1;         可以是多行,可以加括号,也可以不加,到下一个case之前,都是本case的语句范围

[break;]       中括号,表示此语句可以没有

case 常量表达式2:

语句2;

[break;]

……

case 常量表达式n:

语句n;

[break;]

[default:]

语句n+1;

[break;]

}

说明:

*

break  表示退出{ }

*

case后面只能跟一个值(加冒号:),而不能是一个表达式

*

switch(表达式) 后面没有分号(;)

*

{}前后没有分号(;)

*

default语句可以出现在任何位置,但建议写到最后,表示除去case匹配之外的其它情况。也可以没有default语句

switch语句规则:

*

case标签必须是常量表达式(constant Expression) 只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。

*

case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。

*

如果两个case语句间没有break,则执行完匹配的case语句后,会顺序执行下面的语句,直到遇到break语句或switch结束

*

连续的两个case语句表示,这两个case是同一种情况

C语言,用switch语句写个选择菜单,case后面怎么写函数调用?调用下面的程序?

学过调用函数吧,就是那么调用的,当然也可以自己直接写。举个例子吧。数据a b,如果我想操作加减乘除,那么可以这么写:

#include

void jiafa(int,int);/*函数声明*/

void main()

{

int a,b,n;

scanf("%d%d",&a,&b);

scanf("%d",&n);

switch(n)

{

case 1:

jiafa(a,b); /*这里可以写成调用函数,也可以像下面一样直接写*/

break;

case2:printf("%d",a-b); break;

case3:printf("%d",a*b); break;

case3:printf("%d",a/b); break;

}

}

void jiafa(int a,int b)/* 函数定义*/

{

printf("%d",a+b);

}

C语言中用switch语句的时候,为什么有些case后面没有语句的,如case10: case9:printf("优秀");

c语言中

switch语句其实每个case都会判断的,所以要用break跳出

有时候两个不同的case需要做相同的处理

例如case10 case 9都是优秀

那么 case10: 之后不写任何语句,也不写break

那么也会运行紧跟着的case 9:后面的语句,显示优秀

就应为用这样的极值,所以在正常的case情况运行完后,要记得加break

而在多个case有共同操作的时候,可以把他们写在一起中间都不用break

最后只用写一次共同操作的代码,一个break

求教c语言中switch 语句的详细用法

C语言程序语句switch:

switch用在编程中,如C语言中它经常跟case一起使用,是一个判断选择代码。其功能就是控制业务流程流转的。

switch语句的语法如下(switch,case和default是关键字):

switch ( controllingExpression )

{

case constantExpression1 :

case constantExpression2 :

case constantExpression3 :

statements; //当满足constantExpression1、constantExpression2、constantExpression3任何一个都执行statements

break;

case constantExpression :

statements ;

break;

...

default :

statements ;

break;

}

遵守switch语句规则

switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:

只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。

case标签必须是常量表达式(constantExpression),如42或者"42"。如果需要在运行时计算case标签的值,必须使用if语句。

case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。

C语言switch应用例子:

例一:

#include

int main()

{

double score;

printf("请输入分数:\n");

scanf("%lf",&score);

switch((int)(score/10)) //如果写成witch((int)score/10)会出现严重错误

{

case 10:

case 9:printf("A(最好)\n");break;

case 8:printf("B(优秀)\n");break;

case 7:printf("C(良好)\n");break;

case 6:printf("D(及格)\n");break;

case 5:

case 4:

case 3:

case 2:

case 1:

case 0:printf("E(不及格)\n");break;

default:printf("Error!\n");

}

}

例二:

#include

int main()

{

char rank;

printf("请输入分数等级:(A、B、C、D、E)\n");

scanf("%c",&rank);

switch(rank)//switch((int)score/10)出现严重错误,switch(((int)score)/10)出现严重错误,

{

case 'A':printf("A(90~100)\n");break;

case 'B':printf("B(80~89)\n");break;

case 'C':printf("C(70~79)\n");break;

case 'D':printf("D(60~69)\n");break;

case 'E':printf("E(0~59)\n");break;

default:printf("error!\n");break;

}

}

例三:

输入年月日,判断这一天是这一年的第几天。

#include

int main()

{

int year,month,date,leap,days=0;

scanf("%4d%2d%2d",&year,&month,&date);

leap=(year%4==0&&year%100!=0||year%400==0);

switch(month)

{

case 12:days+=30;

case 11:days+=31;

case 10:days+=30;

case 9:days+=31;

case 8:days+=31;

case 7:days+=30;

case 6:days+=31;

case 5:days+=30;

case 4:days+=31;

case 3:days+=28+leap;

case 2:days+=31;

case 1:days+=date;break;

}

printf("%4d年%2d月%2d日是这一年的第%d天。\n",year,month,date,days);

}

C语言中switch case语句的问题

# include

void main()

{

int I, k, a, b, c, d, e, f,g;

printf("请输入利润I:\n");

scanf("%d", &I);

a = I * (1.0f/10); //此处强制为浮点类型,不然a一直是0,看你的意思了

b = (I - 100000) * 75/1000;

c = (I - 200000) * 5/100;

d = (I - 400000) * 3/100;

e = (I - 600000) * 15/1000;

f = (I - 1000000) * 1/100;

g = (I - 1) / 100000;

switch(g)

{

case 0:

printf("奖金总数k=%d\n", a);

break;

case 1:

printf("奖金总数k=%d\n", a + b);

break;

case 2:

case 3:

printf("奖金总数k=%d\n", a + b + c);

break;

case 4:

case 5:

printf("奖金总数k=%d\n", a + b + c + d);

break;

case 6:

case 7:

case 8:

case 9:

printf("奖金总数k=%d\n", a + b + c + d + e);

break;

default :

printf("奖金总数k=%d\n", a + b + c + d + e + f);

break;

}

望采纳~

C语言case语句

switch(x){

case 1:

//dosometing here

break;

}