关于C语言switch语句问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于C语言switch语句问题相关的知识,希望对你有一定的参考价值。

int i=3;

switch(i%3)
case 0:printf("0");
case 1:printf("1");
case 2:printf("2");

为什么输出是012 ,而不是0?

int i=3;

   switch(i%3)
   
     case 0:
            printf("0"); //如果不加break程序会一直向下执行,知道break才跳出
            break;
     case 1:
            printf("1");
            break;
     case 2:
            printf("2");
            break
   

参考技术A 由于C语言的switch语句实质上是一种”基于计算的跳转“,当值计算出来后,它会跳转到相应的分支标号处,执行该处语句,由于分支标号只是switch结构的内部标记,程序控制会忽略下一分支标号,所以需要加上break语句,因为break语句的作用不太规范地说就是:“跳出包含我的结构,执行这个结构后的第一个语句”。
当然,您也可以把"case0:printf("0");"放到分支表的最后一句,而不用break,但最好还是使用break语句为好。
其实这个问题《C语言程序设计现代方法》解释得更清楚,我也是照它意思理解的。
参考技术B int i=3;
 
   switch(i%3)
   
     case 0:
            printf("0"); //如果不加break程序会一直向下执行,知道break才跳出
            break;
     case 1:
            printf("1");
            break;
     case 2:
            printf("2");
            break;
   

上面的朋友少加了一个分号啊,说的是对的,遇到break才跳出

参考技术C 没加break,这种情况下顺序往下执行,直到遇见break。 参考技术D 因为你每个case后面都没有跟break跳转语句,要加上这条语句才能不执行其他case,还有就是最好加上一句default这样的话程序比较完整

C语言循环问题

对下面这一段看不太懂,求解释
int sum=1000;
while(sum)

switch(sign)

case 'a':
case 'A':arrive(&st1,&p,a);break;
case 'b':
case 'B':leave(&st1,&st2,&p,a);break;
case 'c':
case 'C':exit(OVERFLOW);break;

printf("\n请输入A/B/C 和 车牌号:");
scanf("%c %d",&sign,&a.car_num);
getchar();
sum--;

参考技术A 这是一个循环,根据sign值来看,要循环1000次
switch(sign)



提示你输入选择的字母和车牌号:
printf("\n请输入A/B/C 和 车牌号:");
scanf("%c %d",&sign,&a.car_num);

根据你输入的内容,做出相应的处理反应:
switch(sign)

case 'a':
case 'A':arrive(&st1,&p,a);break;
case 'b':
case 'B':leave(&st1,&st2,&p,a);break;
case 'c':
case 'C':exit(OVERFLOW);break;
参考技术B 嵌套循环
外层循环是:
while(sum)
sum--;

直到sum=0为止,跳出循环
内层循环:
switch(sign)
......
当scanf("%c %d",&sign,&a.car_num); //输入内容
getchar(); //获取输入的字符
输入的sign值为a或A时,执行arrive(&st1,&p,a);break; 这两句语句
输入的sign值为b或B时,执行leave(&st1,&st2,&p,a);break; 这两句语句
输入的sign值为c或C时,执行exit(OVERFLOW);break; 这两句语句本回答被提问者采纳
参考技术C 应该是个汽车监控系统吧,输入a,车牌号1代表车牌号1的车来了,输入b,车牌号2代表车牌号2的车走了,输入c,车牌号表示超载了,就是堵车了.记录1000次 参考技术D 对循环部分可以抽出来
int sum = 1000;
while(sum)

sum--;


意思就是sum是循环次数,每次循环减一,直到sum为0 为止
一共循环了1000次
第5个回答  2013-06-27 这上一人循环嵌套语句,

以上是关于关于C语言switch语句问题的主要内容,如果未能解决你的问题,请参考以下文章

关于switch case语句的问题

C语言switch语句问题(初学)

c语言中switch可用啥语句替换

C语言switch语句的理解

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

C语言 回滚技术 switch case