内容正文:
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第4卷,按《C语言程序设计》范围和要求编写。具体内容为:
理解关系表达式和逻辑表达式。
山东省《软件与应用技术类考纲百套卷》 第4卷
《C语言程序设计》
关系表达式和逻辑表达式 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.在C语言中,关系表达式 5 > 3 的值是( )
A. 0 B. 1
C. 5 D. 3
【答案】B
【解析】关系表达式成立返回 1,不成立返回 0,5>3 成立
2.表达式 !(5 > 3) 的值是( )
A. 0 B. 1
C. -1 D. 2
【答案】A
【解析】逻辑非!对真取反得假,!(1)=0
3.若有定义 int a = 5, b = 3, c = 2;,则表达式 a > b && b > c 的值为( )
A. 0 B. 1
C. 5 D. 3
【答案】B
【解析】逻辑与 && 两边均为真时结果为 1,5>3 且 3>2 均成立
4.表达式 5 == 5 || 3 > 4 的值是( )
A. 0 B. 1
C. 5 D. 3
【答案】
【解析】逻辑或运算符只要一边为真,结果为 1,5==5 成立,表达式为1
5.在C语言中,以下运算符优先级最高的是( )
A. && B. ||
C. > D. !
【答案】D
【解析】单目运算符(!、++、-- 等)> 算术运算符 > 位运算符 > 关系运算符> 逻辑与(&&)> 逻辑或(||)> 三目运算符 > 赋值运算符
6.若有定义 int x = 0;,则表达式 !x 的值是( )
A. 0 B. 1
C. -1 D. 不确定
【答案】B
【解析】0 为假,对 0 取非得真,值为 1
7.表达式 3 < 5 < 1在C语言中的值是( )
A. 0 B. 1
C. 2 D. 语法错误
【答案】A
【解析】关系运算符左结合,先算 3<5 得 1,再算 1<1 得 0
8.若有定义 int a = 10, b = 20;,则表达式 a = b > 15 执行后,a的值是( )
A. 0 B. 10
C. 1 D. 20
【答案】C
【解析】赋值优先级低于关系运算,先算 b>15 得 1,再赋值给 a
9.在C语言中,逻辑与运算符是( )
A. & B. &&
C. | D. ||
【答案】B
【解析】逻辑与为 &&,& 是按位与运算符
10.下列运算符中,优先级最高的是( )
A. && B. || C. ! D. ==
【答案】C
【解析】单目逻辑非!优先级高于双目关系和逻辑运算符
11.设int a=3,b=4,c=5;,则表达式a+b>c&&b==c的值为( )
A. 0 B. 1 C. 3 D. 4
【答案】A
【解析】先算 a+b=7>5 得 1,再算 b==c 得 0,1&&0=0
12.逻辑运算符两侧运算对象的数据类型( )
A. 只能是 0 或 1 B. 只能是 0 或非 0 整数
C. 只能是整型或字符型 D. 可以是任意类型
【答案】D
【解析】C 语言中任意非 0 值视为真,0 视为假,运算对象可为任意类型
13.在 C 语言中,判断字符型变量 c 是否为大写英文字母的正确表达式是( )
A. 'A'<=c<='Z' B. c>='A'&&c<='Z'
C. c>='A'||c<='Z' D. (c>='A')&(c<='Z')
【答案】B
【解析】需用逻辑与连接两个关系表达式,A 是数学写法不被 C 语言支持
14.能正确表示 "闰年" 条件的表达式是(闰年:能被 4 整除但不能被 100 整除,或者能被 400 整除)( )
A. year%4==0&&year%100!=0||year%400==0
B. year%4==0||year%100!=0&&year%400==0
C. year%4==0&&year%400!=0||year%100==0
D. year%4==0||year%400==0
【答案】A
【解析】 &&优先级高于||,表达式自动等价于:(year%4==0 && year%100!=0) || year%400==0)
15.设int a=5,b=0,c=2;,则表达式a&&b||c的值为( )
A. 0 B. 1 C. 2 D. 5
【答案】B
【解析】先算 a&&b,a=5 为真,b=0 为假,逻辑与结果为 0;再算 0||c,c=2 为真,逻辑或结果为 1
16.设int a=1,b=2,c=3,d=4;,则表达式a<b?a:c<d?c:d的值为( )
A. 1 B. 2 C. 3 D. 4
【答案】A
【解析】三目运算符为右结合,先计算右侧的c<d?c:d,c=3<d=4 成立,取 c 的值 3;再计算a<b?a:3,a=1<b=2 成立,取 a 的值 1
17.在C语言中,关系运算符的结合性是( )
A. 从左到右 B. 从右到左
C. 无结合性 D. 根据优先级决定
【答案】A
【解析】所有双目关系运算符(>、<、>=、<=、==、!=)的结合性都是从左到右
18.表达式 5 > 3 ? 1 : 0 的值是( )
A. 0 B. 1
C. 5 D. 3
【答案】B
【解析】三目运算符的规则是:条件成立返回冒号前的值,不成立返回冒号后的值。5>3 成立,因此返回 1
19.下列关于 C 语言逻辑运算符的描述中,错误的是( )
A. 逻辑与运算符 && 的优先级高于逻辑或运算符 ||
B. 逻辑非运算符!是单目运算符
C. 逻辑表达式的值只能是 0 或 1
D. 逻辑与运算符 && 和逻辑或运算符 || 都是单目运算符
【答案】D
【解析】逻辑与 && 和逻辑或 || 都是双目运算符,需要两个运算对象
20.下列表达式中,与!(x>0&&y<0)等价的是( )
A. x>0||y<0 B. x<=0&&y>=0
C. x<=0||y>=0 D. x>0&&y<0
【答案】C
【解析】!(A&&B)等价于!A||!B。因此!(x>0&&y<0)等价于!(x>0) || !(y<0),即x<=0||y>=0
二、简答题(本大题共2小题,每题10分,共20分)
1.请简述 C 语言中关系表达式和逻辑表达式的概念,并说明它们的返回值特点。
【答案】
关系表达式:用关系运算符(>、<、>=、<=、==、!=)将两个表达式连接起来的式子,用于比较两个值的大小关系或相等关系。
逻辑表达式:用逻辑运算符(!、&&、||)将关系表达式、逻辑值或其他表达式连接起来的式子,用于表示复杂的逻辑判断条件。
返回值特点:在 C 语言中,关系表达式和逻辑表达式的返回值都是 int 类型,当表达式成立(为真)时返回 1,当表达式不成立(为假)时返回 0。
2.什么是短路求值?请说明C语言中逻辑与(&&)和逻辑或(||)运算符的短路求值特性。
【答案】
在计算逻辑表达式时,如果根据前面部分的运算结果已经能够确定整个表达式的最终值,就不再执行后面部分的运算。
当 && 左边的表达式为假时,整个逻辑与表达式的值一定为假,因此不再计算右边的表达式。
当 || 左边的表达式为真时,整个逻辑或表达式的值一定为真,因此不再计算右边的表达式。
三、案例分析题(本大题共1小题,每题10分,共10分)
1.阅读以下 C 语言程序,回答问题:
#include <stdio.h>
int main()
{
int a=1,b=2,c=3,d=4;
int m=1,n=1;
(m=a>b)&&(n=c>d);
printf("m=%d,n=%d
",m,n);
m=1,n=1;
(m=a<b)||(n=c<d);
printf("m=%d,n=%d
",m,n);
return 0;
}
(1)程序的输出结果是什么?
(2)请详细分析每一个表达式的执行过程,重点说明短路求值是如何体现的?
【答案】
(1) m=0,n=1
m=1,n=1
(2)第一个表达式(m=a>b)&&(n=c>d):
首先计算括号内的a>b,a=1,b=2,1>2 不成立,结果为 0;将 0 赋值给变量 m,此时 m=0。由于逻辑与 && 左边的结果为假,发生短路求值,右边的(n=c>d)不会被执行,因此 n 的值保持初始值 1 不变。
第二个表达式(m=a<b)||(n=c<d):
首先计算括号内的a<b,a=1,b=2,1<2 成立,结果为 1;将 1 赋值给变量 m,此时 m=1。由于逻辑或 || 左边的结果为真,发生短路求值,右边的(n=c<d)不会被执行,因此 n 的值保持初始值 1 不变。
四、综合应用题(本大题共1小题,每题10分,共10分)
1.阅读以下 C 语言程序,回答问题:
#include <stdio.h>
int main()
{
int a=0,b=1,c=2,d=3;
int result1, result2, result3;
result1 = a++ && b++ || c++;
printf("result1=%d, a=%d, b=%d, c=%d
", result1, a, b, c);
result2 = ++a || --b && --c;
printf("result2=%d, a=%d, b=%d, c=%d
", result2, a, b, c);
result3 = !(a>b) && (c<d) || (d==0);
printf("result3=%d
", result3);
return 0;
}
请写出程序运行后的完整输出结果。
【答案】
result1=1, a=1, b=1, c=3
result2=1, a=2, b=1, c=3
result3=0
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第4卷,按《C语言程序设计》范围和要求编写。具体内容为:
理解关系表达式和逻辑表达式。
山东省《软件与应用技术类考纲百套卷》 第4卷
《C语言程序设计》
关系表达式和逻辑表达式 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.在C语言中,关系表达式 5 > 3 的值是( )
A. 0 B. 1
C. 5 D. 3
2.表达式 !(5 > 3) 的值是( )
A. 0 B. 1
C. -1 D. 2
3.若有定义 int a = 5, b = 3, c = 2;,则表达式 a > b && b > c 的值为( )
A. 0 B. 1
C. 5 D. 3
4.表达式 5 == 5 || 3 > 4 的值是( )
A. 0 B. 1
C. 5 D. 3
5.在C语言中,以下运算符优先级最高的是( )
A. && B. ||
C. > D. !
6.若有定义 int x = 0;,则表达式 !x 的值是( )
A. 0 B. 1
C. -1 D. 不确定
7.表达式 3 < 5 < 1在C语言中的值是( )
A. 0 B. 1
C. 2 D. 语法错误
8.若有定义 int a = 10, b = 20;,则表达式 a = b > 15 执行后,a的值是( )
A. 0 B. 10
C. 1 D. 20
9.在C语言中,逻辑与运算符是( )
A. & B. &&
C. | D. ||
10.下列运算符中,优先级最高的是( )
A. && B. || C. ! D. ==
11.设int a=3,b=4,c=5;,则表达式a+b>c&&b==c的值为( )
A. 0 B. 1 C. 3 D. 4
12.逻辑运算符两侧运算对象的数据类型( )
A. 只能是 0 或 1 B. 只能是 0 或非 0 整数
C. 只能是整型或字符型 D. 可以是任意类型
13.在 C 语言中,判断字符型变量 c 是否为大写英文字母的正确表达式是( )
A. 'A'<=c<='Z' B. c>='A'&&c<='Z'
C. c>='A'||c<='Z' D. (c>='A')&(c<='Z')
14.能正确表示 "闰年" 条件的表达式是(闰年:能被 4 整除但不能被 100 整除,或者能被 400 整除)( )
A. year%4==0&&year%100!=0||year%400==0
B. year%4==0||year%100!=0&&year%400==0
C. year%4==0&&year%400!=0||year%100==0
D. year%4==0||year%400==0
15.设int a=5,b=0,c=2;,则表达式a&&b||c的值为( )
A. 0 B. 1 C. 2 D. 5
16.设int a=1,b=2,c=3,d=4;,则表达式a<b?a:c<d?c:d的值为( )
A. 1 B. 2 C. 3 D. 4
17.在C语言中,关系运算符的结合性是( )
A. 从左到右 B. 从右到左
C. 无结合性 D. 根据优先级决定
18.表达式 5 > 3 ? 1 : 0 的值是( )
A. 0 B. 1
C. 5 D. 3
19.下列关于 C 语言逻辑运算符的描述中,错误的是( )
A. 逻辑与运算符 && 的优先级高于逻辑或运算符 ||
B. 逻辑非运算符!是单目运算符
C. 逻辑表达式的值只能是 0 或 1
D. 逻辑与运算符 && 和逻辑或运算符 || 都是单目运算符
20.下列表达式中,与!(x>0&&y<0)等价的是( )
A. x>0||y<0 B. x<=0&&y>=0
C. x<=0||y>=0 D. x>0&&y<0
二、简答题(本大题共2小题,每题10分,共20分)
1.请简述 C 语言中关系表达式和逻辑表达式的概念,并说明它们的返回值特点。
2.什么是短路求值?请说明C语言中逻辑与(&&)和逻辑或(||)运算符的短路求值特性。
三、案例分析题(本大题共1小题,每题10分,共10分)
1.阅读以下 C 语言程序,回答问题:
#include <stdio.h>
int main()
{
int a=1,b=2,c=3,d=4;
int m=1,n=1;
(m=a>b)&&(n=c>d);
printf("m=%d,n=%d
",m,n);
m=1,n=1;
(m=a<b)||(n=c<d);
printf("m=%d,n=%d
",m,n);
return 0;
}
(1)程序的输出结果是什么?
(2)请详细分析每一个表达式的执行过程,重点说明短路求值是如何体现的?
四、综合应用题(本大题共1小题,每题10分,共10分)
1.阅读以下 C 语言程序,回答问题:
#include <stdio.h>
int main()
{
int a=0,b=1,c=2,d=3;
int result1, result2, result3;
result1 = a++ && b++ || c++;
printf("result1=%d, a=%d, b=%d, c=%d
", result1, a, b, c);
result2 = ++a || --b && --c;
printf("result2=%d, a=%d, b=%d, c=%d
", result2, a, b, c);
result3 = !(a>b) && (c<d) || (d==0);
printf("result3=%d
", result3);
return 0;
}
请写出程序运行后的完整输出结果。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$