内容正文:
编写说明:广西高等职业教育考试-电子与信息类《C语言程序设计》考点双析卷专辑,依据省教育厅《广西高等职业教育考试大纲与说明》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建“讲练结合”的学习闭环,特别适用于广西高等职业教育考试第一轮高考复习教学。
本专辑第20卷精准对标广西壮族自治区考纲,考试内容及范围【C语言程序设计】:
(三)选择结构程序设计:掌握 switch 语句的使用
广西高等职业教育考试 电子与信息类
《C语言程序设计》考点双析卷 第20卷
多分支语句 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.执行以下程序段的输出结果是( )
int x=1,a=0,b=0;
switch(x)
{case 0:b++;case 1:a++;case 2:a++;b++;}printf("a=%d,b=%d",a,b);
A.a=1,b=1 B.a=1,b=0 C.a=2,b=2 D.a=2,b=1
【答案】D
2.在C语言中,switch语句后一对圆括号中表达式的类型( )
switch(表达式){……}
A.可以是整型或字符型 B.只能是int型
C.只能是字符型 D.只能是整型或实型
【答案】A
3.以下有关于switch语句和break语句的描述中,正确的是( )
A.break只能用于switch语句
B.在switch语句中必须使用break语句
C.break语句是组成switch语句的一部分
D.在switch语句中,可以根据需要使用或不使用break语句
【答案】D
4.执行下列程序段的输出结果是( )
int a=0,b=0,c=0;
switch(c){case 0:b++;case 1:a++;case 2:a++;b++;}
printf("a=%d,b=%d
",a,b);
A.a=2,b=2 B.a=1,b=1 C.a=1.b=0 D.a=1,b=2
【答案】A
5.执行下列程序段的输出结果是( )
int a=0,i;;
for(i=1;i<10;i++)
{switch(i)
{case 0:case 3:a+=1;break;
case 1:case 2:a+=2;
default:a+=3;}
}printf("%d",a);
A.29 B.30 C.19 D.28
【答案】A
6.执行以下程序段的输出结果是( )
int i;for(i=1;i<=5;i++)
switch(i%5){case 0:printf("*"); break;
case 1:printf("#");break;
default:printf("-");
case 2:printf("$");}
A.*#-$ B.#$$$* C.#$-$-$* D.$-$-$*
【答案】C
7.执行以下程序段的输出结果是( )
main()
{enum name{zhao=1,qian,sun,li}man;
man=qian;
switch(man)
{case 0:printf("people
");break;
case 1:printf("man
");break;
case 2:printf("woman
");break;
default:printf("error!
");break;}getch();}
A.people B.man C.woman D.error!
【答案】C
8.以下代码的输出结果是( )
int num = 4;
switch (num) {
case 1: printf("A"); break;
case 4: printf("B");
default: printf("C");
}
A.B B.BC C.C D.无输出
【答案】B
9.以下关于C语言中switch语句的描述,正确的是( )
A.case后面的表达式可以是变量
B.default子句可以存在多个
C.switch的条件表达式可以是浮点类型
D.case后面的值必须是整型常量表达式
【答案】D
10.以下代码的输出结果是( )
int a = 10;
switch (a) {
default: printf("Default");
case 1: printf("1");
}
A.Default1 B.Default C.1 D.编译错误
【答案】A
11.关于 switch 语句,错误的是( )
A.switch 表达式可以是字符型 B.reak 用于跳出 switch
C.default 分支可以省略 D.bcase 后的常量可以是变量
【答案】D
12.以下哪个switch语句的格式是正确的( )
A.switch (a)
{
case 1: printf("One"); case 2: printf("Two");
}
B.switch (a)
{
case 1: { printf("One"); } case 2: { printf("Two"); }
}
C.switch(a)
{
case 1: printf("One"); break; case 2: printf("Two");
}
D.switch (a)
{
case 1: printf("One"); break; case 2: printf("Two"); break;
}
【答案】D
【详解】switch-case语句的标准语法当中,每个case后应当有break,除非我们希望执行下一个break。
13.执行以下程序段的运行结果是( )
main()
{int i;
for(i=0; i<3; i++)
switch(i)
{case 1:printf("%d",i);
case 2: printf("%d", i);
default : printf("%d", i);}getch();}
A.011122 B.120 C.012020 D.012
【答案】A
14.若有定义语句int a,b; double x; 则下列选项中没有错误的是( )
A.switch(x%2){case 0:a++;break;case 1:b++;break;default:a++;b++;}
B.switch((int)x/2.0){case 0:a++;break;case 1:b++;break; default:a++;b++;}
C.switch((int)x%2){case 0:a++;break;case 1:b++;break;
default:a++;b++;}
D.switch((int)(x)%2){case 0.0:a++;break;case 1.0:b++;break;
default:a++;b++;}
【答案】C
15.以下选项中与 if (a==1) a=b; else a++; 语句功能不同的switch 语句是( )
A.switch (a ){case :a=b;break;default:a++;}
B.switch (a==1){case 0:a=b;break;case 1:a++;}
C.switch (a){default:a++;break;case 1:a=b;}
D.switch (a==1){case 1:a=b;break;case 0:a++;}
【答案】B
16.在C语言的switch语句中,case后( )
A.只能为常量
B.只能为常量或常量表达式
C.可以为常量及表达式或有确定值的变量及表达式
D.可以为任何变量或常量
【答案】B
17.下列语句中,属于多分支语句的是( )
A.if语句 B.switch语句 C.do while语句 D.for语句
【答案】B
18.若inti=10;,执行下列程序后,变量i的正确结果是( )
switch(i)
{case 9:i+=1;
case 10:i+=1;
case 11:i+=1;
default:i+=1;
}
A.10 B.11 C.12 D.13
【答案】D
19.运行以下程序后,如果从键盘上输入 china#〈回车〉,则输出结果是( )
#include <stdio.h>
int main() {
int v1 = 0, v2 = 0;
char ch;
while ((ch = getchar( )) != '#')
switch (ch) {
case 'a':
case 'h':
case 'o':
v2++;
default:
v1++;
}
printf("%d,%d
", v1, v2);
}
A.2,0 B.5,0 C.5,5 D.5, 2
【答案】D
20.以下程序的运行结果是( )
#include <stdio.h>
int main() {
int k = 5, n = 0;
do {
switch (k) {
default:
break;
case 1:
n += k;
case 2:
case 3:
n += k;
}
k --;
} while (k > 0);
printf("%d
", n);
}
A.5 B.7 C.6 D.4
【答案】B
二、判断题判断题(本大题共5小题,每题2分,共10分)
21.switch 语句的表达式可以是字符串。( )
【答案】错误
22.switch语句中,default子句必须放在最后,否则会导致语法错误。( )
【答案】错误
23.case 后的常量值可以重复。( )
【答案】错误
24.break 语句在 switch 语句中的作用是防止代码 “穿透” 到下一个 case 语句。( )
【答案】正确
25.switch 语句中的 case 标签后面必须跟常量表达式。( )
【答案】正确
三、程序设计题(本大题共3小题,每题10分,共30分)
26.输入一个年月日,计算出该日期是该年的第几天
#include<stdio.h>
main(){
int year,month,day,days;
/*******space*******/
/*******space*******/
}
【答案】scanf(“%d-%d-%d”,&year,&month,&day);
switch(month){
case 1:days=0;break;
case 2:days=31;break;
case 3:days=31+28;break;
case 4:days=31+28+31;break;
case 5:days=31+28+31+30;break;
case 6:days=31+28+31+30+31;break;
case 7:days=31+28+31+30+31+30;break;
case 8:days=31+28+31+30+31+30+31;break;
case 9:days=31+28+31+30+31+30+31+31;break;
case 10:days=31+28+31+30+31+30+31+31+30;break;
case 11:days=31+28+31+30+31+30+31+31+30+31;break;
case 12:days=31+28+31+30+31+30+31+31+30+31+30;break;
}
days=days+day;
if(year%4==0 && month>2) days=days+1;
printf(“%d年-%d月-%d日是该年的第%d天”,year,month,day,days);
27.有两个降序排列的集合A和B,A中无重复元素,B中也无重复元素,求集合B-A的差集(即:这些元素属于集合B但不属于集合A),存放于数组c中,并输出
#include<stdio.h>
void main()
{
int a[3],b[5],c[5];
int t=0,i,j=0;
printf("请输入3个整数:
");
for(i=0;i<3;i++) scanf("%d",&a[i]);
printf("请输入5个整数:
");
for(i=0;i<5;i++){
scanf("%d",&b[i]);
}
i=0;
/*******space*******/
/*******space*******/
while(j<5){
c[t++]=b[j++];
}
printf("结果为:
");
for(i=0;i<t;i++){
printf("%d ",c[i]);
}
}
【答案】while(i<3 &&j<5)
{
if(a[i]<b[j])c[t++]=b[j++];
else if(a[i]>b[j]) i++;
else
{
i++; j++;
}
}
28.该程序实现的功能是:已知数列1,3,6,10,15,…… ,计算该数列的第n项
#include<stdio.h>
#include<math.h>
double fun(int n)
{
double u=0.0;
/*******space*******/
/*******space*******/
}
void main()
{
int n=0;
double u=0.0;
scanf("%d",&n);
u=fun(n);
printf("该数的第n项为:%f",u);
}
【答案】if(n==1)
u=1.0;
else
u=fun(n-1)+n;
return u;
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明:广西高等职业教育考试-电子与信息类《C语言程序设计》考点双析卷专辑,依据省教育厅《广西高等职业教育考试大纲与说明》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建“讲练结合”的学习闭环,特别适用于广西高等职业教育考试第一轮高考复习教学。
本专辑第20卷精准对标广西壮族自治区考纲,考试内容及范围【C语言程序设计】:
(三)选择结构程序设计:掌握 switch 语句的使用
广西高等职业教育考试 电子与信息类
《C语言程序设计》考点双析卷 第20卷
多分支语句 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.执行以下程序段的输出结果是( )
int x=1,a=0,b=0;
switch(x)
{case 0:b++;case 1:a++;case 2:a++;b++;}printf("a=%d,b=%d",a,b);
A.a=1,b=1 B.a=1,b=0 C.a=2,b=2 D.a=2,b=1
2.在C语言中,switch语句后一对圆括号中表达式的类型( )
switch(表达式){……}
A.可以是整型或字符型 B.只能是int型
C.只能是字符型 D.只能是整型或实型
3.以下有关于switch语句和break语句的描述中,正确的是( )
A.break只能用于switch语句
B.在switch语句中必须使用break语句
C.break语句是组成switch语句的一部分
D.在switch语句中,可以根据需要使用或不使用break语句
4.执行下列程序段的输出结果是( )
int a=0,b=0,c=0;
switch(c){case 0:b++;case 1:a++;case 2:a++;b++;}
printf("a=%d,b=%d
",a,b);
A.a=2,b=2 B.a=1,b=1 C.a=1.b=0 D.a=1,b=2
5.执行下列程序段的输出结果是( )
int a=0,i;;
for(i=1;i<10;i++)
{switch(i)
{case 0:case 3:a+=1;break;
case 1:case 2:a+=2;
default:a+=3;}
}printf("%d",a);
A.29 B.30 C.19 D.28
6.执行以下程序段的输出结果是( )
int i;for(i=1;i<=5;i++)
switch(i%5){case 0:printf("*"); break;
case 1:printf("#");break;
default:printf("-");
case 2:printf("$");}
A.*#-$ B.#$$$* C.#$-$-$* D.$-$-$*
7.执行以下程序段的输出结果是( )
main()
{enum name{zhao=1,qian,sun,li}man;
man=qian;
switch(man)
{case 0:printf("people
");break;
case 1:printf("man
");break;
case 2:printf("woman
");break;
default:printf("error!
");break;}getch();}
A.people B.man C.woman D.error!
8.以下代码的输出结果是( )
int num = 4;
switch (num) {
case 1: printf("A"); break;
case 4: printf("B");
default: printf("C");
}
A.B B.BC C.C D.无输出
9.以下关于C语言中switch语句的描述,正确的是( )
A.case后面的表达式可以是变量
B.default子句可以存在多个
C.switch的条件表达式可以是浮点类型
D.case后面的值必须是整型常量表达式
10.以下代码的输出结果是( )
int a = 10;
switch (a) {
default: printf("Default");
case 1: printf("1");
}
A.Default1 B.Default C.1 D.编译错误
11.关于 switch 语句,错误的是( )
A.switch 表达式可以是字符型 B.reak 用于跳出 switch
C.default 分支可以省略 D.bcase 后的常量可以是变量
12.以下哪个switch语句的格式是正确的( )
A.switch (a)
{
case 1: printf("One"); case 2: printf("Two");
}
B.switch (a)
{
case 1: { printf("One"); } case 2: { printf("Two"); }
}
C.switch(a)
{
case 1: printf("One"); break; case 2: printf("Two");
}
D.switch (a)
{
case 1: printf("One"); break; case 2: printf("Two"); break;
}
13.执行以下程序段的运行结果是( )
main()
{int i;
for(i=0; i<3; i++)
switch(i)
{case 1:printf("%d",i);
case 2: printf("%d", i);
default : printf("%d", i);}getch();}
A.011122 B.120 C.012020 D.012
14.若有定义语句int a,b; double x; 则下列选项中没有错误的是( )
A.switch(x%2){case 0:a++;break;case 1:b++;break;default:a++;b++;}
B.switch((int)x/2.0){case 0:a++;break;case 1:b++;break; default:a++;b++;}
C.switch((int)x%2){case 0:a++;break;case 1:b++;break;
default:a++;b++;}
D.switch((int)(x)%2){case 0.0:a++;break;case 1.0:b++;break;
default:a++;b++;}
15.以下选项中与 if (a==1) a=b; else a++; 语句功能不同的switch 语句是( )
A.switch (a ){case :a=b;break;default:a++;}
B.switch (a==1){case 0:a=b;break;case 1:a++;}
C.switch (a){default:a++;break;case 1:a=b;}
D.switch (a==1){case 1:a=b;break;case 0:a++;}
16.在C语言的switch语句中,case后( )
A.只能为常量
B.只能为常量或常量表达式
C.可以为常量及表达式或有确定值的变量及表达式
D.可以为任何变量或常量
17.下列语句中,属于多分支语句的是( )
A.if语句 B.switch语句 C.do while语句 D.for语句
18.若inti=10;,执行下列程序后,变量i的正确结果是( )
switch(i)
{case 9:i+=1;
case 10:i+=1;
case 11:i+=1;
default:i+=1;
}
A.10 B.11 C.12 D.13
19.运行以下程序后,如果从键盘上输入 china#〈回车〉,则输出结果是( )
#include <stdio.h>
int main() {
int v1 = 0, v2 = 0;
char ch;
while ((ch = getchar( )) != '#')
switch (ch) {
case 'a':
case 'h':
case 'o':
v2++;
default:
v1++;
}
printf("%d,%d
", v1, v2);
}
A.2,0 B.5,0 C.5,5 D.5, 2
20.以下程序的运行结果是( )
#include <stdio.h>
int main() {
int k = 5, n = 0;
do {
switch (k) {
default:
break;
case 1:
n += k;
case 2:
case 3:
n += k;
}
k --;
} while (k > 0);
printf("%d
", n);
}
A.5 B.7 C.6 D.4
二、判断题判断题(本大题共5小题,每题2分,共10分)
21.switch 语句的表达式可以是字符串。( )
22.switch语句中,default子句必须放在最后,否则会导致语法错误。( )
23.case 后的常量值可以重复。( )
24.break 语句在 switch 语句中的作用是防止代码 “穿透” 到下一个 case 语句。( )
25.switch 语句中的 case 标签后面必须跟常量表达式。( )
三、程序设计题(本大题共3小题,每题10分,共30分)
26.输入一个年月日,计算出该日期是该年的第几天
#include<stdio.h>
main(){
int year,month,day,days;
/*******space*******/
/*******space*******/
}
27.有两个降序排列的集合A和B,A中无重复元素,B中也无重复元素,求集合B-A的差集(即:这些元素属于集合B但不属于集合A),存放于数组c中,并输出
#include<stdio.h>
void main()
{
int a[3],b[5],c[5];
int t=0,i,j=0;
printf("请输入3个整数:
");
for(i=0;i<3;i++) scanf("%d",&a[i]);
printf("请输入5个整数:
");
for(i=0;i<5;i++){
scanf("%d",&b[i]);
}
i=0;
/*******space*******/
/*******space*******/
while(j<5){
c[t++]=b[j++];
}
printf("结果为:
");
for(i=0;i<t;i++){
printf("%d ",c[i]);
}
}
28.该程序实现的功能是:已知数列1,3,6,10,15,…… ,计算该数列的第n项
#include<stdio.h>
#include<math.h>
double fun(int n)
{
double u=0.0;
/*******space*******/
/*******space*******/
}
void main()
{
int n=0;
double u=0.0;
scanf("%d",&n);
u=fun(n);
printf("该数的第n项为:%f",u);
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$