C语言 switch...case问题

#include"stdio.h" void main() { int x; for(x=5;x<12;x+=2) { switch(x-1) { case 4: printf("%d\n",x); case 7: printf("%d\n",2*x+1); case 10: printf("%d\n",x); break; default: printf("default\n"); } } } 求解释每个句子的意思

#include"stdio.h"   /**第一句话引入库函数stdio 即standard input output的                      *缩写 标准输入输出 所谓的库函数 即别人已写好 你直接可                       *以拿来用的函数 假若此处你没写这句 后面的 printf()                       *函数和scanf函数就不能用了
                      */
 void main()  /*主函数声明 所有程序的入口有且仅有一个 此处无返回值也可有*/

 int x;       /*定义变量x 为int整形*/  
for(x=5;x<12;x+=2) /*for循环 x初始值为5 循环条件X<12 每循环一次X加个二*/ 
 {  
  switch(x-1)  /**switch语句先计算括号里的值然后和下面的case后面的值左匹配 
                *然后执行下面的语句 例如第一次x-1=4 即执行printf("%d\n",x)                * 这句话 注意switch语句存在穿透问题 如果语句后面没写 break                 *语句则一直执行后面的语句而不再进行值得匹配 而是一直将后面的                  *语句执行下去 知道遇到break或语句结束 所以此处会一直执行到
                *case 10:后面的语句然后跳出switch语句 
                */   
  {  
   case 4:                 /*如果x=4则执行后面的语句*/ 
     printf("%d\n",x);     /*输出X的值 此处语句会穿透 因为后面没写break*/ 
   case 7:                 /*如果x=7则执行后面的语句*/ 
     printf("%d\n",2*x+1); /*输出2*x+1的值 同样穿透 因为后面没写break*/
   case 10:                  /*如果x=10则执行后面的语句*/ 
     printf("%d\n",x);       /*输出X的值 */ 
     break;                  /*跳出switch语句*/   
   default:   /*如果X没有任何case后面的值和她匹配则执行default后的语句* /
     printf("default\n");    /*输出X的值*/  
  }  
 }  
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-13
#include"stdio.h" //建议改成#include<stdio.h>
void main()
{
int x;
for(x=5;x<12;x+=2)//for循环,x初始值5,每次加2,大于12退出
{
switch(x-1)//判断x-1的值
{
case 4://如果x-1为4,打印x的值
printf("%d\n",x);
case 7://如果x-1为7,打印x乘2加1的值
printf("%d\n",2*x+1);
case 10://如果x-1为10,打印x的值
printf("%d\n",x);
break;//执行完以上三句后跳出
default://如果x-1不等于以上集中情况,打印
printf("default\n");
}
}
}

执行结果会是:
5
11
5
default
default
11追问

我不明白执行结果为什么会是这样。 第一个5还好理解,第二个11那x还不就是5?第三个也是5.在之前不是要判断x-1等于7 和等于10吗? 后面的default和11是哪里来的?

第2个回答  2013-11-13
#include"stdio.h"    //头文件 
void main()
{
 int x;      //定义一个变量x 
 for (x = 5; x < 12; x += 2)   //让x从5到11变化 步长为2 
 {
  switch (x - 1)    //判断x-1的值 
  {
  case 4:                //如果x-1的值为4就执行下面的话 
   printf("%d\n", x);     //这边没有加break,就会顺序执行下面语句
  case 7:               //如果x-1的值为7就执行下面的话 
   printf("%d\n", 2*x + 1);  //这边没有加break,就会顺序执行下面语句 
  case 10:            //如果x-1的值为10就执行下面的话 
   printf("%d\n", x);
   break;
  default:           //其他情况就执行下面的话 
   printf("default\n");
  }
 }
}

C语言switch case语句详解
switch case 语句旨在简化多分支逻辑,其基本格式如下:1. 首先计算表达式的值。2. 比较表达式的值与每个 case 后的整数(或整数表达式)是否相等。如果相等,则执行相应 case 后的语句块。3. 如果当前 case 不相等,跳过其后语句,继续比较下一个 case。4. 若所有 case 都不匹配,执行 default 后...

C语言 switch...case问题
x) * 这句话 注意switch语句存在穿透问题 如果语句后面没写 break *语句则一直执行后面的语句而不再进行值得匹配 而是一直将后面的 *语句执行下去 知道遇到break或语句结束 所以此处会一直执行到 *case 10:后面的语句然后跳出switch语句 *\/ { case 4: \/*如果x=4则执行后面...

C语言switch case语句详解
C语言中的switch case语句在处理多个分支时,相较于if else,其优势在于结构清晰且避免了配对错误。当需要根据输入整数输出对应英文星期几时,如:输入整数3,输出结果为"Wednesday";输入4,输出"Thursday",这时就非常适合使用switch语句。其基本结构为:switch(表达式){ case 整型数值1: 语句 1; case ...

C语言中switch case的问题
switch语句的格式为:switch(条件)语句 其中,条件的类型可以是整数类型,枚举类型,或者类类型(但该类需要有单一的转换到整数类型或(可以是字符类型,但不能是浮点类型、字符串、指针类型等),语句部分不一定非得是一条复合语句。

c语言中 switch case
在C语言中,switch语句是一种重要的控制流程工具,它根据给定的常量值来决定执行哪个代码块。当程序遇到switch结构时,会检查括号内的表达式的值,并将其与每个case标签中的值进行比较。例如:当程序遇到 switch(需要判断的常量值)时,如果这个值匹配到某个case标签,比如 case 1:程序就会执行紧跟其后的...

C语言中switch case语句的问题
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...

C语言switch...case语句的问题
include <stdio.h> void main(void){ int month;printf("Please input a month\\n");scanf("%d",&month);if(month>12)printf("You input a wrong month!\\n ");switch (month){ case 12:case 1:case 2:printf("Winter");break;case 3:case 4:case 5:printf("Spring\\n");break;case...

c语言中switch用法的问题
其次,您在switch语句中的`case`标签存在拼写错误和语法错误。正确的语法是使用大括号`{}`来定义case块,并且case后面的表达式(这里是整型常量)应直接跟在冒号`:`后面,无需在`case`后面加入空格。正确的代码应该如下所示:c include int main() { int a;printf("Enter one number: ");scanf("...

C语言的switch语句中case后()
一、switch是另外一种选择结构的语句,用来代替简单的、拥有多个分支的if else 语句,基本格式如下:switch(表达式){case 整型数值1: 语句 1;case 整型数值2: 语句 2;...case 整型数值n: 语句 n;default: 语句 n+1;} 二、它的执行过程是:1、首先计算“表达式”的值,假设为 m。2、 从第一...

求问这道关于Switch语句的c语言的题
这是因为这个switch...case句块的执行顺序是这样的,一开始k=8,在case从句中没有匹配的,所以它会执行defult句块中的内容,因为没有break语句来中断,所以在那之后会继续往下执行case10,case11句块中的内容,直到触底退出,因为这个过程共有3个k+=1语句,所以k被加了3次1,这样k的值就从8变成了...

相似回答