百度
360搜索
搜狗搜索

c语言中switch语句怎么用,switchc语言的用法详细介绍

本文目录一览: c语言中switch怎么用?

首先说明,它不是函数,只是个语句。 switch(E) {case e1: 成分子句1; case e2:成分子句2;...case eN:成分子句N;default:成分子句n+1;} c中的用法很活的。
C语言中switch是条多分支选择语句。
通常情况下格式如下:
switch(表达式){ case 常量表达式1: 语句1; case 常量表达式2: 语句2; … case 常量表达式n: 语句n; default: 语句n+1;}
其中default不一定放在最后
完整格式:
switch(表达式){ case 常量表达式1: 语句1; case 常量表达式2: 语句2; … case 常量表达式n: 语句n; default: 语句n+1; case 常量表达式n+1: 语句n+1; ... case 常量表达式m: 语句m;}
程序会计算表达式里的值,然后和所有的常量表达式进行比较
遇到和常量表达式的值相等的,则从相应的case往下执行,直到结束或遇到break,跳出该switch
如果没有遇到相同的常量表达式,则从default往下执行,直到结束或遇到break,跳出该switch
注意:
1、通常每个switch后面加break,也可以没有。没有则继续往下运行所有case和default里的代码,直到结束或遇到break;
2、case后面是常量表达式,不可以跟变量。

switchc语言的用法

c语言switch的用法如下:
1、在一个 switch 中可以有任意数量的 case 语句。每个 case 后跟一个要比较的值和一个冒号。
2、case 后的 类型 必须与 switch 中的变量具有相同的数据类型,且必须是一个常量或字面量。
3、当被测试的变量等于 case 中的常量时,case 后跟的语句将被执行,直到遇到 break 语句为止。
4、当遇到 break 语句时,switch 终止,控制流将跳转到 switch 语句后的下一行。
5、不是每一个 case 都需要包含 break。如果 case 语句不包含 break,控制流将会 继续 后续的 case,直到遇到 break 为止。
6、一个 switch 语句可以有一个可选的 default case,出现在 switch 的结尾。default case 可用于在上面所有 case 都不为真时执行一个任务。default case 中的 break 语句不是必需的。
7、一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case,且被测试的变量会对每个 switch case 进行检查。

c语言switch语句如何使用

C语言的运用非常之多,它兼顾了高级语言的汇编语言的优点,相较于其它编程语言具有较大优势。那么C语言中的switch语句如何使用呢?

C语言switch语句如何使用 switch语句允许测试变量与值列表的相等性,每个值称之为案例或者case,程序会检查switch后面的值并且与case后面的值比对,如果相等则执行后面的代码或代码块。
switch语句中使用的表达式必须具是int或enum类型,否则如float等其他数据类型是无法通过的编译的,因为编译器需要switch后面的语句和case后面的值精确匹配,而计算机无法精确表达一个float数据类型;
switch可以任意个case语句(包括没有), 值和语句之间使用:分隔;
case后面的值必须是int常量值,或者返回结果为int类型的表达式,以下代码无法编译通过。
当switch后面的变量值和case后面的常量值匹配相等后,case后面的代码将会被执行,直到break语句被执行后跳出switch代码块,但是break不是必须的,如果没有break,则执行完当前case的代码块后会继续执行后面case代码块的内容,直到执行break才可以退出。
switch还有一个默认的情况,我们用default关键词表示,当switch后面的变量和所有case后面的常量都不匹配的情况下,默认执行default后面的语句。
C语言基本构成 数据类型
C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。
常量与变量
常量其值不可改变,符号常量名通常用大写。
变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
数组
如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。
指针
如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 *(此处特指单目运算符 * ,下同。C语言中另有 双目运算符 *) 则是取内容操作符,意思是取这个内存地址里存储的内容。指针是 C 语言区别于其他同时代高级语言的主要特征之一。
指针不仅可以是变量的地址,还可以是数组、数组元素、函数的地址。通过指针作为形式参数可以在函数的调用过程得到一个以上的返回值,不同于return(z)这样的仅能得到一个返回值。
指针是一把双刃剑,许多操作可以通过指针自然的表达,但是不正确的或者过分的使用指针又会给程序带来大量潜在的错误。
字符串
C语言的字符串其实就是以'\0'字符结尾的char型数组,使用字符型并不需要引用库,但是使用字符串就需要C标准库里面的一些用于对字符串进行操作的函数。它们不同于字符数组。使用这些函数需要引用头文件

c语言 switch的用法

