文章教程

全国计算机等级考试二级C语言5.4switch语句

8/22/2020 10:24:52 PM 人评论 次浏览

5.4 switch语句

考点6 switch语句

真考链接

考点6 中的 switch 语句是在选择题和操作题中经常考核的知识点, switch方法在程序中实现选择结构有其独特的优点,而且容易阅读。

该知识点在选择题中的考核概率为80%。需要重点记忆和理解。

switch语句是C语言提供的多分支选择语句,用来实现多分支选择结构。它的一般形式如下:

switch(表达式)

case常量表达式1:语句1

case常量表达式2:语句2…

case常量表达式n:语句n

default:语句n+1

}

说明:

(1)switch是关键字,switch后面用花括号括起来的部分是switch语句体。

(2)switch后面括号内的“表达式”,可以是C语言中任意合法表达式,但表达式两侧的括号不能省略。

(3)case也是关键字,与其后面的常量表达式合称case语句标号,常量表达式的类型必须与switch后面的表达式的类型相匹配,且各case语句标号的值各不相同,不能重复。

(4)default也是关键字,起标号的作用,代表除了以上所有case标号之外的那些标号,default标号可以出现在语句体中任何标号位置上,当然,也可以没有。

(5)case语句标号后的语句1、语句2等,可以是一条语句,也可以是若干条语句。

真题精选

【例1】以下程序的运行结果是(   )。

#include <stdio.h>

main()

{ int num = 4;

switch(num)

{ case 0:printf("0");break;

case 1:printf("1");break;

case 2:printf("2");break;

default:printf("-1");break;

A.-1    B.0    C.1    D.2

【答案】 A

【解析】该题目考查switch语句。因为num不满足前3个case,所以进入default分支,输出-1。

【例2】有以下程序

#include <stdio.h>

main()

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

switch(y)

{ case 1:

switch(y)

case 0:a++;break;

case 1:b++;break;

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

case 3:a++;b++;

printf("% d,% d",a,b);

程序的运行结果是(  )。

A.1,0    B.2,2    C.1,1    D.2,1

【答案】 D

【解析】本题考查switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号的作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行外部的switch结构的case2分支。最后a和b的值分别为2和1。故本题答案为D。

【例3】函数fun()的功能是:统计长整数n的各位上出现数字1、2、3的次数,并用外部(全局)变量c1、c2、c3返回主函数。

例如,当n=123114350时,结果应该为:c1=3 c2=1 c3=2。

注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的标号处填入所编写的若干表达式或语句。

试题程序

#include <stdio.h>

int c1,c2,c3;

void fun(long n)

{ c1=c2=c3=0;

while(n)

{ switch(【1】)

{ case 1:c1++;【2】;

case 2:c2++;【3】;

case 3:c3++;

n/=10;

main()

{ long n=123114350L;

fun(n);

printf("\nThe result:\n");

printf("n=% id cl=% d c2=% d c3=% d

\n",n,c1,c2,c3);

【答案】(1)n%10 (2)break (3)break

【解析】本题考查switch语句,注意该语句的一般形式;如何提取数值n某一位上的数;break语句的使用

标号(1):要统计长整数n的各位上出现数字1、2、3的次数,就需要判断各位上的数是多少。通过n除以10求余,可得到个位上的数,所以填入n%10。

标号(2)和标号(3):switch语句是多分支选择语句,在每个分支中要加入break,不然会依次执行后面的分支。

continue语句的作用是结束当前分支的运行,而break语句的作用是结束整个switch语句的运行。

教程类别