内容正文:
编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。
本试卷是第17卷为专业核心模块训练卷,按《C语言》中"C语言卷4——运算符、类型转换与表达式求值"范围和要求编写。具体内容为:理解C运算符的种类、运算优先级、结合性;理解不同类型数据间的转换与运算;掌握C表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式)和求值规则...
江苏省对口招生职业技能考试
C语言 试卷
(C语言卷4——运算符、类型转换与表达式求值)
考试时间:90分钟 满分:100分
一、单项选择题(共20题,每题2分,共40分)
1. 下列运算符中,优先级最高的是( )
A.+ B.= C.() D.==
【答案】C
【解析】括号()的优先级最高,可以用于改变求值顺序。
2. 下列关于运算符结合性,正确的是( )
A.赋值运算符是左结合 B.算术运算符都是右结合
C.单目运算符是右结合 D.所有运算符都是左结合
【答案】C
【解析】单目运算符(如++、--、!等)是右结合的,从右到左计算。
3. 表达式 5/2 的结果是( )
A.2.5 B.2 C.3 D.编译错误
【答案】B
【解析】整数除法会截断小数部分,5/2=2,不四舍五入。
4. 表达式 5%2 的结果是( )
A.2.5 B.1 C.2 D.0
【答案】B
【解析】%是求余(取模)运算符,5%2=1。
5. 下列关于类型转换,正确的是( )
A.强制类型转换(int)3.14 结果是3 B.int a=3.14; a的值是3.14
C.自动类型转换总是安全的 D.显式类型转换会进行四舍五入
【答案】A
【解析】强制类型转换直接截断小数部分,不进行四舍五入,(int)3.14=3。
6. 关系表达式的值类型是( )
A.浮点型float B.字符型char C.整型 D.布尔型bool
【答案】C
【解析】C语言关系表达式值为整数,真为1,假为0。
7. 逻辑与运算符是( )
A.按位与& B.逻辑与&& C.逻辑或|| D.按位或|
【答案】B
【解析】&&是逻辑与运算符,&是按位与运算符。
8. 逻辑或运算符是( )
A.按位或| B.逻辑或|| C.按位与& D.逻辑与&&
【答案】B
【解析】||是逻辑或运算符。
9. 条件表达式的格式是( )
A.条件? 表达式1,表达式2 B.条件? 表达式1:表达式2
C.条件: 表达式1?表达式2 D.条件->表达式1:表达式2
【答案】B
【解析】条件表达式格式为:条件?表达式1:表达式2。
10. 表达式 !(5>3) 的值是( )
A.1 B.0 C.真 D.编译错误
【答案】B
【解析】(5>3)=1(真),!(1)=0(假)。
11. 下列关于赋值运算符,正确的是()
A.a=b 表示将 b 的值赋给 a
B.a== 表示赋值操作
C. 赋值运算符优先级高于算术运算符
D. 连续赋值从左到右结合计算
【答案】A
【解析】A 正确:赋值语句格式为 变量 = 表达式,将右侧值存入左侧变量;
B 错误:==是判断相等的关系运算符,=才是赋值运算符;
C 错误:赋值运算符优先级低于加减乘除等算术运算符;
D 错误:赋值运算符为右结合,连续赋值从右向左运算。
12. 表达式 10>5>1 的求值结果是( )
A.真 B.假 C.编译错误 D.不确定
【答案】B
【解析】10>5>1先算10>5得1,再算1>1得0(假)。
13. 下列关于自增运算符,正确的是()
A.a++ 是先使用 a 的值再加 1
B.++a 是先使用 a 的值再加 1
C.a++ 和 ++a 在任何情况下都无区别
D.a++ 不能用于表达式中进行计算
【答案】A
【解析】后置自增a++:先取用变量当前值参与运算,运算结束后变量 + 1;前置自增++a:变量先自增 1,再取用新值参与运算;二者在表达式中参与运算时结果不同,a++可正常嵌入表达式计算。
14. 逗号表达式 a=3, a+5 的值是( )
A.3 B.5 C.8 D.表达式错误
【答案】C
【解析】逗号表达式取最右边表达式的值,a=3后a+5=8。
15. 表达式 2+3*4 的结果是( )
A.20 B.14 C.24 D.11
【答案】B
【解析】乘法优先级高于加法,3*4=12,2+12=14。
16. 下列能正确表示a大于等于b的关系是( )
A.a>b B.a>=b C.a=>b D.a<=>b
【答案】B
【解析】>=是大于等于关系运算符,注意>=中间没有空格。
17. 下列关于类型转换,错误的是( )
A.int到float是安全转换 B.float到int会丢失小数部分
C.char到int会自动转换 D.所有类型转换都不会丢失信息
【答案】D
【解析】float到int等转换会丢失信息,如(int)3.9=3。
18. 表达式 (5>3) && (2<4) 的值是( )
A.0 B.1 C.真 D.假
【答案】B
【解析】(5>3)=1,(2<4)=1,1&&1=1(真)。
19. 按位与运算符是( )
A.逻辑与&& B.按位与& C.按位或| D.逻辑或||
【答案】B
【解析】&是按位与运算符,&&是逻辑与运算符。
20. 下列关于表达式求值,正确的是( )
A.所有运算符优先级相同 B.使用括号可以改变求值顺序
C.结合性不影响求值顺序 D.算术表达式只能进行整数运算
【答案】B
【解析】括号可以改变求值顺序,提高某些运算的优先级。
二、判断题(共10题,每题1分,共10分)
21. C语言中,赋值运算符=的优先级比算术运算符低( )
【答案】√
【解析】赋值运算符优先级低于算术运算符,如a=b+c先算b+c再赋值给a。
22. 关系表达式的结果为真时值为1,为假时值为0( )
【答案】√
【解析】C语言关系表达式结果为整数,真为1,假为0。
23. 逻辑与运算符&&两侧表达式都为真时结果才为真( )
【答案】√
【解析】逻辑与运算,只有两侧都为真时结果才为真。
24. 5/2的结果是2.5( )
【答案】×
【解析】整数除法会截断小数部分,5/2=2不是2.5。
25. 强制类型转换(int)3.9的结果是3( )
【答案】√
【解析】强制类型转换直接截断小数部分,不进行四舍五入。
26. a++和++a在单独使用时没有任何区别( )
【答案】√
【解析】在单独使用时(不参与表达式),a++和++a都使a自增1,效果相同。
27. 逗号表达式的值是第一个表达式的值( )
【答案】×
【解析】逗号表达式的值是最后一个表达式的值。
28. 条件表达式 条件?表达式1:表达式2 中,若条件为真则取表达式1的值( )
【答案】√
【解析】条件为真时条件表达式取表达式1的值,否则取表达式2的值。
29. 按位或运算符是||( )
【答案】×
【解析】||是逻辑或运算符,|是按位或运算符。
30. C语言中,所有运算符都有明确的优先级和结合性( )
【答案】√
【解析】C语言每个运算符都有确定的优先级和结合性。
三、填空题(共10空,每空2分,共20分)
31. C语言中,求余运算符是____。
【答案】%
【解析】%是求余(取模)运算符,用于计算整数相除的余数。
32. 逻辑与运算符是____,逻辑或运算符是____。
【答案】&&、||
【解析】&&是逻辑与运算符,||是逻辑或运算符。
33. 条件表达式的格式为:条件____表达式1____表达式2。
【答案】?:
【解析】条件表达式格式为:条件?表达式1:表达式2。
34. 逗号表达式的值是____表达式的值。
【答案】最后一个
【解析】逗号表达式的值是最后一个表达式的值。
35. 强制类型转换的格式为:(____)表达式。
【答案】类型名
【解析】强制类型转换格式为:(类型名)表达式。
36. sizeof是____元运算符(填写一或二)。
【答案】一
【解析】sizeof是一元运算符,用于获取类型或变量所占字节数。
37. 在C语言中,整数除法会____小数部分(填保留或截断)。
【答案】截断
【解析】整数除法会截断(抛弃)小数部分,不进行四舍五入。
38. 后置自增a++表示先____再____。
【答案】使用值、自增1
【解析】a++后置自增,先使用a的当前值,然后a自增1。
39. 关系运算符的优先级____算术运算符(填高于或低于)。
【答案】低于
【解析】关系运算符优先级低于算术运算符。
40. 赋值运算符的结合方向是____(填从左到右或从右到左)。
【答案】从右到左
【解析】赋值运算符是右结合的,如a=b=c从右到左执行。
四、程序综合题(共3题,每题10分,共30分)
41. 程序阅读题:阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
int a=3,b=4,c=5;
int r1,r2,r3;
r1=a+b*c;
r2=(a+b)*c;
r3=a>b&&b>c;
printf("r1=%d
",r1);
printf("r2=%d
",r2);
printf("r3=%d
",r3);
return 0;
}
【答案】r1=23;r2=35;r3=0
【解析】
1.r1 遵循运算符优先级,先计算乘法 bc=45=20,再计算加法 a+20=3+20=23;
2.r2 括号优先运算,先计算 a+b=3+4=7,再计算乘法 7c=75=35;
3.r3 是逻辑判断,a>b 不成立值为 0,0 与任何值运算结果都为 0,因此 r3=0。
42. 程序填空题:以下程序在数组中查找指定元素,若找到输出其下标,否则输出-1。请将①~④表示的内容填写完整。
#include <stdio.h>
int main()
{
int a[8]={5,8,3,9,1,6,2,7};
int x,i,flag=0;
scanf("%d",&x);
for(i=0;i<8;i++)
{
if(①____)
{
printf("找到,下标为%d
",②____);
③____;
break;
}
}
if(④____)
printf("未找到
");
return 0;
}
【答案】① a [i]==x ② i ③ flag=1 ④ flag==0
【解析】
① 判断数组中第 i 个元素是否等于要查找的数值 x;
② 输出元素对应的数组下标 i;
③ 找到元素后将标记变量 flag 赋值为 1;
④ 循环结束后判断 flag 仍为 0,说明未找到目标元素。
43.文件balance.txt中存放一个正整数(位数≥6)。用削峰法删除3个数字,使新数的奇数位数字之和等于偶数位数字之和。请完善程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define DEL 3
int find_balance(char strn[],int deln);
int main()
{
char strn[50];
int result;
FILE *fp=fopen("balance.txt","r");
fscanf(fp,"%s",strn);
fclose(fp);
result=find_balance(strn,DEL);
if(result>=0)printf("平衡数:%d
",result);
else printf("不存在");
return 0;
}
int find_balance(char strn[],int deln)
{
int lenth=strlen(strn);
int i,j,k,dn,odd,even;
char tmp[50];
for(dn=1;dn<=deln;dn++)
{
i=0;
while(strn[i]<=strn[i+1]&&i<lenth-dn)
i++;
for(k=i;k<lenth-dn;k++)
①;
}
odd=even=0;
for(k=0;k<lenth-deln;k++)
{
if(②)odd+=strn[k]-'0';
else even+=strn[k]-'0';
}
if(③)
{
int num=0;
for(k=0;k<lenth-deln;k++)
num=num*10+strn[k]-'0';
return num;
}
return -1;
}
【答案】① strn [k]=strn [k+1] ② (k+1)%2==1 ③ odd==even
【解析】
① 将后一位字符向前覆盖,实现删除指定位置数字的功能;
② 判断当前位置是否为奇数位,满足则累加到奇数和 odd;
③ 判断奇数位数字和与偶数位数字和是否相等,满足条件则返回结果。
学科网(北京)股份有限公司
$
编写说明:江苏省对口招生计算机类《考纲百套卷》,依据《江苏省计算机类专业综合理论考试大纲》编写。本专辑涵盖5门课程,第一部分是专业核心模块训练卷,第二部分为各门课程的综合训练卷。本专辑共98份试卷。
本试卷是第17卷为专业核心模块训练卷,按《C语言》中"C语言卷4——运算符、类型转换与表达式求值"范围和要求编写。具体内容为:理解C运算符的种类、运算优先级、结合性;理解不同类型数据间的转换与运算;掌握C表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式)和求值规则...
江苏省对口招生职业技能考试
C语言 试卷
(C语言卷4——运算符、类型转换与表达式求值)
考试时间:90分钟 满分:100分
一、单项选择题(共20题,每题2分,共40分)
1. 下列运算符中,优先级最高的是( )
A.+ B.= C.() D.==
2. 下列关于运算符结合性,正确的是( )
A.赋值运算符是左结合 B.算术运算符都是右结合
C.单目运算符是右结合 D.所有运算符都是左结合
3. 表达式 5/2 的结果是( )
A.2.5 B.2 C.3 D.编译错误
4. 表达式 5%2 的结果是( )
A.2.5 B.1 C.2 D.0
5. 下列关于类型转换,正确的是( )
A.强制类型转换(int)3.14 结果是3 B.int a=3.14; a的值是3.14
C.自动类型转换总是安全的 D.显式类型转换会进行四舍五入
6. 关系表达式的值类型是( )
A.浮点型float B.字符型char C.整型 D.布尔型bool
7. 逻辑与运算符是( )
A.按位与& B.逻辑与&& C.逻辑或|| D.按位或|
8. 逻辑或运算符是( )
A.按位或| B.逻辑或|| C.按位与& D.逻辑与&&
9. 条件表达式的格式是( )
A.条件? 表达式1,表达式2 B.条件? 表达式1:表达式2
C.条件: 表达式1?表达式2 D.条件->表达式1:表达式2
10. 表达式 !(5>3) 的值是( )
A.1 B.0 C.真 D.编译错误
11. 下列关于赋值运算符,正确的是( )
A.a=b表示将b的值赋给a B.a==b表示赋值操作
C.赋值运算符优先级高于算术运算符 D.连续赋值从右到左结合计算
12. 表达式 10>5>1 的求值结果是( )
A.真 B.假 C.编译错误 D.不确定
13. 下列关于自增运算符,正确的是( )
A.a++是先使用a的值再加1 B.++a是先加1再使用a的值
C.a++和++a在任何情况下都无区别 D.a++不能用于表达式中进行计算
14. 逗号表达式 a=3, a+5 的值是( )
A.3 B.5 C.8 D.表达式错误
15. 表达式 2+3*4 的结果是( )
A.20 B.14 C.24 D.11
16. 下列能正确表示a大于等于b的关系是( )
A.a>b B.a>=b C.a=>b D.a<=>b
17. 下列关于自增运算符,正确的是( )
A.a++ 是先使用 a 的值再加 1
B.++a 是先使用 a 的值再加 1
C.a++ 和 ++a 在任何情况下都无区别
D.a++ 不能用于表达式中进行计算
18. 表达式 (5>3) && (2<4) 的值是( )
A.0 B.1 C.真 D.假
19. 按位与运算符是( )
A.逻辑与&& B.按位与& C.按位或| D.逻辑或||
20. 下列关于表达式求值,正确的是( )
A.所有运算符优先级相同 B.使用括号可以改变求值顺序
C.结合性不影响求值顺序 D.算术表达式只能进行整数运算
二、判断题(共10题,每题1分,共10分)
21. C语言中,赋值运算符=的优先级比算术运算符低( )
22. 关系表达式的结果为真时值为1,为假时值为0( )
23. 逻辑与运算符&&两侧表达式都为真时结果才为真( )
24. 5/2的结果是2.5( )
25. 强制类型转换(int)3.9的结果是3( )
26. a++和++a在单独使用时没有任何区别( )
27. 逗号表达式的值是第一个表达式的值( )
28. 条件表达式 条件?表达式1:表达式2 中,若条件为真则取表达式1的值( )
29. 按位或运算符是||( )
30. C语言中,所有运算符都有明确的优先级和结合性( )
三、填空题(共10空,每空2分,共20分)
31. C语言中,求余运算符是____。
32. 逻辑与运算符是____,逻辑或运算符是____。
33. 条件表达式的格式为:条件____表达式1____表达式2。
34. 逗号表达式的值是____表达式的值。
35. 强制类型转换的格式为:(____)表达式。
36. sizeof是____元运算符(填写一或二)。
37. 在C语言中,整数除法会____小数部分(填保留或截断)。
38. 后置自增a++表示先____再____。
39. 关系运算符的优先级____算术运算符(填高于或低于)。
40. 赋值运算符的结合方向是____(填从左到右或从右到左)。
四、程序综合题(共3题,每题10分,共30分)
41. 程序阅读题:阅读下列程序,写出运行结果。
#include <stdio.h>
int main()
{
int a=3,b=4,c=5;
int r1,r2,r3;
r1=a+b*c;
r2=(a+b)*c;
r3=a>b&&b>c;
printf("r1=%d
",r1);
printf("r2=%d
",r2);
printf("r3=%d
",r3);
return 0;
}
42. 程序填空题:以下程序在数组中查找指定元素,若找到输出其下标,否则输出-1。请将①~④表示的内容填写完整。
#include <stdio.h>
int main()
{
int a[8]={5,8,3,9,1,6,2,7};
int x,i,flag=0;
scanf("%d",&x);
for(i=0;i<8;i++)
{
if(①____)
{
printf("找到,下标为%d
",②____);
③____;
break;
}
}
if(④____)
printf("未找到
");
return 0;
}
43. 文件balance.txt中存放一个正整数(位数≥6)。用削峰法删除3个数字,使新数的奇数位数字之和等于偶数位数字之和。请完善程序。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define DEL 3
int find_balance(char strn[],int deln);
int main()
{
char strn[50];
int result;
FILE *fp=fopen("balance.txt","r");
fscanf(fp,"%s",strn);
fclose(fp);
result=find_balance(strn,DEL);
if(result>=0)printf("平衡数:%d
",result);
else printf("不存在");
return 0;
}
int find_balance(char strn[],int deln)
{
int lenth=strlen(strn);
int i,j,k,dn,odd,even;
char tmp[50];
for(dn=1;dn<=deln;dn++)
{
i=0;
while(strn[i]<=strn[i+1]&&i<lenth-dn)
i++;
for(k=i;k<lenth-dn;k++)
①;
}
odd=even=0;
for(k=0;k<lenth-deln;k++)
{
if(②)odd+=strn[k]-'0';
else even+=strn[k]-'0';
}
if(③)
{
int num=0;
for(k=0;k<lenth-deln;k++)
num=num*10+strn[k]-'0';
return num;
}
return -1;
}
学科网(北京)股份有限公司
$