内容正文:
编写说明:重庆市高等职业教育分类考试专业综合理论测试-计算机类《C语言程序设计》考点双析卷专辑,依据省教育厅《重庆市高等职业教育分类考试专业综合理论测试计算机类考试说明》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建“讲练结合”的学习闭环,特别适用于重庆市高等职业教育分类考试第一轮高考复习教学。
本专辑第17卷精准对标重庆市考纲,考试内容及范围【C语言程序设计知识】:
(三)分支结构程序设计:多分支语句
重庆市高等职业教育分类考试 计算机类
《C语言程序设计》考点双析卷 第17卷
多分支语句 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题2分,共40分)
1.下列叙述中正确的是( )
A.在switch语句中,不一定使用break语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.break 语句只能用于switch语句
2.有以下程序,程序运行后的输出结果是( )
#include <stdio.h> main( )
{ int k=5, n=0;
do { switch (k)
{ case 1: case 3: n+=1; k--; break;
default: n=0; k--;
case 2: case 4: n+ =2; k--; break; }
printf("%d " ,n);
}while (k>0 && n<5); }
A.235 B.0234 C.02356 D.2356
3.有以下程序段
#include <stdio.h>
main(){
int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{
case 0: a++; break;
case 1: b++; break;
}
case 2 : a++; b++; break;
case 3: a++; b++;
}
printf("a=%d,b=%d
",a,b);
}
以下关于程序段执行情况的叙述,正确的是( )
A.a=2,b=2 B.a=2,b=1
C.a=1,b=1 D.a=1,b=0
4.C 语言的 switch 语句中,case 后( )
A.只能为常量
B.只能为常量或常量表达式
C.可为常量及表达式或有确定值的变量及表达式
D.可为任何量或表达式
5.若有定义: float x=1.5; int a =1,b=3,c=2;则正确的switch语句是( )
A.switch(a+b)
{case 1: printf("*
");
case 2+1 : printf("**
");}
B.switch( (int)x );
{ case 1: printf("*
");
case 2 : printf("**
");}
C.switch( x );
{ case 1.0: printf("*
");
case 2.0 : printf("**
");}
D.switch( a+b )
{ case 1: printf("*
");
case c: printf("**
");}
6.下列程序段的执行结果是( )
main() {
int i;
for (i = 0; i < 3; i++)
switch (i) {
case 1:
printf("%d", i);
case 2:
printf("%d", i);
break;
default:
printf("%d", i);
}
}
A.0112 B.0 1 1 2 C.0,1,1,2 D.程序错误
7.下列程序段的执行结果是( )
main() {
int k = 5, n = 0;
while (k > 0)
{switch (k)
{default:break;
case 1:n += k;
case 2:
case 3:n += k;
}
k--;
}
printf("%d
", n);
}
A.5 B.6 C.7 D.8
8.有如下程序,该程序的输出结果是( )
# include<stdio.h>
main(){
int x=1,a=10,b=10;
switch(x){
case 0:b++:
case l:a++:
case 2:a++;b++;)
printf("%d",a);}
A.10 B.11 C.12 D.13
9.假定等级和分数有以下对应关系:
等级: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( "grade is etror!
");
B.switch(grade){
case 'A':printf("85--100
");break;
case 'B':printf("60--84
");
case 'C’:printf("<60
");
default :printf( "grade is error!
");}
C.switch(grade)
case 'A’:printf("85--100
"):break;
case 'B’:printf("60--84
");breaks;
case ’C’:printf("<60
");
default: printf("grade is error!
");}
D.switch (grade){
case 'C':printf("<60
");break;
case 'B’:printf("60--84
");break;
default: printf("grade is error!
") ;break:
case 'A':printf("85--100
");}
10.switch 语句中每个case后应该是( )
A.常量 B.常量或常量表达式
C.变量 D.常量、变量均可
11.以下代码的输出结果是( )
int x = 1;
switch(x) {
case 1: x += 1;
case 2: x += 2; break;
case 3: x += 3;
}
printf("%d", x);
A.2 B.3 C.4 D.5
12.设有以下程序,运行后的输出结果是( )
main()
{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.2,2 B.2,1 C.1,1 D.1,0
13.以下程序的运行结果是( )
#include <stdio.h>
main() {
int k = 1, j = 2;
{
switch (k) {
case 1 :
j += k;
case 2 :
case 3 :
j += k;
default :
break;
}
k--;
}
printf("%d
", j);
}
A.5 B.7 C.6 D.4
14.以下程序的运行结果是 ( )
#include <stdio.h>
main( ) {
int x = 2, y = 2, z = 5, j = 5;
switch (x) {
case 1:switch (x) {
case 2: j++;
case 1:x++;break;
}
case 2:z++;x++;break;
}
printf("%d,%d", j, z);
}
A.5,5 B.6,6 C.5,6 D.6,5
15.执行以下语句后m的值是( )
inta=21,b=20,m=0;
switch (a % 3)
{ case 0:m++;
case 1:m++;
switch (b% 2)
{ case 0:m++; break;
default:m++;}
default:++m;}
A.4 B.5 C.3 D.2
16.执行下面程序段,该程序的输出结果为( )
int a = 1,b = 2,c = 3;
switch(a)
{ case 0:b++;
case 1:b++;c++;
case 2:c++;
}
printf("b = %d,c = %d",b,c);
A.b = 5, c = 3 B.b = 3, c = 5 C.b = 3, c = 1 D.b = 1, c = 5
17.以下代码的输出结果是( )
int num = 0;
while (num < 3) {
switch (num) {
case 0:
printf("Zero");
break;
case 1:
printf("One");
break;
case 2:
printf("Two");
break;
}
num++;
}
A.ZeroOneTwo B.Zero C.OneTwo D.编译错误
18.以下代码的输出结果是( )
int x = 3;
switch (x) {
case 1:
printf("One");
break;
case 2:
printf("Two");
break;
case 3:
printf("Three");
break;
default:
printf("Other");
}
A.One B.Two C.Three D.Other
19.以下代码的错误是( )
const int y = 2;
switch (y) {
case y: printf("A");
case 3: printf("B");
}
A.case标签不能使用const变量
B.switch表达式必须为变量
C.无错误
D.缺少default
20.以下代码的输出是( )
int x = 5;
switch (x) {
case 5:
x = 10;
case 10:
printf("%d", x); break;
default:
printf("0");
}
A.5 B.10 C.0 D.编译错误
二、程序设计题(本大题共4小题,每题15分,共60分)
21.实现以下功能,要求:输入两个整数和一个运算符(+、-、*、/),输出运算结果。若除数为0或运算符非法,输出错误信息。
22.实现以下功能,根据月份输出季节,输入月份(1~12),输出对应的季节(春:3~5,夏:6~8,秋:9~11,冬:12~2)。
23.写给多个学生的成绩评定等级的程序。等级说明:成绩大于等于90小于等于100是A等,小于90大于等于70是B等,小于70大于等于60是C等,小于60大于等于0是D等.
#include<stdio.h>
main(){
int score;
char level;
/*******space*******/
/*******space*******/
}
24.请编fun函数写程序,从键盘输入百分制成绩,要求输出等级制成绩A、B、C、D。90~100分为A,80~89分为B,60~79分为C,1~59分为D。不考虑小数,输入为整数,输出为字符
#include <stdio.h>
/*******space*******/
/*******space*******/
void main()
{
int score,n;
char p;
scanf("%d",&score);
n=score/10;
p=fun(n);
printf("%c" , p);
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明:重庆市高等职业教育分类考试专业综合理论测试-计算机类《C语言程序设计》考点双析卷专辑,依据省教育厅《重庆市高等职业教育分类考试专业综合理论测试计算机类考试说明》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建“讲练结合”的学习闭环,特别适用于重庆市高等职业教育分类考试第一轮高考复习教学。
本专辑第17卷精准对标重庆市考纲,考试内容及范围【C语言程序设计知识】:
(三)分支结构程序设计:多分支语句
重庆市高等职业教育分类考试 计算机类
《C语言程序设计》考点双析卷 第17卷
多分支语句 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题2分,共40分)
1.下列叙述中正确的是( )
A.在switch语句中,不一定使用break语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.break 语句只能用于switch语句
【答案】A
2.有以下程序,程序运行后的输出结果是( )
#include <stdio.h> main( )
{ int k=5, n=0;
do { switch (k)
{ case 1: case 3: n+=1; k--; break;
default: n=0; k--;
case 2: case 4: n+ =2; k--; break; }
printf("%d " ,n);
}while (k>0 && n<5); }
A.235 B.0234 C.02356 D.2356
【答案】A
3.有以下程序段
#include <stdio.h>
main(){
int x=1,y=0,a=0,b=0;
switch(x)
{ case 1:
switch(y)
{
case 0: a++; break;
case 1: b++; break;
}
case 2 : a++; b++; break;
case 3: a++; b++;
}
printf("a=%d,b=%d
",a,b);
}
以下关于程序段执行情况的叙述,正确的是( )
A.a=2,b=2 B.a=2,b=1
C.a=1,b=1 D.a=1,b=0
【答案】B
4.C 语言的 switch 语句中,case 后( )
A.只能为常量
B.只能为常量或常量表达式
C.可为常量及表达式或有确定值的变量及表达式
D.可为任何量或表达式
【答案】B
5.若有定义: float x=1.5; int a =1,b=3,c=2;则正确的switch语句是( )
A.switch(a+b)
{case 1: printf("*
");
case 2+1 : printf("**
");}
B.switch( (int)x );
{ case 1: printf("*
");
case 2 : printf("**
");}
C.switch( x );
{ case 1.0: printf("*
");
case 2.0 : printf("**
");}
D.switch( a+b )
{ case 1: printf("*
");
case c: printf("**
");}
【答案】A
6.下列程序段的执行结果是( )
main() {
int i;
for (i = 0; i < 3; i++)
switch (i) {
case 1:
printf("%d", i);
case 2:
printf("%d", i);
break;
default:
printf("%d", i);
}
}
A.0112 B.0 1 1 2 C.0,1,1,2 D.程序错误
【答案】A
7.下列程序段的执行结果是( )
main() {
int k = 5, n = 0;
while (k > 0)
{switch (k)
{default:break;
case 1:n += k;
case 2:
case 3:n += k;
}
k--;
}
printf("%d
", n);
}
A.5 B.6 C.7 D.8
【答案】C
8.有如下程序,该程序的输出结果是( )
# include<stdio.h>
main(){
int x=1,a=10,b=10;
switch(x){
case 0:b++:
case l:a++:
case 2:a++;b++;)
printf("%d",a);}
A.10 B.11 C.12 D.13
【答案】C
9.假定等级和分数有以下对应关系:
等级: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( "grade is etror!
");
B.switch(grade){
case 'A':printf("85--100
");break;
case 'B':printf("60--84
");
case 'C’:printf("<60
");
default :printf( "grade is error!
");}
C.switch(grade)
case 'A’:printf("85--100
"):break;
case 'B’:printf("60--84
");breaks;
case ’C’:printf("<60
");
default: printf("grade is error!
");}
D.switch (grade){
case 'C':printf("<60
");break;
case 'B’:printf("60--84
");break;
default: printf("grade is error!
") ;break:
case 'A':printf("85--100
");}
【答案】D
10.switch 语句中每个case后应该是( )
A.常量 B.常量或常量表达式
C.变量 D.常量、变量均可
【答案】B
11.以下代码的输出结果是( )
int x = 1;
switch(x) {
case 1: x += 1;
case 2: x += 2; break;
case 3: x += 3;
}
printf("%d", x);
A.2 B.3 C.4 D.5
【答案】C
12.设有以下程序,运行后的输出结果是( )
main()
{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.2,2 B.2,1 C.1,1 D.1,0
【答案】B
13.以下程序的运行结果是( )
#include <stdio.h>
main() {
int k = 1, j = 2;
{
switch (k) {
case 1 :
j += k;
case 2 :
case 3 :
j += k;
default :
break;
}
k--;
}
printf("%d
", j);
}
A.5 B.7 C.6 D.4
【答案】D
【详解】变量k初始化为1,变量j初始化为2。进入switch(k)语句,控制表达式是k的值,即1。switch语句找到case 1:匹配,开始执行该case下的代码块。j += k; 执行后,j的值变为 2 + 1 = 3。由于case 1后面没有break语句,程序会发生"fall through"现象,继续执行下一个case分支。程序继续执行case 2:和case 3:,这两个case分支也没有break语句,所以j的值再次增加k的值(此时k的值仍为1)。j += k; 执行后,j的值变为 3 + 1 = 4。由于case 3后面也没有break语句,但这是最后一个case,所以没有更多的代码要执行。switch语句执行完毕,然后执行k--;,k的值减少1,变为0。最后,printf("%d
", j); 打印变量j的值,此时j的值为4。程序的输出结果是4。
14.以下程序的运行结果是 ( )
#include <stdio.h>
main( ) {
int x = 2, y = 2, z = 5, j = 5;
switch (x) {
case 1:switch (x) {
case 2: j++;
case 1:x++;break;
}
case 2:z++;x++;break;
}
printf("%d,%d", j, z);
}
A.5,5 B.6,6 C.5,6 D.6,5
【答案】C
【详解】执行第一个switch(x)匹配case 2,执行z++;x++,打印值j和z分别为5和6。
15.执行以下语句后m的值是( )
inta=21,b=20,m=0;
switch (a % 3)
{ case 0:m++;
case 1:m++;
switch (b% 2)
{ case 0:m++; break;
default:m++;}
default:++m;}
A.4 B.5 C.3 D.2
【答案】A
16.执行下面程序段,该程序的输出结果为( )
int a = 1,b = 2,c = 3;
switch(a)
{ case 0:b++;
case 1:b++;c++;
case 2:c++;
}
printf("b = %d,c = %d",b,c);
A.b = 5, c = 3 B.b = 3, c = 5 C.b = 3, c = 1 D.b = 1, c = 5
【答案】B
【详解】a的值为1,执行case 1后的“b++;c++”语句,b的值此时为3,c的值此时为4。因没有break语句,故继续执行case 2后的c++语句,c的值此时为5。
17.以下代码的输出结果是( )
int num = 0;
while (num < 3) {
switch (num) {
case 0:
printf("Zero");
break;
case 1:
printf("One");
break;
case 2:
printf("Two");
break;
}
num++;
}
A.ZeroOneTwo B.Zero C.OneTwo D.编译错误
【答案】A
18.以下代码的输出结果是( )
int x = 3;
switch (x) {
case 1:
printf("One");
break;
case 2:
printf("Two");
break;
case 3:
printf("Three");
break;
default:
printf("Other");
}
A.One B.Two C.Three D.Other
【答案】C
19.以下代码的错误是( )
const int y = 2;
switch (y) {
case y: printf("A");
case 3: printf("B");
}
A.case标签不能使用const变量
B.switch表达式必须为变量
C.无错误
D.缺少default
【答案】A
20.以下代码的输出是( )
int x = 5;
switch (x) {
case 5:
x = 10;
case 10:
printf("%d", x); break;
default:
printf("0");
}
A.5 B.10 C.0 D.编译错误
【答案】B
二、程序设计题(本大题共4小题,每题15分,共60分)
21.实现以下功能,要求:输入两个整数和一个运算符(+、-、*、/),输出运算结果。若除数为0或运算符非法,输出错误信息。
【答案】#include <stdio.h>
int main() {
int a, b;
char op;
scanf("%d %d %c", &a, &b, &op);
switch (op) {
case '+':
printf("%d", a + b);
break;
case '-':
printf("%d", a - b);
break;
case '*':
printf("%d", a * b);
break;
case '/':
if (b != 0) {
printf("%d", a / b);
} else {
printf("除数不能为0");
}
break;
default:
printf("运算符错误");
}
return 0;
}
22.实现以下功能,根据月份输出季节,输入月份(1~12),输出对应的季节(春:3~5,夏:6~8,秋:9~11,冬:12~2)。
【答案】#include <stdio.h>
int main() {
int month;
scanf("%d", &month);
switch (month) {
case 3: case 4: case 5:
printf("春季");
break;
case 6: case 7: case 8:
printf("夏季");
break;
case 9: case 10: case 11:
printf("秋季");
break;
case 12: case 1: case 2:
printf("冬季");
break;
default:
printf("输入错误");
}
return 0;
}
23.写给多个学生的成绩评定等级的程序。等级说明:成绩大于等于90小于等于100是A等,小于90大于等于70是B等,小于70大于等于60是C等,小于60大于等于0是D等.
#include<stdio.h>
main(){
int score;
char level;
/*******space*******/
/*******space*******/
}
【答案】scanf(“%d”,&score);
switch(score/10){
case 10:
case 9: level=’A’;break;
case 8:
case 7: level=’B’;break;
case 6: level=’C’;break;
default: level=’D’; }
printf(“等级为%c”,level);
24.请编fun函数写程序,从键盘输入百分制成绩,要求输出等级制成绩A、B、C、D。90~100分为A,80~89分为B,60~79分为C,1~59分为D。不考虑小数,输入为整数,输出为字符
#include <stdio.h>
/*******space*******/
/*******space*******/
void main()
{
int score,n;
char p;
scanf("%d",&score);
n=score/10;
p=fun(n);
printf("%c" , p);
}
【答案】char fun(int n){
char p;
switch(n){
case 10:
case 9: p=’A’;break;
case 8: p=’B’;break;
case 7:
case 6: p=’C’;break;
default: p=’D’;break;
}
return p;
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$