内容正文:
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第10卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(五)多分支语句
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第10卷
多分支语句 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.在 switch 语句中,break 语句的作用是( )
A.结束整个程序 B.结束当前 case 分支
C.跳出 switch 语句 D.跳过后续所有 case 分支
2.若 switch 语句的表达式为字符型变量 ch,以下 case 语句合法的是( )
A.case 'a': B.case "a": C.case ch: D.case 1 + 'a':
3.以下 switch 语句中,default 分支的作用是( )
int num = 5;
switch (num) {
case 1: printf("1"); break;
case 2: printf("2"); break;
default: printf("其他");
}
A.当 num 的值为 1 或 2 时执行 B.当 num 的值不为 1 和 2 时执行
C.无论 num 的值是什么都执行 D.以上都不对
4.以下代码的输出是( )
int x = 0;
switch (x = 1) { // 赋值表达式返回1
case 0: printf("A"); break;
case 1: printf("B");
}
A.AA B.AB C.A D.B
5.以下代码的错误是( )
int x = 1;
switch (x) {
int y = 5;
case 1: printf("%d", y); break;
}
A.switch内不能定义变量 B.y未初始化
C.case标签后不能有变量声明 D.无错误
6.以下代码的错误是( )
int x = 5;
switch (x) {
case 1: printf("A");
case 5: printf("B");
default: printf("C");
}
A.case值必须为常量 B.case 5重复 C.无错误 D.缺少break
7.以下代码的错误是( )
float f = 3.14;
switch (f) {
case 3.14: printf("A");
default: printf("B");
}
A.case值类型不匹配 B.switch表达式不能是浮点型
C.缺少break D.无错误
8.以下代码的输出是( )
int x = 0;
switch (x) {
case 0: printf("A"); break;
case 1: printf("B");
default: printf("C");
}
A.A B.AC C.C D.无输出
9.以下代码段的输出是( )
int a = 2;
switch (a) {
case 1: printf("A");
case 2: printf("B");
default: printf("C");
}
A.B B.BC C.ABC D.编译错误
10.以下关于 switch 语句的描述,正确的是( )
A.default 必须放在所有 case 之后
B.case 后的常量表达式可以是变量
C.break 用于终止当前循环
D.switch 表达式必须为整型或字符型
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小题,每题10分,共40分)
21.输入一个0~6的整数,输出星期几。
22.实现以下功能,要求:输入两个整数和一个运算符(+、-、*、/),输出运算结果。若除数为0或运算符非法,输出错误信息。
23.实现以下功能,根据月份输出季节,输入月份(1~12),输出对应的季节(春:3~5,夏:6~8,秋:9~11,冬:12~2)。
24.输入一个年月日,计算出该日期是该年的第几天
#include<stdio.h>
main(){
int year,month,day,days;
/*******space*******/
/*******space*******/
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第10卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(五)多分支语句
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第10卷
多分支语句 学生练习卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.在 switch 语句中,break 语句的作用是( )
A.结束整个程序 B.结束当前 case 分支
C.跳出 switch 语句 D.跳过后续所有 case 分支
【答案】C
2.若 switch 语句的表达式为字符型变量 ch,以下 case 语句合法的是( )
A.case 'a': B.case "a": C.case ch: D.case 1 + 'a':
【答案】A
3.以下 switch 语句中,default 分支的作用是( )
int num = 5;
switch (num) {
case 1: printf("1"); break;
case 2: printf("2"); break;
default: printf("其他");
}
A.当 num 的值为 1 或 2 时执行 B.当 num 的值不为 1 和 2 时执行
C.无论 num 的值是什么都执行 D.以上都不对
【答案】B
4.以下代码的输出是( )
int x = 0;
switch (x = 1) { // 赋值表达式返回1
case 0: printf("A"); break;
case 1: printf("B");
}
A.AA B.AB C.A D.B
【答案】D
5.以下代码的错误是( )
int x = 1;
switch (x) {
int y = 5;
case 1: printf("%d", y); break;
}
A.switch内不能定义变量 B.y未初始化
C.case标签后不能有变量声明 D.无错误
【答案】B
6.以下代码的错误是( )
int x = 5;
switch (x) {
case 1: printf("A");
case 5: printf("B");
default: printf("C");
}
A.case值必须为常量 B.case 5重复 C.无错误 D.缺少break
【答案】C
7.以下代码的错误是( )
float f = 3.14;
switch (f) {
case 3.14: printf("A");
default: printf("B");
}
A.case值类型不匹配 B.switch表达式不能是浮点型
C.缺少break D.无错误
【答案】B
8.以下代码的输出是( )
int x = 0;
switch (x) {
case 0: printf("A"); break;
case 1: printf("B");
default: printf("C");
}
A.A B.AC C.C D.无输出
【答案】A
9.以下代码段的输出是( )
int a = 2;
switch (a) {
case 1: printf("A");
case 2: printf("B");
default: printf("C");
}
A.B B.BC C.ABC D.编译错误
【答案】B
10.以下关于 switch 语句的描述,正确的是( )
A.default 必须放在所有 case 之后
B.case 后的常量表达式可以是变量
C.break 用于终止当前循环
D.switch 表达式必须为整型或字符型
【答案】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
【答案】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小题,每题10分,共40分)
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.实现以下功能,要求:输入两个整数和一个运算符(+、-、*、/),输出运算结果。若除数为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;
}
23.实现以下功能,根据月份输出季节,输入月份(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;
}
24.输入一个年月日,计算出该日期是该年的第几天
#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);
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$