C语言学习精讲:分程序与switch语句解析

需积分: 3 3 下载量 141 浏览量 更新于2024-10-09 收藏 96KB DOC 举报
“坚实c语言基础之学习c语言百问” 在C语言中,分程序(复合语句)是一个重要的概念,它由一对大括号{}界定,包含了C语言中的一个或多个语句序列。分程序可以理解为局部的程序块,通常在函数体内或者控制结构(如if、for、while等)中使用。例如,每个C函数的主体就是一个分程序,它定义了函数的行为。在分程序内,可以声明局部变量,这些变量只在当前分程序的作用域内有效,不会影响到外部同名变量。当在分程序内部声明同名变量时,内部的变量会遮蔽外部的变量,这就是作用域规则的一个体现。 例如在提供的代码中,全局变量`int test=5;`被主函数内的局部变量`int test=10;`遮蔽,所以在`main()`函数内部,`test`的值为10。当进入大括号内的分程序时,又声明了一个新的局部变量`int test=15;`,这个变量仅在大括号内的代码段可见,所以`printf()`语句打印的是15。一旦离开这个分程序,内部声明的`test`变量就会消失,外部的`test`变量恢复其作用。 另一个关键知识点是`switch`语句。`switch`语句常用于多分支选择,特别是在处理基于同一数值变量的不同情况时,相比`if...else if...else`的嵌套结构,`switch`语句的可读性和维护性更强。`switch`语句的条件表达式必须是整型、字符型或枚举类型的变量,然后根据这个变量的值匹配`case`标签,执行相应的代码块。每个`case`后的值必须是常量表达式,且所有`case`共享同一变量,而不是多个独立变量。 例如,考虑一个根据学生成绩等级打印分数范围的例子,用`if...else if...else`结构编写如下: ```c char grade; if(grade=='A') printf("85~100\n"); else if(grade=='B') printf("70~84\n"); else if(grade=='C') printf("60~69\n"); else if(grade=='D') printf("<60\n"); else printf("error\n"); ``` 同样的逻辑,用`switch`语句表示则更为简洁明了: ```c switch(grade) { case 'A': printf("85~100\n"); break; case 'B': printf("70~84\n"); break; case 'C': printf("60~69\n"); break; case 'D': printf("<60\n"); break; default: printf("error\n"); } ``` 这里,`switch`语句的条件是`grade`变量,每个`case`后的值对应一个等级,匹配成功后执行相应的`printf`,然后通过`break`跳出整个`switch`结构。如果没有任何`case`匹配,则执行`default`后面的代码。 总结来说,C语言中的分程序和`switch`语句是编程中常用的结构,它们分别用于组织代码块和实现多分支选择,理解并熟练运用这两个概念对于编写清晰、高效的C程序至关重要。在实际编程中,应根据具体情况灵活选择使用`if...else`还是`switch`,以达到最佳的代码质量和可读性。