内容正文:
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第9卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(五)多分支语句
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第9卷
多分支语句 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.以下代码的输出结果是( )
int x = 2;
switch(x) {
case 1: printf("A");
case 2: printf("B");
case 3: printf("C"); break;
default: printf("D");
}
A.B B.BC C.BCD D.B C D
2.以下程序段的输出结果是( )
#define PR(ar) printf("ar = %d ", ar)
main()
{ int j, a[] = { 1, 3, 5, 7, 9, 11, 13, 15}, *p = a + 5;
for(j = 3; j ; j--)
switch( j )
{ case 1:
case 2: PR(*p++); break;
case 3: PR(*(--p)); }
getch();}
A.ar = 9 ar = 9 ar = 9 B.ar = 11 ar = 9 ar = 11
C.ar = 11 ar = 11 ar = 9 D.ar = 9 ar = 9 ar = 11
3.下列关于switch语句叙述正确的一项是( )
A.break语句只能用于switch语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.在switch语句中,可以选择是否使用break语句
4.有如下 switch 语句:
int grade = 85;
switch (grade / 10) {
case 9: printf("优秀"); break;
case 8: printf("良好"); break;
case 7: printf("中等"); break;
case 6: printf("及格"); break;
default: printf("不及格");
}
输出结果是( )
A.优秀 B.良好 C.中等 D.及格
5.以下代码:
int m = 2;
switch (m) {
case 1: printf("one");
case 2: printf("two");
case 3: printf("three");
break;
case 4: printf("four");
}
输出结果是( )
A.two B.two three C.one two three D.two three four
6.以下关于 switch 语句的说法,正确的是( )
A.switch 后面的表达式只能是整型或字符型
B.case 后面的常量表达式可以是变量
C.switch 语句中必须有 default 分支
D.break 语句在 switch 语句中是必须的
7.以下代码的输出是( )
int x = 3;
switch (x--) { // x--返回原值3
case 3: printf("A");
case 2: printf("B"); break;
default: printf("C");
}
A.A B.AB C.B D.C
8.以下代码的输出是( )
int x = 0;
switch (x) {
case 0:
if (x == 0) printf("A");
break;
case 1: printf("B");
}
A.A B.B C.AB D.无输出
9.以下代码的输出是( )
int x = 3;
switch (x) {
case 1:
case 2: printf("A"); break;
case 3:
case 4: printf("B");
default: printf("C");
}
A.B B.BC C.C D.无输出
10.以下代码的输出是( )
int x = 0;
switch (x) {
case 0:
int y = 5;
printf("%d", y);
break;
default: printf("0");
}
A.5 B.0 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小题,每题10分,共40分)
21.请编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);
}
22.有两个降序排列的集合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]);
}
}
23.该程序实现的功能是:已知数列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);
}
24.写给多个学生的成绩评定等级的程序。等级说明:成绩大于等于90小于等于100是A等,小于90大于等于70是B等,小于70大于等于60是C等,小于60大于等于0是D等.
#include<stdio.h>
main(){
int score;
char level;
/*******space*******/
/*******space*******/
}
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$
编写说明: 湖南省普通高等学校对口招生考试-计算机应用类《C语言程序设计》考点双析卷专辑,依据省教育厅《湖南省普通高等学校对口招生考试基本要求和考试大纲》编写。“考点双析卷”即围绕一个考点,一份是老师的讲解卷一份是学生的练习卷,助力师生构建 “讲练结合”的学习闭环,特别适用于湖南省普通高等学校对口招生考试第一轮高考复习教学。
本专辑第9卷精准对标湖南省考纲,考试内容及范围【C语言程序设计知识】:
(五)多分支语句
湖南省普通高等学校对口招生考试 计算机应用类
《C语言程序设计》考点双析卷 第9卷
多分支语句 老师讲解卷
时间:45分钟 总分:100分
班级_______ 姓名_______ 学号_______ 成绩_______
一、单项选择题(本大题共20小题,每题3分,共60分)
1.以下代码的输出结果是( )
int x = 2;
switch(x) {
case 1: printf("A");
case 2: printf("B");
case 3: printf("C"); break;
default: printf("D");
}
A.B B.BC C.BCD D.B C D
【答案】B
2.以下程序段的输出结果是( )
#define PR(ar) printf("ar = %d ", ar)
main()
{ int j, a[] = { 1, 3, 5, 7, 9, 11, 13, 15}, *p = a + 5;
for(j = 3; j ; j--)
switch( j )
{ case 1:
case 2: PR(*p++); break;
case 3: PR(*(--p)); }
getch();}
A.ar = 9 ar = 9 ar = 9 B.ar = 11 ar = 9 ar = 11
C.ar = 11 ar = 11 ar = 9 D.ar = 9 ar = 9 ar = 11
【答案】D
3.下列关于switch语句叙述正确的一项是( )
A.break语句只能用于switch语句
B.在switch语句中必须使用default
C.break语句必须与switch语句中的case配对使用
D.在switch语句中,可以选择是否使用break语句
【答案】D
4.有如下 switch 语句:
int grade = 85;
switch (grade / 10) {
case 9: printf("优秀"); break;
case 8: printf("良好"); break;
case 7: printf("中等"); break;
case 6: printf("及格"); break;
default: printf("不及格");
}
输出结果是( )
A.优秀 B.良好 C.中等 D.及格
【答案】B
5.以下代码:
int m = 2;
switch (m) {
case 1: printf("one");
case 2: printf("two");
case 3: printf("three");
break;
case 4: printf("four");
}
输出结果是( )
A.two B.two three C.one two three D.two three four
【答案】B
6.以下关于 switch 语句的说法,正确的是( )
A.switch 后面的表达式只能是整型或字符型
B.case 后面的常量表达式可以是变量
C.switch 语句中必须有 default 分支
D.break 语句在 switch 语句中是必须的
【答案】A
7.以下代码的输出是( )
int x = 3;
switch (x--) { // x--返回原值3
case 3: printf("A");
case 2: printf("B"); break;
default: printf("C");
}
A.A B.AB C.B D.C
【答案】B
8.以下代码的输出是( )
int x = 0;
switch (x) {
case 0:
if (x == 0) printf("A");
break;
case 1: printf("B");
}
A.A B.B C.AB D.无输出
【答案】A
9.以下代码的输出是( )
int x = 3;
switch (x) {
case 1:
case 2: printf("A"); break;
case 3:
case 4: printf("B");
default: printf("C");
}
A.B B.BC C.C D.无输出
【答案】B
10.以下代码的输出是( )
int x = 0;
switch (x) {
case 0:
int y = 5;
printf("%d", y);
break;
default: printf("0");
}
A.5 B.0 C.编译错误 D.不确定
【答案】C
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小题,每题10分,共40分)
21.请编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;
}
22.有两个降序排列的集合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++;
}
}
23.该程序实现的功能是:已知数列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;
24.写给多个学生的成绩评定等级的程序。等级说明:成绩大于等于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);
试卷第6页,共6页
试卷第5页,共6页
学科网(北京)股份有限公司
$