内容正文:
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第5卷,按《C语言程序设计》范围和要求编写。具体内容为:
掌握条件语句(if语句)和多分支语句(switch语句)的用法。
山东省《软件与应用技术类考纲百套卷》 第5卷
《C语言程序设计》
条件语句及多分支语句 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.以下关于 C 语言 if 语句的描述中,正确的是( )
A. if 语句的条件表达式必须是关系表达式
B. if 语句的条件表达式可以是任意表达式
C. if 语句后面必须跟 else 子句
D. if 语句的条件表达式值为非 0 时执行 else 分支
【答案】B
【解析】C 语言中 if 语句的条件表达式可以是任意合法表达式,非 0 值视为真,0 视为假。A 错误,条件不限于关系表达式;C 错误,if 可以单独使用;D 错误,条件为非 0 时执行 if 分支。
2.执行以下程序段后,输出结果是( )
int a=5;
if(a=0) printf("yes");
else printf("no");
A. yes B. no C. yesno D. 无输出
【答案】B
【解析】a=0是赋值表达式,结果为 0(假),因此执行 else 分支输出 "no"。注意区分赋值运算符=和关系运算符==。
3.以下程序段的输出结果是( )
int x=10;
if(x>5);
printf("x>5");
A. x>5 B. 无输出 C. 编译错误 D. 运行错误
【答案】A
【解析】if 语句后面的分号表示空语句,if(x>5);等价于if(x>5) {},无论条件是否成立,后面的printf("x>5");都会执行。
4.表达式a>b?a:b的功能等价于( )
A. if (a>b) a=b; B. if (a<b) a=b;
C. if (a>b) return a; else return b; D. if (a<b) return a; else return b;
【答案】C
【解析】条件表达式a>b?a:b的功能是:如果 a 大于 b,返回 a 的值,否则返回 b 的值,与选项 C 的 if-else 语句功能完全等价。
5.以下关于 switch 语句的描述中,错误的是( )
A. switch 语句的表达式只能是整型或字符型
B. case 后面必须跟常量表达式
C. default 子句可以放在任意位置
D. 每个 case 子句后面必须有 break 语句
【答案】D
【解析】case 子句后面不是必须有 break 语句,没有 break 时会发生 "穿透" 现象,继续执行后续 case 子句。A、B、C描述均正确。
6.执行以下程序段后,输出结果是( )
int n=2;
switch(n) {
case 1: printf("A");
case 2: printf("B");
case 3: printf("C");
default: printf("D");
}
A. B B. BC
C. BCD D. 编译错误
【答案】C
【解析】n=2 匹配 case 2,执行printf("B"),没有 break,发生穿透,继续执行 case 3 的printf("C")和 default 的printf("D"),最终输出 "BCD"。
7.执行以下程序段后,输出结果是( )
int a=3,b=2,c=1;
if(a>b)
if(b>c) printf("1");
else printf("2");
A. 1 B. 2 C. 12 D. 无输出
【答案】A
【解析】else 总是与离它最近的未匹配 if匹配,因此这里的 else 与if(b>c)匹配。a>b(3>2)为真,进入内层 if;b>c(2>1)为真,执行printf("1"),因此输出结果为 1。
8.表达式x>0?1:x<0?-1:0的功能是( )
A. 求 x 的绝对值 B. 判断 x 的正负
C. 求 x 的符号 D. 计算 x 的平方
【答案】C
【解析】该表达式是符号函数:x>0 返回 1,x<0 返回 - 1,x=0 返回 0,功能是求 x 的符号。
9.以下 case 子句中,正确的是( )
A. case 1.5: B. case a+1:
C. case n: D. case 1+2:
【答案】D
【解析】case 后面必须跟整型或字符型常量表达式。
10.执行以下程序段后,输出结果是( )
int score=85;
if(score>=90) printf("优秀");
else if(score>=80) printf("良好");
else if(score>=70) printf("中等");
else printf("及格");
A. 优秀 B. 良好 C. 中等 D. 及格
【答案】B
【解析】score=85,不满足 >=90,满足 >=80,因此执行printf("良好")。
11.条件表达式的结合性是( )
A. 左结合 B. 右结合 C. 无结合性 D. 根据优先级决定
【答案】B
【解析】条件运算符?:是 C 语言中唯一的三目运算符,结合性为右结合。
12.执行以下程序段后,输出结果是( )
int m=5;
switch(m) {
case 5: printf("5");
default: printf("default");
case 4: printf("4");
}
A. 5 B. 5default C. 5default4 D. 编译错误
【答案】C
【解析】m=5 匹配 case 5,执行printf("5"),没有 break,发生穿透,继续执行 default 的printf("default")和 case 4 的printf("4"),最终输出 "5default4"。
13.以下程序段的输出结果是( )
int a=1,b=2;
if(a>b) printf("%d",a);
else printf("%d",b);
A. 1 B. 2 C. 12 D. 无输出
【答案】B
【解析】a>b(1>2)为假,执行 else 分支,输出 b 的值 2。
14.与if(a>b) max=a; else max=b;等价的条件表达式是( )
A. max=(a>b)?a:b; B. max=a>b?b:a;
C. (a>b)?max=a:max=b; D. max=a>b?a:max=b;
【答案】A
【解析】条件表达式(a>b)?a:b先判断 a 是否大于 b,是则返回 a,否则返回 b,将结果赋值给 max,与原 if-else 语句完全等价。
15.执行以下程序段后,输出结果是( )
int x=1,y=2;
if(x>y) printf("x>y");
else if(x==y) printf("x==y");
else printf("x<y");
A. x>y B. x==y C. x<y D. 无输出
【答案】C
【解析】x=1,y=2,x>y为假,x==y为假,因此执行 else 分支,输出 "x<y"。
16.以下关于 switch 语句 default 子句的描述中,正确的是( )
A. default 子句必须放在所有 case 子句之后
B. default 子句只能有一个
C. default 子句必须存在
D. default 子句不会被执行
【答案】B
【解析】switch 语句中 default 子句最多只能有一个,可以放在任意位置,不是必须存在。A 错误,位置任意;C 错误,可选;D 错误,没有匹配的 case 时会执行。
17.执行以下程序段后,输出结果是( )
int a=10;
printf("%d
",a>0?1:-1);
A. 10 B. 1 C. -1 D. 0
【答案】B
【解析】a>0(10>0)为真,条件表达式返回冒号前的值 1。
18.以下数据类型中,不能作为 switch 语句表达式类型的是( )
A. int B. char C. float D. enum
【答案】C
【解析】switch 语句的表达式只能是整型、字符型或枚举类型,不能是浮点型(float、double)。
19.执行以下程序段后,输出结果是( )
int a=2,b=3,c=4;
if(a>b)
if(a>c) printf("%d",a);
else printf("%d",c);
else
if(b>c) printf("%d",b);
else printf("%d",c);
A. 2 B. 3 C. 4 D. 无输出
【答案】C
【解析】a>b(2>3)为假,执行 else 分支;b>c(3>4)为假,执行内层 else 分支,输出 c 的值 4。
20.执行以下程序段后,输出结果是( )
int x=0,y=1;
if(x++ && y++) printf("true");
else printf("false");
printf("x=%d,y=%d",x,y);
A. truex=1,y=2 B. falsex=1,y=1
C. truex=0,y=1 D. falsex=0,y=2
【答案】B
【解析】x++是后置自增,先使用 x 的原值 0 参与运算,之后 x 自增为 1;逻辑与&&左边为 0(假),发生短路,右边的y++不执行,y 保持 1;因此执行 else 分支输出 "false",最终输出 "falsex=1,y=1"。
二、简答题(本大题共2小题,每题10分,共20分)
1.阅读以下 C 语言程序,写出程序运行后的完整输出结果_________
#include <stdio.h>
int main()
{
int x=3,y=5,z=7;
if(x>y)
if(y>z) printf("1");
else printf("2");
else if(x<z)
if(z>y) printf("3");
else printf("4");
else
printf("5");
printf("
");
return 0;
}
【答案】3
2.阅读以下 C 语言程序,写出程序运行后的完整输出结果_________
#include <stdio.h>
int main()
{
int a=2,b=3,c=0;
switch(a+b)
{
case 4: printf("A");
case 5: printf("B");
case 6: printf("C"); break;
default: printf("D");
}
c = a>b?a--:b++;
printf("
c=%d,a=%d,b=%d
",c,a,b);
return 0;
}
【答案】
BC
c=3,a=2,b=4
三、案例分析题(本大题共1小题,每题10分,共10分)
1.以下程序的功能是:输入年份和月份,判断该月份属于哪个季节,并输出该月份的天数(需考虑闰年 2 月的特殊情况)。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。
#include <stdio.h>
int main()
{
int year, month, days;
char season[10];
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
if(____1____)
{
printf("月份输入错误!
");
return 1;
}
if(month>=3 && month<=5)
strcpy(season, "春季");
else if(____2____)
strcpy(season, "夏季");
else if(month>=9 && month<=11)
strcpy(season, "秋季");
else
strcpy(season, "冬季");
switch(month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days=31;
break;
case 4: case 6: case 9: case 11:
days=30;
break;
case 2:
if(____3____)
days=29;
else
days=28;
break;
____4____:
days=0;
break;
}
printf("%d年%d月是%s,共有%d天
", year, month, season, days);
printf("该年%s闰年
", ____5____?"是":"不是");
return 0;
}
【答案】
1.month<1 || month>12
2.month>=6 && month<=8
3.(year%4==0 && year%100!=0) || year%400==0
4.default
5.(year%4==0 && year%100!=0) || year%400==0
四、综合应用题(本大题共1小题,每题10分,共10分)
1.编写一个 C 语言程序,实现学生成绩等级评定功能:
输入学生的考试成绩(整数,0-100 分)
根据成绩输出对应等级:
90-100 分:优秀
80-89 分:良好
70-79 分:中等
60-69 分:及格
0-59 分:不及格
检查输入成绩的合法性(成绩必须在 0-100 之间)
必须使用if-else if 多分支语句实现等级判断
程序要有清晰的输入提示和输出格式
【答案】
#include <stdio.h>
int main()
{
int score;
printf("请输入学生成绩(0-100):");
scanf("%d", &score);
// 检查成绩合法性
if(score < 0 || score > 100)
{
printf("成绩输入错误!
");
return 1;
}
// 等级判断
if(score >= 90)
printf("等级:优秀
");
else if(score >= 80)
printf("等级:良好
");
else if(score >= 70)
printf("等级:中等
");
else if(score >= 60)
printf("等级:及格
");
else
printf("等级:不及格
");
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第5卷,按《C语言程序设计》范围和要求编写。具体内容为:
掌握条件语句(if语句)和多分支语句(switch语句)的用法。
山东省《软件与应用技术类考纲百套卷》 第5卷
《C语言程序设计》
条件语句及多分支语句 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.以下关于 C 语言 if 语句的描述中,正确的是( )
A. if 语句的条件表达式必须是关系表达式
B. if 语句的条件表达式可以是任意表达式
C. if 语句后面必须跟 else 子句
D. if 语句的条件表达式值为非 0 时执行 else 分支
2.执行以下程序段后,输出结果是( )
int a=5;
if(a=0) printf("yes");
else printf("no");
A. yes B. no C. yesno D. 无输出
3.以下程序段的输出结果是( )
int x=10;
if(x>5);
printf("x>5");
A. x>5 B. 无输出 C. 编译错误 D. 运行错误
4.表达式a>b?a:b的功能等价于( )
A. if (a>b) a=b; B. if (a<b) a=b;
C. if (a>b) return a; else return b; D. if (a<b) return a; else return b;
5.以下关于 switch 语句的描述中,错误的是( )
A. switch 语句的表达式只能是整型或字符型
B. case 后面必须跟常量表达式
C. default 子句可以放在任意位置
D. 每个 case 子句后面必须有 break 语句
6.执行以下程序段后,输出结果是( )
int n=2;
switch(n) {
case 1: printf("A");
case 2: printf("B");
case 3: printf("C");
default: printf("D");
}
A. B B. BC
C. BCD D. 编译错误
7.执行以下程序段后,输出结果是( )
int a=3,b=2,c=1;
if(a>b)
if(b>c) printf("1");
else printf("2");
A. 1 B. 2 C. 12 D. 无输出
8.表达式x>0?1:x<0?-1:0的功能是( )
A. 求 x 的绝对值 B. 判断 x 的正负
C. 求 x 的符号 D. 计算 x 的平方
9.以下 case 子句中,正确的是( )
A. case 1.5: B. case a+1:
C. case n: D. case 1+2:
10.执行以下程序段后,输出结果是( )
int score=85;
if(score>=90) printf("优秀");
else if(score>=80) printf("良好");
else if(score>=70) printf("中等");
else printf("及格");
A. 优秀 B. 良好 C. 中等 D. 及格
11.条件表达式的结合性是( )
A. 左结合 B. 右结合 C. 无结合性 D. 根据优先级决定
12.执行以下程序段后,输出结果是( )
int m=5;
switch(m) {
case 5: printf("5");
default: printf("default");
case 4: printf("4");
}
A. 5 B. 5default C. 5default4 D. 编译错误
13.以下程序段的输出结果是( )
int a=1,b=2;
if(a>b) printf("%d",a);
else printf("%d",b);
A. 1 B. 2 C. 12 D. 无输出
14.与if(a>b) max=a; else max=b;等价的条件表达式是( )
A. max=(a>b)?a:b; B. max=a>b?b:a;
C. (a>b)?max=a:max=b; D. max=a>b?a:max=b;
15.执行以下程序段后,输出结果是( )
int x=1,y=2;
if(x>y) printf("x>y");
else if(x==y) printf("x==y");
else printf("x<y");
A. x>y B. x==y C. x<y D. 无输出
16.以下关于 switch 语句 default 子句的描述中,正确的是( )
A. default 子句必须放在所有 case 子句之后
B. default 子句只能有一个
C. default 子句必须存在
D. default 子句不会被执行
17.执行以下程序段后,输出结果是( )
int a=10;
printf("%d
",a>0?1:-1);
A. 10 B. 1 C. -1 D. 0
18.以下数据类型中,不能作为 switch 语句表达式类型的是( )
A. int B. char C. float D. enum
19.执行以下程序段后,输出结果是( )
int a=2,b=3,c=4;
if(a>b)
if(a>c) printf("%d",a);
else printf("%d",c);
else
if(b>c) printf("%d",b);
else printf("%d",c);
A. 2 B. 3 C. 4 D. 无输出
20.执行以下程序段后,输出结果是( )
int x=0,y=1;
if(x++ && y++) printf("true");
else printf("false");
printf("x=%d,y=%d",x,y);
A. truex=1,y=2 B. falsex=1,y=1
C. truex=0,y=1 D. falsex=0,y=2
二、简答题(本大题共2小题,每题10分,共20分)
1.阅读以下 C 语言程序,写出程序运行后的完整输出结果_________
#include <stdio.h>
int main()
{
int x=3,y=5,z=7;
if(x>y)
if(y>z) printf("1");
else printf("2");
else if(x<z)
if(z>y) printf("3");
else printf("4");
else
printf("5");
printf("
");
return 0;
}
2.阅读以下 C 语言程序,写出程序运行后的完整输出结果_________
#include <stdio.h>
int main()
{
int a=2,b=3,c=0;
switch(a+b)
{
case 4: printf("A");
case 5: printf("B");
case 6: printf("C"); break;
default: printf("D");
}
c = a>b?a--:b++;
printf("
c=%d,a=%d,b=%d
",c,a,b);
return 0;
}
三、案例分析题(本大题共1小题,每题10分,共10分)
1.以下程序的功能是:输入年份和月份,判断该月份属于哪个季节,并输出该月份的天数(需考虑闰年 2 月的特殊情况)。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。
#include <stdio.h>
int main()
{
int year, month, days;
char season[10];
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份:");
scanf("%d", &month);
if(____1____)
{
printf("月份输入错误!
");
return 1;
}
if(month>=3 && month<=5)
strcpy(season, "春季");
else if(____2____)
strcpy(season, "夏季");
else if(month>=9 && month<=11)
strcpy(season, "秋季");
else
strcpy(season, "冬季");
switch(month)
{
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days=31;
break;
case 4: case 6: case 9: case 11:
days=30;
break;
case 2:
if(____3____)
days=29;
else
days=28;
break;
____4____:
days=0;
break;
}
printf("%d年%d月是%s,共有%d天
", year, month, season, days);
printf("该年%s闰年
", ____5____?"是":"不是");
return 0;
}
四、综合应用题(本大题共1小题,每题10分,共10分)
1.编写一个 C 语言程序,实现学生成绩等级评定功能:
输入学生的考试成绩(整数,0-100 分)
根据成绩输出对应等级:
90-100 分:优秀
80-89 分:良好
70-79 分:中等
60-69 分:及格
0-59 分:不及格
检查输入成绩的合法性(成绩必须在 0-100 之间)
必须使用if-else if 多分支语句实现等级判断
程序要有清晰的输入提示和输出格式
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$