c语言选择结构问题求解


 #include 
 int main() 
 { 
int i;
for (i=0;i<3;i++){
 switch(i) {
 case 0: printf("%d ",i);
 case 2: printf("%d ",i);
default:printf("%d ",i);
 }
 }
 return 0;
 }

为什么结果是0 0 0 1 2 2
而不是0 1 2捏

因为case语句没有break。当没有break跳出switch 时,程序会继续向下执行后面的case语句
所以当i=0时,满足case 0 ,在输出一个0的同时,还会继续乡下执行case 2和default,又输出两次0,所以是3个0,其它雷同

因为你case后面没有加break

因为你case后面没有加break,比如i=0进入switch判断,case0成立输出i,因为你没有加break会继续执行下面的语句,case2也会输出同理default后面的语句也会执行输出i,所以会输出三个0.
如果你想输出0 1 2,可以加上break试一下

 #include <stdio.h>
 int main() 
 { 
    int i;
    for (i=0;i<3;i++){
         switch(i) {
             case 0: printf("%d ",i);
                 break;
             case 2: printf("%d ",i);
                 break;
            default:printf("%d ",i);
                break;
         }
     }
     return 0;
 }