switch用在编程中,如C语言中它经常跟case一起使用,是一个判断选择代码。其功能就是控制业务流程流转的。
C语言程序语句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在一些计算机语言中是保留字,其作用大多情况下是进行判断选择。以C语言来说,switch(开关语句)常和case break default一起使用。
遵守switch语句规则
switch语句非常有用,但在使用时必须谨慎。所写的任何switch语句都必须遵循以下规则:
只能针对基本数据类型中的整型类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。
switch()的参数类型不能为实型 。
case标签必须是常量表达式(constantExpression),如42或者'4'。
case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
参考资料来源:百度百科-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=10%; 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 语句与其它语言中相应语句的区别。 尽管在学习和教计算机语言的过程中, 我们始终认为语言是相通的, 这样便于学习一门新的语言。 但是真正要把某一门计算机语言学好, 非得掌握它的特点。 ---- 这里仅仅是自己在编程实践过程中的一点体会, 有错误的地方恳请批评指正。 希望对你有帮助!
case (c>=90 && c<=100):
case后面的必须是一个常量。
你这个可以先将成绩除以10,再用switch
#include "stdio.h"
void main()
{
char c; /*这里别用char,改成:int c,d;*/
scanf("%c",&c); /*这一句也改成scanf("%d",&c);最好前面再加一句,printf("请输入成绩:"); 在这句后面加一句d=c/10;*/
switch(c) /*然后switch里面用d来判断,switch(d)*/
{
case (c>=90 && c<=100):printf("成绩的等级为:A.\n");
break; /*改成: case (10):
case (9):printf("成绩的等级为:A.\n");break;
case (c>=80 && c<=89):printf("成绩的等级为:B.\n");
break; /*改成:case (8):printf("成绩的等级为:B.\n"); break;
}
}
因为90到100之间的数经过除以10再取整以后就变成了9;100/10等于10,又因为case调用同一个语句的时候允许就在最后一个语句写上那个语句,而将前面的那几个省略掉,所以case (10):后面的就省掉了,当然写上也不会错。
你的补充的那个,你可以把它分开表示,就像我给你弄的那个case (c>=90 && c<=100):printf("成绩的等级为:A.\n");
break; /*改成: case (10):
case (9):printf("成绩的等级为:A.\n");break;
虽然有点纠缠不清的感觉,但是希望对解决你的疑问有一定的帮助,呵呵。。。
执行case 2是因为在switch (x) 中x=1,所以执行case 1,然而case 1 这条语句没有break,所以switch (x)在执行了case 1之后将继续往下依次执行case语句,直到碰到break就跳出switch 循环。

阅读更多 >>>  怎么用sql语句创建表,如何用sql语句建立表

对于“a的自加是先执行后在自加,当此程序a自加的时候没有执行其他语句啊?????? ” 则是你没看到程序中的语句a++,b++它自加完了以后把值任然是赋值给a,b本身的,而不是赋值给其他变量例如c=a++;z=b++。如果是这样赋值给别的变量的话那么就很明确了c,z的值将和课本上说得一样都是自加以前的值 。也就是说这个程序当中最后printf输出的是a,b的值,但是a,b在自加过程中值都变化了,就是说相当于语句a=a++,b=b++.
我将你的程序进行了更改,你将两个程序都运行下然后再对照着看一下就明白为什么a,b的值最后是2和1了,程序如下
#include

main()

{

int x=1,y=0,a=0,b=0,c=0,z=0;

switch (x)

{case 1:

switch(y)

{

case 0:c=a++;break;

case 1:b++;break;

}

case 2: c=a++,z=b++;break;

case 3:a++,b++;

}

printf("c=%d,z=%d\n",c,z) ;

}

对于 ++i 和i++ 有什么区别?

简单而言: ++i在i 存储的值上增加一并向使用它的表达式“返回” 新的, 增加后的值; 而i++ 对i增加一, 但返回原来的是未增加的值。

语法:

switch(val)

{

case x:

//程序段1

break;

case y:

//程序段2

break;

case z:

//程序段3

break;

default:

//程序段4

}

首先,程序会用val的值与 x,y,z的值进行比较,如果等于其中某一个值,则程序跳转至该case执行程序,执行完后退出switch语句。例如等于x,则程序跳转到程序段2,然后退出switch。如果所有的case值都不相等,则执行default中的程序,例如上面的程序段4.

说明1:val的值应该为整数,case语句的个数可以很多,上面的x,y,z的值也是由你设定,但一定是一个常量

说明2:case语句里边的break别忘了,否则执行完该程序段后,会继续往下执行

执行过程:先计算并获得switch后面小括号里的表达式或变量值,然后将计算结果顺序与每个case后的常量比较。

当二者相等时,执行个case块中的代码,当遇到break时,就跳出switch选择结构,执行switch选择结构之后的代码。

如果任何一个case之后的常量与switch后的小括号中的值相等,则执行switch尾部的default块中代码。

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

一、用法分析如下:
1、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;  }2、只能针对基本数据类型使用switch,这些类型包括int、char等。对于其他类型,则必须使用if语句。case标签必须是常量表达式(constantExpression),如42或者"42"。如果需要在运行时计算case标签的值,必须使用if语句。case标签必须是惟一性的表达式;也就是说,不允许两个case具有相同的值。
二、C语言
1、C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
2、尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
3、二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
4、C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。

求教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);

  }

希望对你有帮助。

这个是多分支时用到的

如果问题是有多个互拆的条件时,那么用这个最好

和多个if-else if--else实现的功能相同

如输出学生成绩的abcde分段,90-100为a,80-89为b,以此类推

注意的地方

1、条件必须互拆

2、case空格 符合的条件 冒号 处理 break

如 case 1: add();break;

如果不用break,那么会执行下面的case项

3、有default项,是都没有case处理的时候的,可以没有

switch(a)

{

case 1:

break;

case 2:

break;

case 3:

break;

default:

}

不断判断是否符合各个case的值,如果符合,就执行后面的语句

switch(a)

{

case 1:

break;

case 2:

break;

case 3:

break;

default:

阅读更多 >>>  goto语句的作用,单片机C语言中goto可以这样用吗?

}

switch 是一个开关语句,和case配套使用, 和if else 判断语句差不多, switch 语句是用于多分支语句进行条件判断,比如:

i++;

switch (i)

{

case 1 : P1 = 0xFE; //i =1; 执行P1 = 0XFE;

breK; //执行完成后跳出

case 2 : P1 = 0xFD; //i =2; 执行P1 = 0XFD;

break;

case 3 : P1 = 0xFB; //i =3; 执行P1 = 0XFB;

break;

case 4 : P1 = 0xF7 //i =4; 执行P1 = 0X7E;

break;

..........................................................................

default: break; //如果i 不符合以上条件直接跳出不执行任何东西

}

建议你还是先把C语言看熟把,书上都写的很清楚。

switch语句怎么用?

1、case语句可以加括号运行多行语句。switch的具体用法,首先新建一个c语言的文件,写入基本的结构,引入头文件,新建main主函数,主函数中设置一个变量用来接收用户输出:
2、接着用swith语句制作多重选择,当输入的数满足条件是就输出打印结果,并用break终止程序。最后的default是都不满足条件时,执行的条件:
3、最后按下快捷键Crtl+S编译运行程序,输入一个数字就会打印出相应的语句:

c语言switch语句

特意找课本看了一下:
switch(表达式)
{
case常量表达式1: 语句1;
case常量表达式2: 语句2;

case常量表达式n: 语句n;
default : 语句n+1;
}
其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。 如表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
在switch语句中,“case 常量表达式”只相当于一个语句标号, 表达式的值和某标号相等则转向该标号执行,但不能在执行完该标号的语句后自动跳出整个switch 语句,所以出现了继续执行所有后面case语句的情况。 这是与前面介绍的if语句完全不同的,应特别注意。为了避免上述情况, C语言还提供了一种break语句,专用于跳出switch语句,break 语句只有关键字break,没有参数。在后面还将详细介绍。修改例题的程序,在每一case语句之后增加break 语句, 使每一次执行之后均可跳出switch语句,从而避免输出不应有的结果。
C语言中,switch语句的使用格式如下:
switch(表达式)
{
case 常量表达式1 : 语句1; break;
case 常量表达式2 : 语句2; break;
......
case 常量表达式n : 语句n; break;
default : 语句n+1;
}
举例如下:
int i=4, a=0;switch(i){ case 1 : a++; break; // 如果i=1,执行case 1 后面的语句,执行完后退出switch case 2 : a+=2; break; // 如果i=2,执行case 2 后面的语句,执行完后退出switch case 4 : a+=4; break; // 如果i=4,执行case 4 后面的语句,执行完后退出switch default : a=0; // 如果i不等于上面所以case中的值,执行default后面的语句,执行完后退出switch}
楼主好,楼上的哥们好!
楼上的两位哥们都是直接把x当整型处理的,楼主并没有说x是整型啊,对不对?
这是我的程序:
#include

main()

{

double

x,y;

int

a;

scanf("%lf",&x);

a=(int)x;

/*将x的值强制转换为整形,也就是截去小数点后面的,赋给a*/

switch(a)

{

case

-4:y=x-1;break;

case

-3:y=x-1;break;

case

-2:y=x-1;break;

case

-1:y=x-1;break;

/*********************

其实上面这一段可以写成这样

case

-4:

case

-3:

case

-2:

case

-1:

y=x-1;break;

简化程序

下边这段也同理....

***********************/

case

7:y=x+1;break;

case

6:y=x+1;break;

case

5:y=x+1;break;

case

4:y=x+1;break;

case

3:y=x+1;break;

case

2:y=x+1;break;

case

1:y=x+1;break;

case

0:y=x;break;

default:printf("Input

Error\n");goto

loop;

}

printf("x=%lf\ny=%lf\n",x,y);

loop:;

getch();

}

这样不管你输入是整数还是浮点数都行啦....

其实一楼的哥们的方法超好啊。如果把int

x,y改成double

x,y就完美了..(这好像不是个问题.....)

程序我测试过了,没发现问题。(饿只是说饿没有发现问题,谁发现的问题快点指正!!!)

====================================

lipbb说的很对,上面我写的程序确实有错误....懒得改了.....这是我想的另一个方法:

用switch嵌套,饿测试过了,没发现问题。(饿只是说饿没有发现问题,谁发现的问题快点指正!!!)

#include

main()

{

double

x,y;

printf("please

input

x\n");

scanf("%lf",&x);

switch(-5
<x&&x<0)
{

case

1:y=x-1;break;

case

0:

{

switch(x==0)

{

case

1:y=x;break;

case

0:

{

switch(0
<x&&x<8)
{

case

1:y=x+1;break;

case

0:printf("Input

Error\n");goto

loop;

}

}break;

}

}break;

}

printf("x=%lf\ny=%lf",x,y);

loop:;

getch();

}

楼主有不明白的地方可以给我留言。

先回答你第一个问题

首先 如果只有一条语句的话, a++; 和 ++a; 效果是一样的,都是a自加1

因为没别的语句, 先执行后自加和先自加后执行效果是一样的, 只有有别的

语句的时候效果才不一样,比如 x = a++ ;与 x= ++a; 就不一样了。

第二个问题

case 语句是一个入口, 只要匹配进入了入口, 就会执行后面的所有语句

而不会再去判断 后面的case,只有碰到了break才会跳出循环,比如说

你上面如果case2 后面没有break的话, 他还会执行case3, 反正是从

匹配的值的位置开始, 执行下面所有的语句而不再判断

试着回答一下,你参考一下.

swich(x),进入case 1后,switch(y),执行a++;再break,跳出.

注意,此时那个]后面没有break;所以就执行case 2;成立,a++,b++;跳出;

最终,a=2,b=1;

int x=1,y=0,a=0,b=0;

switch (x)

{case 1:

switch(y)

{

case 0:a++;break;

case 1:b++;break;

} 此处没有break;

case 2: a++,b++;break;

case 3:a++,b++;

}

printf("a=%d,b=%d\n",a,b)

执行case 2是因为在switch (x) 中x=1,所以执行case 1,然而case 1 这条语句没有break,所以switch (x)在执行了case 1之后将继续往下依次执行case语句,直到碰到break就跳出switch 循环。

阅读更多 >>>  mysql数据库查询语句大全,java mysql查询语句怎么写

对于“a的自加是先执行后在自加,当此程序a自加的时候没有执行其他语句啊?????? ” 则是你没看到程序中的语句a++,b++它自加完了以后把值任然是赋值给a,b本身的,而不是赋值给其他变量例如c=a++;z=b++。如果是这样赋值给别的变量的话那么就很明确了c,z的值将和课本上说得一样都是自加以前的值 。也就是说这个程序当中最后printf输出的是a,b的值,但是a,b在自加过程中值都变化了,就是说相当于语句a=a++,b=b++.

我将你的程序进行了更改,你将两个程序都运行下然后再对照着看一下就明白为什么a,b的值最后是2和1了,程序如下

#include

main()

{

int x=1,y=0,a=0,b=0,c=0,z=0;

switch (x)

{case 1:

switch(y)

{

case 0:c=a++;break;

case 1:b++;break;

}

case 2: c=a++,z=b++;break;

case 3:a++,b++;

}

printf("c=%d,z=%d\n",c,z) ;

}

对于 ++i 和i++ 有什么区别?

简单而言: ++i在i 存储的值上增加一并向使用它的表达式“返回” 新的, 增加后的值; 而i++ 对i增加一, 但返回原来的是未增加的值。

</x&&x<8)
</x&&x<0)

C语言:如何使用switch语句?编写图中的分段函数?

C语言使用switch语句,编写图中的分段函数:
#include

voidmain()

intx,y,flag;

printf("请输入x:");

scanf("%d",&x);

flag=x<0?-1:(x<10?1:2);

switch(flag)

case-1:y=x;break;

case1:y=2*x-1;break;

case2:y=3*x-1;

printf("y=%d\n",y);

简介

C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此,C语言可以编写系统软件。

网站数据信息

"c语言中switch语句怎么用,switchc语言的用法"浏览人数已经达到19次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:c语言中switch语句怎么用,switchc语言的用法的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!