内容正文:
编写说明:重庆市高等职业教育分类考试专业综合理论测试-计算机类《C语言程序设计》考点双析卷专辑,依据省教育厅《重庆市高等职业教育分类考试专业综合理论测试计算机类考试说明》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建“讲练结合”的学习闭环,特别适用于重庆市高等职业教育分类考试第一轮高考复习教学。
本专辑第18卷精准对标重庆市考纲,考试内容及范围【C语言程序设计知识】:
(三)分支结构程序设计:多分支语句
重庆市高等职业教育分类考试 计算机类
《C语言程序设计》考点双析卷 第18卷
多分支语句 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题2分,共40分)
1.下列程序的执行结果是( )
main()
{ int a=4,m=0;
switch(a%2==0)
{ case 0:m++;
case l:m++;break;
case 2:m++;}
printf(“%d”,m);}
A.1 B.2 C.3 D.0
【答案】A
2.若有定义 float xtint a,b;,则下列四段代码中合法的一段是( )
A.switch(x)
{ case 0: printf(“**”);
case l: printf(“++”);}
B.switch(a)
{ case 0:printf(“**”);
case l:printf(“++”);}
C.switch(a)
{ case l.0:printf(“**”);
case 2.0:printf(“++”);}
D.switch(x)
{ case l:printf(“**”);
case 2+3:printf(“++”);}
【答案】B
3.以下程序段的运行结果是( )
int i;
for(i=0ni<=3;i++)
switch(i)
{case l:printf("%d",i); break;
case 2:printf("%d",i):break:
default:printf("%d",++i);}
A.012 B.023 C.123 D.124
【答案】D
4.执行下列程序段时输入:A<回车>后的输出结果是( )
char ch;scanf("%c",&ch);
switch(ch%2)
{case 0:printf("偶数");break;
case 1:printf("奇数");break;
default:printf("error");}
A.偶数 B.奇数 C.error D.无输出
【答案】B
5.执行以下程序段的输出结果是( )
int x=0,y=2,z=3;
switch(x+1)
{case 1:switch(y==2)
{case 1:printf("*");break;
case 2:printf("%");break;}
case 2:switch(z)
{case 1:printf("$");break;
case 2:printf("*");break;
default:printf("#");}}
A.*# B.*$* C.*%$*# D.*
【答案】A
6.执行以下程序段时输入:H<回车>,输出结果是( )
char ch;ch=getchar();
switch(ch)
{case 'H':printf("%s","Hello! ");
case 'G':printf("%s","Good morning! ");break;
default:printf("%s","Bye Bye!");}
A.Hello! B.Hello! Good morning!
C.Hello! Good morning! Bye Bye! D.Good morning! Bye Bye!
【答案】B
7.执行下列程序段时输入:A<回车>,输出结果是( )
char a;a=getchar();
switch(++a)
{case 65:printf("%c",'A');
case 66:printf("%d",'A');break;
default:printf("%s","other");}
A.65 B.A C.66 D.B
【答案】A
8.以下程序段的输出结果是( )
int a=60,b=40,c=50,d;d=a>30?b:c;
switch(d)
{case 30:printf("%d",a);case 40:printf("%d",b);
case 50:printf("%d",c);default:printf("error");}
A.605040 B.50error C.40error D.4050error
【答案】D
9.以下程序的运行结果是( )
#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
10.以下代码的输出是( )
int x = 2;
switch (x << 1) { // x左移1位(即乘以2)
case 2: printf("A"); break;
case 4: printf("B"); break;
default: printf("C");
}
A.A B.B C.C D.编译错误
【答案】B
11.以下代码的输出是( )
int x = 4;
switch (x % 3) {
case 1: x += 1;
case 2: x += 2;
default: x += 3;
}
printf("%d", x);
A.4 B.6 C.9 D.10
【答案】D
12.以下代码的输出是( )
int x = 2;
switch (x) {
case 1: printf("A");
case 2: printf("B");
case 3: printf("C");
default: printf("D");
}
A.B B.BC C.BCD D.D
【答案】C
13.下列语句中说法正确的是( )
A.Switch后表达式的类型可以和case后表达式或常量类型不一致。
B.case后可以是任何类型表达式。
C.case语句后面必须要有break。
D.不同的case可以共用一个语句组。
【答案】D
【详解】A选项A.Switch后表达式的类型可以和case后表达式或常量类型要一致。B选项case后只能是整型、字符型或者枚举型。C选项case语句后面可以有break。
14.若有以下定义int a,b;float c;char d;变量均正确赋值,下列语句中,语法正确的是( )
A.switch a+b
{ case 1: a++;
case 2:b++;
case 3:d++; }
B.switch (a+1)
{ case a: a++;
case b:b++;
case d:d++; }
C.switch (d)
{ case ‘C’: a++;
case ‘B’:b++;
case ‘c’:a++;b++; }
D.switch (a+b)
{ case ‘A’: a++;
case ‘B’:b++;
case ‘C’:d++; }
【答案】C
【详解】A选项中,switch后表达式没有加括号;B选项中,case后面不能是变量;D选项中,switch表达式的数据类型要和case后面常量的数据类型保持一致。故选C。
15.假定等级和分数有以下对应关系:
等级: A 分数: 85~100
等级: B 分数: 60~84
等级: C 分数: 60 以下
对于等级 grade 输出相应的分数区间, 能够完成该功能的程序段是( )
A.switch (grade)
{
case 'A':printf("85--100
");
case 'B':printf("60--84
");
case 'C':printf("60 以下
");
default:printf("等级错误!
");
}
B.switch (grade)
{
case 'A':printf("85--100
");break;
case 'B':printf("60--84
");
case 'C':printf("60 以下
");
default:printf(" 等级错误!
");
}
C.switch (grade)
{
case 'A':printf("85--100
");break;
case 'B':printf("60--84
");break;
case 'C':printf("60 以下
");
default:printf("等级错误!
");
}
D.switch (grade)
{
case 'A':printf("85--100
");break;
case 'B':printf("60--84
");break;
case 'C':printf("60 以下
");break;
default:printf("等级错误!
");
}
【答案】D
【详解】选项A缺少所有的 break 语句,这将导致程序执行“级联”到下一个 case。选项B在 'A' 和 'B' 之后的 printf 语句缺少 break 语句,这同样会导致级联问题。同时 'C' 之后的 printf 语句也缺少 break。选项C在 'A' 和 'B' 之后的 printf 语句同样缺少 break 语句。
16.以下代码的输出结果是( )
int x = 5;
switch(x) {
case 5: x += 2;
case 6: x += 3;
default: x += 4;
}
printf("%d", x);
A.5 B.7 C.10 D.14
【答案】D
17.以下关于 switch 语句和 if - else if - else 语句的说法,错误的是( )
A.switch 语句更适合处理多分支的等值判断
B.if - else if - else 语句可以处理范围判断,switch 语句一般不能
C.switch 语句的执行效率一定比 if - else if - else 语句高
D.switch 语句和 if - else if - else 语句都可以实现多分支选择结构
【答案】C
18.以下代码:
char c = 'B';
switch (c) {
case 'A': printf("等级 A"); break;
case 'B': printf("等级 B");
case 'C': printf("等级 C");
default: printf("其他等级");
}
输出结果是( )
A.等级 B B.等级 B 等级 C
C.等级 B 等级 C 其他等级 D.等级 B 其他等级
【答案】C
19.有如下代码:
int n = 3;
switch (n) {
case 1:
case 2: printf("小"); break;
case 3:
case 4: printf("中"); break;
default: printf("大");
}
输出结果是( )
A.小 B.中 C.大 D.无输出
【答案】B
20.有如下 switch 语句:
int a = 2;
switch (a) {
case 1: printf("1");
case 2: printf("2");
case 3: printf("3");
default: printf("default");
}
其输出结果是( )
A.2 B.default C.23 D.23default
【答案】D
二、程序设计题(本大题共4小题,每题15分,共60分)
21.输入一个0~6的整数,输出星期几。
【答案】#include <stdio.h>
main() {
int i;
printf("请输入一个0-6的整数:");
scanf("%d", &i);
switch (i) {
case 0:
printf("星期日");
break;
case 1:
printf("星期一");
break;
case 2:
printf("星期二");
break;
case 3:
printf("星期三");
break;
case 4:
printf("星期四");
break;
case 5:
printf("星期五");
break;
case 6:
printf("星期六");
break;
default:
printf("输入错误");
}
}
22.输入一个年月日,计算出该日期是该年的第几天
#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);
23.下面是一个计算出租车收费的程序,当里程在3公里以内含3公里时收费12元,超过3公里的部分每公里收费2元
#include<stdio.h>
main(){
int m,n;
scanf("%d",&m);
/*******space*******/
/*******space*******/
printf("n=%d",n);
}
【答案】switch(m){
case 1:
case 2:
case 3:n=12;break;
default:n=12+(n-3)*2;
}
【详解】利用switch语句的一个执行特点,当匹配到某个case后执行对应的语句后,一直遇到break语句时,switch才会停止。1,2,3公里收费均为12元,故省略了相同结果的break,否则是按照超出3公里部分每公里收费2元,即满足公式n=12+(n-3)*2;
24.函数fun的功能是:统计长整数n的各位上出现数字1、2、3的次数,并用外部(全局)变量c1、c2、 c3返回主函数。例如,当n= 123114350时,结果应该为: c1=3 c2=1 c3=2。
#include <stdio.h>
void fun(long n)
{
int c1,c2,c3;
c1=c2=c3=0;
while(n)
{
/*******space*******/
/*******space*******/
}
}
void main()
{
long n=123114350L;
fun(n);
printf("【The result: 】
");
printf("c1=%d c2=%d c3=%d
",c1,c2,c3);
}
【答案】switch(n%10)
{
case 1:c1++;break;
case 2:c2++;break;
case 3:c3++;break;
}
【详解】利用数为分离将其个位进行分离,再利用switch..case进行匹配,匹配上对应的值时让其对应的计数器累计即可。
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明:重庆市高等职业教育分类考试专业综合理论测试-计算机类《C语言程序设计》考点双析卷专辑,依据省教育厅《重庆市高等职业教育分类考试专业综合理论测试计算机类考试说明》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建“讲练结合”的学习闭环,特别适用于重庆市高等职业教育分类考试第一轮高考复习教学。
本专辑第18卷精准对标重庆市考纲,考试内容及范围【C语言程序设计知识】:
(三)分支结构程序设计:多分支语句
重庆市高等职业教育分类考试 计算机类
《C语言程序设计》考点双析卷 第18卷
多分支语句 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题2分,共40分)
1.下列程序的执行结果是( )
main()
{ int a=4,m=0;
switch(a%2==0)
{ case 0:m++;
case l:m++;break;
case 2:m++;}
printf(“%d”,m);}
A.1 B.2 C.3 D.0
2.若有定义 float xtint a,b;,则下列四段代码中合法的一段是( )
A.switch(x)
{ case 0: printf(“**”);
case l: printf(“++”);}
B.switch(a)
{ case 0:printf(“**”);
case l:printf(“++”);}
C.switch(a)
{ case l.0:printf(“**”);
case 2.0:printf(“++”);}
D.switch(x)
{ case l:printf(“**”);
case 2+3:printf(“++”);}
3.以下程序段的运行结果是( )
int i;
for(i=0ni<=3;i++)
switch(i)
{case l:printf("%d",i); break;
case 2:printf("%d",i):break:
default:printf("%d",++i);}
A.012 B.023 C.123 D.124
4.执行下列程序段时输入:A<回车>后的输出结果是( )
char ch;scanf("%c",&ch);
switch(ch%2)
{case 0:printf("偶数");break;
case 1:printf("奇数");break;
default:printf("error");}
A.偶数 B.奇数 C.error D.无输出
5.执行以下程序段的输出结果是( )
int x=0,y=2,z=3;
switch(x+1)
{case 1:switch(y==2)
{case 1:printf("*");break;
case 2:printf("%");break;}
case 2:switch(z)
{case 1:printf("$");break;
case 2:printf("*");break;
default:printf("#");}}
A.*# B.*$* C.*%$*# D.*
6.执行以下程序段时输入:H<回车>,输出结果是( )
char ch;ch=getchar();
switch(ch)
{case 'H':printf("%s","Hello! ");
case 'G':printf("%s","Good morning! ");break;
default:printf("%s","Bye Bye!");}
A.Hello! B.Hello! Good morning!
C.Hello! Good morning! Bye Bye! D.Good morning! Bye Bye!
7.执行下列程序段时输入:A<回车>,输出结果是( )
char a;a=getchar();
switch(++a)
{case 65:printf("%c",'A');
case 66:printf("%d",'A');break;
default:printf("%s","other");}
A.65 B.A C.66 D.B
8.以下程序段的输出结果是( )
int a=60,b=40,c=50,d;d=a>30?b:c;
switch(d)
{case 30:printf("%d",a);case 40:printf("%d",b);
case 50:printf("%d",c);default:printf("error");}
A.605040 B.50error C.40error D.4050error
9.以下程序的运行结果是( )
#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
10.以下代码的输出是( )
int x = 2;
switch (x << 1) { // x左移1位(即乘以2)
case 2: printf("A"); break;
case 4: printf("B"); break;
default: printf("C");
}
A.A B.B C.C D.编译错误
11.以下代码的输出是( )
int x = 4;
switch (x % 3) {
case 1: x += 1;
case 2: x += 2;
default: x += 3;
}
printf("%d", x);
A.4 B.6 C.9 D.10
12.以下代码的输出是( )
int x = 2;
switch (x) {
case 1: printf("A");
case 2: printf("B");
case 3: printf("C");
default: printf("D");
}
A.B B.BC C.BCD D.D
13.下列语句中说法正确的是( )
A.Switch后表达式的类型可以和case后表达式或常量类型不一致。
B.case后可以是任何类型表达式。
C.case语句后面必须要有break。
D.不同的case可以共用一个语句组。
14.若有以下定义int a,b;float c;char d;变量均正确赋值,下列语句中,语法正确的是( )
A.switch a+b
{ case 1: a++;
case 2:b++;
case 3:d++; }
B.switch (a+1)
{ case a: a++;
case b:b++;
case d:d++; }
C.switch (d)
{ case ‘C’: a++;
case ‘B’:b++;
case ‘c’:a++;b++; }
D.switch (a+b)
{ case ‘A’: a++;
case ‘B’:b++;
case ‘C’:d++; }
15.假定等级和分数有以下对应关系:
等级: A 分数: 85~100
等级: B 分数: 60~84
等级: C 分数: 60 以下
对于等级 grade 输出相应的分数区间, 能够完成该功能的程序段是( )
A.switch (grade)
{
case 'A':printf("85--100
");
case 'B':printf("60--84
");
case 'C':printf("60 以下
");
default:printf("等级错误!
");
}
B.switch (grade)
{
case 'A':printf("85--100
");break;
case 'B':printf("60--84
");
case 'C':printf("60 以下
");
default:printf(" 等级错误!
");
}
C.switch (grade)
{
case 'A':printf("85--100
");break;
case 'B':printf("60--84
");break;
case 'C':printf("60 以下
");
default:printf("等级错误!
");
}
D.switch (grade)
{
case 'A':printf("85--100
");break;
case 'B':printf("60--84
");break;
case 'C':printf("60 以下
");break;
default:printf("等级错误!
");
}
16.以下代码的输出结果是( )
int x = 5;
switch(x) {
case 5: x += 2;
case 6: x += 3;
default: x += 4;
}
printf("%d", x);
A.5 B.7 C.10 D.14
17.以下关于 switch 语句和 if - else if - else 语句的说法,错误的是( )
A.switch 语句更适合处理多分支的等值判断
B.if - else if - else 语句可以处理范围判断,switch 语句一般不能
C.switch 语句的执行效率一定比 if - else if - else 语句高
D.switch 语句和 if - else if - else 语句都可以实现多分支选择结构
18.以下代码:
char c = 'B';
switch (c) {
case 'A': printf("等级 A"); break;
case 'B': printf("等级 B");
case 'C': printf("等级 C");
default: printf("其他等级");
}
输出结果是( )
A.等级 B B.等级 B 等级 C
C.等级 B 等级 C 其他等级 D.等级 B 其他等级
19.有如下代码:
int n = 3;
switch (n) {
case 1:
case 2: printf("小"); break;
case 3:
case 4: printf("中"); break;
default: printf("大");
}
输出结果是( )
A.小 B.中 C.大 D.无输出
20.有如下 switch 语句:
int a = 2;
switch (a) {
case 1: printf("1");
case 2: printf("2");
case 3: printf("3");
default: printf("default");
}
其输出结果是( )
A.2 B.default C.23 D.23default
二、程序设计题(本大题共4小题,每题15分,共60分)
21.输入一个0~6的整数,输出星期几。
22.输入一个年月日,计算出该日期是该年的第几天
#include<stdio.h>
main(){
int year,month,day,days;
/*******space*******/
/*******space*******/
}
23.下面是一个计算出租车收费的程序,当里程在3公里以内含3公里时收费12元,超过3公里的部分每公里收费2元
#include<stdio.h>
main(){
int m,n;
scanf("%d",&m);
/*******space*******/
/*******space*******/
printf("n=%d",n);
}
24.函数fun的功能是:统计长整数n的各位上出现数字1、2、3的次数,并用外部(全局)变量c1、c2、 c3返回主函数。例如,当n= 123114350时,结果应该为: c1=3 c2=1 c3=2。
#include <stdio.h>
void fun(long n)
{
int c1,c2,c3;
c1=c2=c3=0;
while(n)
{
/*******space*******/
/*******space*******/
}
}
void main()
{
long n=123114350L;
fun(n);
printf("【The result: 】
");
printf("c1=%d c2=%d c3=%d
",c1,c2,c3);
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$