内容正文:
编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第69卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①关系运算符;②关系表达式;③逻辑运算符;④逻辑表达式。
湖南省《计算机应用类专业综合考纲百套卷》 第69卷
《计算机编程语言——C语言》
关系运算和逻辑运算
考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共30小题,每题2分,共60分)
1.(2020年)在C语言中,用( )表示逻辑值“真”。
A. T B. F C.非零整数 D.0
2.若变量已正确定义,以下表达式中不符合C语言语法的是( )
A. a > b == c B.(3.14 % 2)&&b <= c
C. a >= b && b <= c D. !(a > b)
3.设 int a = 5, b = 4, c = 6;,则关系表达式 a > b > c 的值为( )
A. 1 B. 0 C. 语法错误 D. 不确定
4.设 int x = 10;,执行语句 printf("%d", x > 5 && x < 20); 后,屏幕输出结果是( )
A. 1 B. 0 C. 10 D. 编译报错
5.设 int a = 0, b = 5;,表达式 a && b++ 执行后,b 的值是( )
A. 4 B. 5 C. 6 D. 1
6.设 int a = 3, b = 4;,表达式 !(a > b) && !b 的值为( )
A. 1 B. 0 C. 3 D. 4
7.设 int m = 7, n = 8;,以下能正确表示“m和n同时为正或同时为负”的逻辑表达式是( )
A. m > 0 && n > 0 || m < 0 && n < 0
B. m * n > 0
C. (m > 0 && n > 0) || (m < 0 && n < 0)
D. 以上都对
8.设 int x = 2, y = 3;,表达式 x == y || x + 1 == y 的值为( )
A. 0 B. 1 C. 2 D. 3
9.设 int i = 1, j = 2;,与表达式 i == 0 && j == 0 等价的表达式是( )
A. !i && !J B. !(i || j) C. i == j D. !i == !j
10.设 int x = 10;,判断 x 是偶数的正确表达式是( )
A. x % 2 = 0 B. x / 2 == 0
C. x % 2 == 0 D. !(x % 2==0)
11.设 int a = 10, b = 20;,表达式 a > b || a++ > 5 执行后,a 的值是( )
A. 10 B. 11 C. 20 D. 21
12.以下( )表达式能正确表示数学关系 x ≥ 10 或 x ≤ 0。
A. x >= 10 | x <= 0 B. x >= 10 && x <= 0
C. x >= 10 || x <= 0 D. x >= 10 or x <= 0
13.设 int x = 5;,表达式 !(x > 0) && !(x < 10) 的值为( )
A. 1 B. 0 C. 5 D. -1
14.以下( )表达式能正确表示“a不等于b且c大于0”。
A. a != b && c > 0 B. a <> b && c > 0
C. !(a == b) & c > 0 D. a != b and c > 0
15.设 int x = 5;,表达式 x > 0 && x < 10 && x != 5 的值为( )
A. 1 B. 0 C. 5 D. -1
16.已知int a=1,b=0,c=1;,表达式(a&&b)&&!c || a+b的值为( )
A. 1 B. 0 C. 2 D. -1
17.已知int x=4,y=5;,表达式x*2>y || y-x<0的值为( )
A. 1 B. 0 C. 8 D. 1
18.已知int a=2,b=3,c=4;,表达式a+b*c != b+c*a && a*b<c的值为( )
A. 1 B. 0 C. 14 D. 6
19.设 int a = 1, b = 1, c = 1;,执行表达式 (a++ > 0) && (++b > 0) || (c++ > 0) 后,变量 a, b, c 的值分别为( )
A. 2, 2, 2 B. 2, 2, 1 C. 1, 2, 2 D. 2, 1, 1
20.已知 int x = 5, y = 4, z = 6;,以下关系表达式中,计算结果为真(非0)的是( )
A. x > y > z B. x > y && y > z
C. x > y == z D. !(x < y) < z
21.在C语言中,判断年份 year 是否为闰年的标准逻辑是“能被4整除但不能被100整除,或者能被400整除”。以下表达式能最严谨且无副作用地表示该逻辑的是( )
A. year % 4 == 0 || year % 100 != 0 || year % 400 == 0
B. !(year % 4) && !(year % 100) || !(year % 400)
C. (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
D. year % 400 == 0 && year % 4 == 0 && year % 100 != 0
22.设 int a = 3, b = 4, c = 5;,表达式 !(a > b) && !c || 1 的计算结果为( )
A. 0 B. 1 C. 3 D. 5
23.若有定义 int k=7, x=12;,则能使值为 3 的表达式是( )
A. x%=(k%=5) B. x%=(k-k%5)
C. x%=k-k%5 D. (x%=k)-(k%=5)
24.设有说明语句 int a=1, b=2, c=3, d=4, m=2, n=2;,执行 (m=a>b) && (n=c>d) 后,n 的值为( )
A. 1 B. 2 C. 3 D. 0
25.设 int a=1, b=2, c=3, d=4;,执行 (d=a>b) && (c=5) 后,c 和 d 的值分别是( )
A. 3, 0 B. 5, 0 C. 3, 1 D. 5, 1
26.设 int x=10, y=20, z=30;,执行 x<y && (z=50) || (z=60) 后,z 的值是( )
A. 30 B. 50 C. 60 D. 1
27.设 int i=1, j=2, k=3;,表达式 i++ && j++ || k++ 执行后,i, j, k 的值分别为( )
A. 2, 3, 3 B. 2, 2, 4 C. 2, 3, 4 D. 1, 2, 3
28.设 int a=0, b=1;,执行 (a=1) || (b=2) && (a=3) 后,a, b 的值是( )
A. 1, 1 B. 3, 2 C. 1, 2 D. 3, 1
29.设 int a=3, b=4, c=5;,表达式 !(a+b)+c-1 && b+c/2 的值是( )
A. 1 B. 0 C. 2 D. 3
30.设 int a=1, b=1;,执行 !a++ && !b++ 后,a, b 的值是( )
A. 2, 1 B. 2, 2 C. 1, 1 D. 1, 2
二、程序运行结果题(本大题共20小题。每空2分,合计40分)
1.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int a=3,b=4,c=5;
int res = a++>4 && ++b>3 && c++>4;
printf("%d %d %d %d",a,b,c,res);
return 0;
}
2.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int a=1,b=2,c=3;
int res = a--<1 && b++>2 || c--<3;
printf("%d %d %d %d",a,b,c,res);
return 0;
}
3.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int a=2,b=3,c=4;
int f1 = a>1, f2 = b>2, f3 = c>3;
int r = f1 && f2 || f3 && !(f1&&f2);
printf("%d",r);
return 0;
}
4.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int y=2013,days;
int leap = (y%4==0&&y%100!=0)||y%400==0;
int notLeap = !leap;
days = 365 + leap;
printf("%d
",notLeap);
printf("%d",days);
return 0;
}
5.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int x=30;
int res = x%3==0 && x%5==0;
printf("%d",res);
return 0;
}
6.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int x=60;
int com = x%3==0&&x%5==0;
int val = x * com;
printf("%d,",com);
printf("%d",val);
return 0;
}
7.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int s=86;
int ok = s>=0&&s<=100;
int mark = ok * (s/10);
printf("%d,",ok);
printf("%d",mark);
return 0;
}
8.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
char ch='Y';
int upper = ch>='A'&&ch<='Z';
int code = ch + upper;
printf("%d ",upper);
printf("%d",code);
return 0;
}
9.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
char ch='z';
int lower = ch>='a'&&ch<='z';
char up = ch - 32 * lower;
printf("%d-",lower);
printf("%c",up);
return 0;
}
10.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
char ch='7';
int digit = ch>='0'&&ch<='9';
int num = (ch-'0') * digit;
printf("%d+",digit);
printf("%d",num);
return 0;
}
11.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
char ch='@';
int letter = (ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z');
int num = ch>='0'&&ch<='9';
int other = !letter&&!num;
printf("%d ",letter);
printf("%d ",num);
printf("%d",other);
return 0;
}
12.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int a=6,b=8,c=10;
int right = a*a+b*b==c*c;
int s = a*b/2 * right;
printf("%d ",right);
printf("%d",s);
return 0;
}
13.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int x=48;
int even = x%2==0;
int pos = x>0;
int ok = even&&pos;
int res = x * ok / 4;
printf("%d ",even);
printf("%d ",pos);
printf("%d",res);
return 0;
}
14.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int num1 = 4, num2 = 6, num3 = 8;
int f = num1 % 2 && num2++ % 2 || !(num3 % 2);
printf("%d %d %d-", num1, num2, num3);
printf("%d", f);
return 0;
}
15.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int h = 24, min = 15;
int hOk = h >= 0 && h <= 23;
int mOk = min >= 0 && min <= 59;
int timeOk = hOk && mOk;
printf("小时合法:%d
", hOk);
printf("分钟合法:%d
", mOk);
printf("整体时间合法:%d", timeOk);
return 0;
}
16.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int x = 0, y = 9;
int allZero = x == 0 && y == 0;
int noZero = x != 0 && y != 0;
int hasZero = x == 0 || y == 0;
printf("全为0:%d
", allZero);
printf("全非0:%d
", noZero);
printf("存在0:%d", hasZero);
return 0;
}
17.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int n = 38;
int twoBit = n >= 10 && n <= 99;
int even = n % 2 == 0;
int target = twoBit && even;
int rev = n % 10 * 10 + n / 10;
printf("两位数:%d
", twoBit);
printf("偶数:%d
", even);
printf("两位偶数:%d
", target);
printf("数字逆序:%d", rev);
return 0;
}
18.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
char c = '#';
int letter = (c>='A'&&c<='Z') || (c>='a'&&c<='z');
int digit = c >= '0' && c <= '9';
int symbol = !letter && !digit;
int code = c;
printf("字母:%d,", letter);
printf("数字:%d,", digit);
printf("符号:%d,", symbol);
printf("ASCII码:%d", code);
return 0;
}
19.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int x=5,y=6,z=7;
printf("%d ", 1.0/3*3 == 1.0);
printf("%d ", x+y > z*2);
printf("%d ", (x>=y) == (y<=z));
printf("%d
", 'A' < 'a');
return 0;
}
20.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int a = 2, b = 5, c = 1;
printf("%d ", a++ + b > c * 4 && !(b - a > 3));
printf("%d ", (a > c) || (b < a) && (c + a == b - 2));
printf("%d %d %d", a, b, c);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:湖南省普通高校对口招生专业理论考试《计算机应用类专业综合考纲百套卷》,依据《湖南省普通高校对口招生计算机应用类专业综合知识基本要求及考试大纲》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第69卷,按《计算机编程语言——C语言》范围和要求编写。具体内容为:①关系运算符;②关系表达式;③逻辑运算符;④逻辑表达式。
湖南省《计算机应用类专业综合考纲百套卷》 第69卷
《计算机编程语言——C语言》
关系运算和逻辑运算
考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、单项选择题(本大题共30小题,每题2分,共60分)
1.(2020年)在C语言中,用( )表示逻辑值“真”。
A. T B. F C.非零整数 D.0
【答案】C
【解析】C语言中没有专门的布尔类型,规定以 0 表示“假”,以 非0(包括正负整数)表示“真”。逻辑运算的结果若为真,统一输出整数1;但在条件判断中,任何非零值均被视为真。
2.若变量已正确定义,以下表达式中不符合C语言语法的是( )
A. a > b == c B.(3.14 % 2)&&b <= c
C. a >= b && b <= c D. !(a > b)
【答案】B
【解析】取余运算符 % 要求其两侧的运算对象必须是整型数据,3.14 是浮点型,因此 3.14 % 2 语法错误。
3.设 int a = 5, b = 4, c = 6;,则关系表达式 a > b > c 的值为( )
A. 1 B. 0 C. 语法错误 D. 不确定
【答案】B
【解析】C语言中关系运算符的结合性为从左到右。先计算 a > b,即 5 > 4,结果为真(1);再计算 1 > c,即 1 > 6,结果为假(0)。
4.设 int x = 10;,执行语句 printf("%d", x > 5 && x < 20); 后,屏幕输出结果是( )
A. 1 B. 0 C. 10 D. 编译报错
【答案】A
【解析】x > 5 为真(1),x < 20 为真(1),逻辑与 && 两侧均为真,整体结果为真,C语言中用 1 表示真。
5.设 int a = 0, b = 5;,表达式 a && b++ 执行后,b 的值是( )
A. 4 B. 5 C. 6 D. 1
【答案】B
【解析】逻辑与 && 具有短路特性。左侧 a 为 0(假),系统直接判定整个表达式为假,不再计算右侧的 b++,因此 b 的值保持为 5。
6.设 int a = 3, b = 4;,表达式 !(a > b) && !b 的值为( )
A. 1 B. 0 C. 3 D. 4
【答案】B
【解析】a > b 为假,!(a > b) 为真(1);b 为 4(非零,为真),!b 为假(0)。1 && 0 结果为 0。
7.设 int m = 7, n = 8;,以下能正确表示“m和n同时为正或同时为负”的逻辑表达式是( )
A. m > 0 && n > 0 || m < 0 && n < 0
B. m * n > 0
C. (m > 0 && n > 0) || (m < 0 && n < 0)
D. 以上都对
【答案】D
【解析】A选项由于 && 优先级高于 ||,等价于C选项;B选项中两数同号相乘必大于0,也正确。
8.设 int x = 2, y = 3;,表达式 x == y || x + 1 == y 的值为( )
A. 0 B. 1 C. 2 D. 3
【答案】B
【解析】x == y 即 2 == 3 为假(0);x + 1 == y 即 3 == 3 为真(1)。0 || 1 结果为 1。
9.设 int i = 1, j = 2;,与表达式 i == 0 && j == 0 等价的表达式是( )
A. !i && !J B. !(i || j) C. i == j D. !i == !j
【答案】A
【解析】i == 0 等价于 !i,j == 0 等价于 !j,因此原式等价于 !i && !j。
10.设 int x = 10;,判断 x 是偶数的正确表达式是( )
A. x % 2 = 0 B. x / 2 == 0
C. x % 2 == 0 D. !(x % 2==0)
【答案】C
【解析】判断偶数的数学逻辑是“除以2的余数为0”。在C语言中,取余运算符为 %,关系运算符为 ==,因此正确的关系表达式为 x % 2 == 0。选项A使用了赋值运算符 =,属于语法错误;选项B判断的是 x 是否为0或1;选项D的逻辑恰好相反,判断的是奇数。
11.设 int a = 10, b = 20;,表达式 a > b || a++ > 5 执行后,a 的值是( )
A. 10 B. 11 C. 20 D. 21
【答案】B
【解析】a > b 即 10 > 20 为假。由于是 || 运算,左侧为假,必须计算右侧。执行 a++ > 5,a 自增为 11。
12.以下( )表达式能正确表示数学关系 x ≥ 10 或 x ≤ 0。
A. x >= 10 | x <= 0 B. x >= 10 && x <= 0
C. x >= 10 || x <= 0 D. x >= 10 or x <= 0
【答案】C
【解析】 C语言中逻辑或运算符为 ||,| 是按位或,or 不是C语言关键字。
13.设 int x = 5;,表达式 !(x > 0) && !(x < 10) 的值为( )
A. 1 B. 0 C. 5 D. -1
【答案】B
【解析】x > 0 为真,!(x > 0) 为假;x < 10 为真,!(x < 10) 为假。假 && 假 结果为 0。
14.以下( )表达式能正确表示“a不等于b且c大于0”。
A. a != b && c > 0 B. a <> b && c > 0
C. !(a == b) & c > 0 D. a != b and c > 0
【答案】A
【解析】C语言中不等于用 !=,逻辑与用 &&。
15.设 int x = 5;,表达式 x > 0 && x < 10 && x != 5 的值为( )
A. 1 B. 0 C. 5 D. -1
【答案】B
【解析】前两个条件为真,但 x != 5 为假,真 && 真 && 假 结果为 0。
16.已知int a=1,b=0,c=1;,表达式(a&&b)&&!c || a+b的值为( )
A. 1 B. 0 C. 2 D. -1
【答案】A
【解析】a&&b=0,0&&!c=0,0||1=1。
17.已知int x=4,y=5;,表达式x*2>y || y-x<0的值为( )
A. 1 B. 0 C. 8 D. 1
【答案】A
【解析】8>5成立,逻辑或结果为 1。
18.已知int a=2,b=3,c=4;,表达式a+b*c != b+c*a && a*b<c的值为( )
A. 1 B. 0 C. 14 D. 6
【答案】B
【解析】算术运算优先,a+b*c=14,b+c*a=11,14!=11=1;a*b=6<c=4=0;1&&0=0。
19.设 int a = 1, b = 1, c = 1;,执行表达式 (a++ > 0) && (++b > 0) || (c++ > 0) 后,变量 a, b, c 的值分别为( )
A. 2, 2, 2 B. 2, 2, 1 C. 1, 2, 2 D. 2, 1, 1
【答案】B
【解析】&&优先级高于||。先算a++>0,条件成立,a自增为2;继续算++b>0,b自增为2,&&整体为真。接着算||,因左侧已为真触发短路,右侧c++>0不执行,c保持1。最终a=2,b=2,c=1。
20.已知 int x = 5, y = 4, z = 6;,以下关系表达式中,计算结果为真(非0)的是( )
A. x > y > z B. x > y && y > z
C. x > y == z D. !(x < y) < z
【答案】D
【解析】A项先算x>y得1,再算1>z(即1>6)为假;B项y>z(即4>6)为假,整体为假;C项先算x>y得1,再算1==z(即1==6)为假;D项先算!(x<y)即!(5<4)得1,再算1<z(即1<6)为真。
21.在C语言中,判断年份 year 是否为闰年的标准逻辑是“能被4整除但不能被100整除,或者能被400整除”。以下表达式能最严谨且无副作用地表示该逻辑的是( )
A. year % 4 == 0 || year % 100 != 0 || year % 400 == 0
B. !(year % 4) && !(year % 100) || !(year % 400)
C. (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)
D. year % 400 == 0 && year % 4 == 0 && year % 100 != 0
【答案】C
【解析】A项全用||,D项全用&&,逻辑均错误;B项,!(year % 100) 实际表示的是“能被100整除”,与闰年要求的“不能被100整除”逻辑恰好相反。C项用括号明确划分“能被4整除且不能被100整除”与“能被400整除”两个条件,再用||连接,完全符合闰年定义,结构最清晰严谨。
22.设 int a = 3, b = 4, c = 5;,表达式 !(a > b) && !c || 1 的计算结果为( )
A. 0 B. 1 C. 3 D. 5
【答案】B
【解析】运算符优先级:! > > > && > ||。首先计算 !(a > b),3 > 4 为假,取反后为真(1)。接着计算 !c,c 为 5(真),取反后为假(0)。然后计算 1 && 0,结果为假(0)。最后计算 0 || 1,由于逻辑或右侧为真,整体结果为真(1)。
23.若有定义 int k=7, x=12;,则能使值为 3 的表达式是( )
A. x%=(k%=5) B. x%=(k-k%5)
C. x%=k-k%5 D. (x%=k)-(k%=5)
【答案】D
【解析】A: k%=5->2, x%=2->0。B: k%5->2, k-2->5, x%=5->2。C: 同B。D: 左边 x%=k 即 12%7 得 5 (此时x变为5);右边 k%=5 即 7%5 得 2 (此时k变为2);最后 5-2 得 3。
24.设有说明语句 int a=1, b=2, c=3, d=4, m=2, n=2;,执行 (m=a>b) && (n=c>d) 后,n 的值为( )
A. 1 B. 2 C. 3 D. 0
【答案】B
【解析】先算 && 左边:a>b (1>2) 为 0,赋值给 m,m=0。因为 && 左边为 0(假),发生短路,右边的 (n=c>d) 不再执行。因此 n 保持原值 2。
25.设 int a=1, b=2, c=3, d=4;,执行 (d=a>b) && (c=5) 后,c 和 d 的值分别是( )
A. 3, 0 B. 5, 0 C. 3, 1 D. 5, 1
【答案】A
【解析】a>b (1>2) 为假(0),赋给 d,所以 d=0。由于 && 左侧为 0,右侧 c=5 被跳过,c 保持原值 3。
26.设 int x=10, y=20, z=30;,执行 x<y && (z=50) || (z=60) 后,z 的值是( )
A. 30 B. 50 C. 60 D. 1
【答案】B
【解析】 优先级 && > ||。先算 x<y (10<20) 为真(1)。
继续算 && 的右边 (z=50),z 变为 50,表达式值为 50 (真)。
此时 && 整体结果为真。
接着算 ||。因为 || 左边(即前面的 && 结果)为真,发生短路。
右边的 (z=60) 不执行。z 最终为 50。
27.设 int i=1, j=2, k=3;,表达式 i++ && j++ || k++ 执行后,i, j, k 的值分别为( )
A. 2, 3, 3 B. 2, 2, 4 C. 2, 3, 4 D. 1, 2, 3
【答案】A
【解析】i++:值为 1 (真),i 变为 2。
&& 左侧为真,继续算右侧 j++:值为 2 (真),j 变为 3。
&& 整体为真。 || 左侧为真,发生短路,k++ 不执行,k 保持 3。
28.设 int a=0, b=1;,执行 (a=1) || (b=2) && (a=3) 后,a, b 的值是( )
A. 1, 1 B. 3, 2 C. 1, 2 D. 3, 1
【答案】A
【解析】优先级 && > ||,但在求值时是从左往右扫描。
表达式逻辑结构:Left || Right。
计算 Left: (a=1),a 变为 1,值为 1 (真)。
因为 || 左侧为真,直接判定整个表达式为真,右侧完全不执行。
右侧包含了 (b=2) && (a=3),这部分全部被跳过。结果:a=1, b=1。
29.设 int a=3, b=4, c=5;,表达式 !(a+b)+c-1 && b+c/2 的值是( )
A. 1 B. 0 C. 2 D. 3
【答案】A
【解析】先算算术运算:a+b=7,c/2=2(整除),b+c/2=6。再算逻辑运算:!(a+b)即!7为0,0+c-1=4,4 && 6两边均为非0,结果为1。
30.设 int a=1, b=1;,执行 !a++ && !b++ 后,a, b 的值是( )
A. 2, 1 B. 2, 2 C. 1, 1 D. 1, 2
【答案】A
【解析】!优先级高于++,先算!a++。a++为后置自增,先取a的原值1,!1为0,随后a自增为1+1=2。由于&&左侧为0,触发短路求值,右侧!b++不执行,b保持原值1。最终a=2,b=1。
二、程序运行结果题(本大题共20小题。每空2分,合计40分)
1.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int a=3,b=4,c=5;
int res = a++>4 && ++b>3 && c++>4;
printf("%d %d %d %d",a,b,c,res);
return 0;
}
【答案】4 4 5 0
2.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int a=1,b=2,c=3;
int res = a--<1 && b++>2 || c--<3;
printf("%d %d %d %d",a,b,c,res);
return 0;
}
【答案】0 2 2 0
3.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int a=2,b=3,c=4;
int f1 = a>1, f2 = b>2, f3 = c>3;
int r = f1 && f2 || f3 && !(f1&&f2);
printf("%d",r);
return 0;
}
【答案】1
4.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int y=2013,days;
int leap = (y%4==0&&y%100!=0)||y%400==0;
int notLeap = !leap;
days = 365 + leap;
printf("%d
",notLeap);
printf("%d",days);
return 0;
}
【答案】
1
365
5.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int x=30;
int res = x%3==0 && x%5==0;
printf("%d",res);
return 0;
}
【答案】1
6.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int x=60;
int com = x%3==0&&x%5==0;
int val = x * com;
printf("%d,",com);
printf("%d",val);
return 0;
}
【答案】1,60
7.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int s=86;
int ok = s>=0&&s<=100;
int mark = ok * (s/10);
printf("%d,",ok);
printf("%d",mark);
return 0;
}
【答案】1,8
8.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
char ch='Y';
int upper = ch>='A'&&ch<='Z';
int code = ch + upper;
printf("%d ",upper);
printf("%d",code);
return 0;
}
【答案】1 90
9.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
char ch='z';
int lower = ch>='a'&&ch<='z';
char up = ch - 32 * lower;
printf("%d-",lower);
printf("%c",up);
return 0;
}
【答案】1-Z
10.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
char ch='7';
int digit = ch>='0'&&ch<='9';
int num = (ch-'0') * digit;
printf("%d+",digit);
printf("%d",num);
return 0;
}
【答案】1+7
11.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
char ch='@';
int letter = (ch>='A'&&ch<='Z')||(ch>='a'&&ch<='z');
int num = ch>='0'&&ch<='9';
int other = !letter&&!num;
printf("%d ",letter);
printf("%d ",num);
printf("%d",other);
return 0;
}
【答案】0 0 1
12.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int a=6,b=8,c=10;
int right = a*a+b*b==c*c;
int s = a*b/2 * right;
printf("%d ",right);
printf("%d",s);
return 0;
}
【答案】1 24
13.下列程序的运行结果是__________________。
#include <stdio.h>
int main(){
int x=48;
int even = x%2==0;
int pos = x>0;
int ok = even&&pos;
int res = x * ok / 4;
printf("%d ",even);
printf("%d ",pos);
printf("%d",res);
return 0;
}
【答案】1 1 12
14.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int num1 = 4, num2 = 6, num3 = 8;
int f = num1 % 2 && num2++ % 2 || !(num3 % 2);
printf("%d %d %d-", num1, num2, num3);
printf("%d", f);
return 0;
}
【答案】4 6 8-1
15.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int h = 24, min = 15;
int hOk = h >= 0 && h <= 23;
int mOk = min >= 0 && min <= 59;
int timeOk = hOk && mOk;
printf("小时合法:%d
", hOk);
printf("分钟合法:%d
", mOk);
printf("整体时间合法:%d", timeOk);
return 0;
}
【答案】
小时合法:0
分钟合法:1
整体时间合法:0
16.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int x = 0, y = 9;
int allZero = x == 0 && y == 0;
int noZero = x != 0 && y != 0;
int hasZero = x == 0 || y == 0;
printf("全为0:%d
", allZero);
printf("全非0:%d
", noZero);
printf("存在0:%d", hasZero);
return 0;
}
【答案】
全为0:0
全非0:0
存在0:1
17.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int n = 38;
int twoBit = n >= 10 && n <= 99;
int even = n % 2 == 0;
int target = twoBit && even;
int rev = n % 10 * 10 + n / 10;
printf("两位数:%d
", twoBit);
printf("偶数:%d
", even);
printf("两位偶数:%d
", target);
printf("数字逆序:%d", rev);
return 0;
}
【答案】
两位数:1
偶数:1
两位偶数:1
数字逆序:83
18.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
char c = '#';
int letter = (c>='A'&&c<='Z') || (c>='a'&&c<='z');
int digit = c >= '0' && c <= '9';
int symbol = !letter && !digit;
int code = c;
printf("字母:%d,", letter);
printf("数字:%d,", digit);
printf("符号:%d,", symbol);
printf("ASCII码:%d", code);
return 0;
}
【答案】字母:0,数字:0,符号:1,ASCII码:35
19.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int x=5,y=6,z=7;
printf("%d ", 1.0/3*3 == 1.0);
printf("%d ", x+y > z*2);
printf("%d ", (x>=y) == (y<=z));
printf("%d
", 'A' < 'a');
return 0;
}
【答案】1 0 0 1
20.下列程序的运行结果是__________________。
#include <stdio.h>
int main()
{
int a = 2, b = 5, c = 1;
printf("%d ", a++ + b > c * 4 && !(b - a > 3));
printf("%d ", (a > c) || (b < a) && (c + a == b - 2));
printf("%d %d %d", a, b, c);
return 0;
}
【答案】1 1 3 5 1
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$