z||1)
答案:
D
解析:
该题考查逻辑与“&&”和逻辑或“||”以及逻辑非“!
”符号的用法。
选项A)即3&&4为真,选项B)即3<=4为真,选项C)是一个逻辑或与逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x的值为真,此时选项C)变为1&&-1为真。
选项D)不用计算,括号内逻辑或右边的值为1,因而括号内的值为1,再进行逻辑非运算得0。
10.有以下程序
main()
{inti=1,j=1,k=2;
if((j++||k++)&&i++)
printf("%d,%d,%d\n",i,j,k);
}
执行后输出结果是
A)1,1,2B)2,2,1C)2,2,2D)2,2,3
答案:
C
解析:
该题目的关键是要搞清楚“&&”和“||”两个逻辑运算符的运算功能。
运算符“&&”和“||”是双目运算符,要求有两个运算量。
且规定逻辑与运算中,只有前面运算量的值为真时,才需要判别后面的值。
只要前面为假,就不必判别后面的值。
而逻辑或则为只要前为真,就不必判别后面的值;只有前为假,才判别后。
本题中j++值为真,不进行k++的运算,所以k的值保持不变。
11.设intx=1,y=1;表达式(!
x||y--)的值是
A)0B)1C)2D)-1
答案:
B
解析:
C语言规定的运算优先级由高到低分别是逻辑非、算术运算、逻辑或。
所以先计算!
x,值是0,然后再计算y--,由于是后缀运算符,所以y在本次运算中的值仍然是1,最后计算0||1,值为1。
12.若有说明语句:
charc='\72';则变量c
A)包含1个字符B)包含2个字符
C)包含3个字符D)说明不合法,c的值不确定
答案:
A
解析:
C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“\”开头的字符。
其中“\ddd”表示用ASCII码(八进制数)表示一个字符,本题中的charc=′\72′即表示占一个字符的变量c的ASCII码值。
13.在C语言中,退格符是
A)\n
B)\t
C)\f
D)\b
答案:
D
解析:
C语言的转义字符见下表所示。
转义字符
转义字符的意义
\n
回车换行
\t
横向跳到下一制表位置
\v
竖向跳格
\b
退格
\r
回车
\f
换页
\\
反斜线符“\”
\’
单引号符
14.在C程序中,判逻辑值时,用“非0”表示逻辑值“真”,又用“0”表示逻辑值“假”。
在求逻辑值时,用()表示逻辑表达式值为“真”,又用()表示逻辑表达式值为“假”。
A)10B)01C)非0非0D)11
答案:
A
解析:
在C程序中,判断逻辑值时,用非0表示真,用0表示假。
逻辑表达式计算时,逻辑表达式值为真是用1表示的,若逻辑表达式的值为假,则用0表示。
15.字符型数据在机器中是用ASCII码表示的,字符“5”和“7”在机器中表示为
A)10100011和01110111B)01000101和01100011
C)00110101和00110111D)01100101和01100111
答案:
C
解析:
为便于表示各种数据类型,机器中采用了BCD码(表示十进制数)、ASCII码(字符型)、汉字机内码等等各种码。
数据采用了补码、原码和反码为表示形式。
实型数据表示方法有浮点法和定点法等,考生需熟练掌握各种码的含义,并用之来计算、比较。
需要提出的是,在机器内部,所有码都是由二进制编码而成的,它都是以二进制存储在机器之中的。
字符“5”和“7”的ASCII的值分别为53和55,其二进制形式分别为00110101和00110111。
16.若已定义:
inta=25,b=14,c=19;以下三目运算符(?
:
)所构成语句的执行后
a<=25&&b--<=2&&c?
printf("***a=%d,b=%d,c=%d\n",a,b,c):
printf("###a=%d,b=%d,c=%d\n",a,b,c);程序输出的结果是
A)***a=25,b=13,c=19B)***a=26,b=14,c=19
C)###a=25,b=13,c=19D)###a=26,b=14,c=19
答案:
C
解析:
此题综合考查多种运算符的使用;首先计算表达式a<=25&&b--<=2&&c的值,很容易看出b--<=2的值为假,因此表达式为假;根据三目运算的特点,由于前面的表达式为假,应执行printf(“###a=%d,b=%d,c=%d\n”,a,b,c),应注意a的值依然为25,b的值经过b--运算后改变为13,而c的值仍为19。
17.若有定义:
inta=7;floatx=2.5,y=4.7;则表达式x+a%3*(int)(x+y)%2/4的值是
A)2.500000B)2.750000C)3.500000D)0.000000
答案:
A
解析:
x+y的值为实型7.200000,经强制类型转化成整型7。
a%3的值为1,1*7的值为7,7%2值为1。
1/4的值为0,而非0.25,因而为两个整数相除的结果为整数,舍去小数部分。
与实型x相加,最终得结果为2.500000。
18.有如下程序段
inta=14,b=15,x;
charc=′A′;
x=(a&&b)&&(c<′B′);
执行该程序段后,x的值为
A)tureB)falseC)0D)1
答案:
D
解析:
在C语言中,逻辑运算符有4个,它们分别是:
!
(逻辑非)、||(逻辑或)、&&(逻辑与)、^(异或)。
在位运算里面还有&(位与)、|(位或)的运算。
本题考查逻辑与运算符的用法,在表达式x=(a&&b)&&(c<′B′);中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即a和b都成立,当然c<′B′是成立的,显然,该表达式的值为1。
19.在以下一组运算符中,优先级最高的运算符是
A)<=B)=C)%D)&&
答案:
C
解析:
关系运算符、逻辑与和算术运算符总算术运算符的优先级最高,故选C)。
20.以下选项中,与k=n++完全等价的表达式是
A)k=n,n=n+1B)n=n+1,k=nC)k=++nD)k+=n+1
答案:
A
解析:
k=n++的意思是先将n的值赋给k,然后n的值再加1,选项A)符合题意;选项C)是先使n的值加1,然后再赋值给k;选项D)等价于k=k+(n+1)。
21.以下选项错误的是
A)main()B)main()
{intx,y,z;{intx,y,z;
x=0;y=x-1;x=0,y=x+1;
z=x+y;}z=x+y;}
C)main()D)main()
{intx;{intx,y,z;
inty;x=0;y=x+1;
x=0,y=x+1;z=x+y,}
z=x+y;}
答案:
D
解析:
在选项A)中的语句没有一条是错误的。
选项B)和C)中有一个逗号表达式,选项B)中是x=0,y=x+1;在选项C)中是y=x+1,z=x+y;所以B)和C)中也没有错误。
选项D)中的最后一条语句是以逗号结束的,而C语言中不能用逗号作为一个语句的结束标志,每一条语句最后应该是分号,所以D)选项中的程序是错误的。
22.以下4个选项中,不能看做一条语句的是
A);B)a=5,b=2.5,c=3.6;C)if(a<5);D)if(b!
=5)x=2;y=6;
答案:
D
解析:
选项D)为两条语句。
23.下列运算符中优先级最高的是________。
A)
=
答案:
B
24.判断char型变量ch是否为大写字母的正确表达式是________。
A)'A'<=CH<='Z'B)(CH>='A')&(CH<='Z')
C)(CH>='A')&&(CH<='Z')D)('A'<=ch)AND('Z'>=ch)
答案:
C
25.设inta=12,则执行完语句a+=a-=a*a后,a的值是________。
A)552B)264C)144D)-264
答案:
D
26.设a=5,b=6,c=7,d=8,m=2,n=2,执行
(m=a>b)&&(n=c>b)后n的值为________。
A)1B)2C)3D)4
答案:
B
27.逻辑运算符两侧运算对象的数据类型________。
A)只能是0或1B)只能是0或非0正数
C)只能是整型或字符型数据D)可以是任何类型的数据
答案:
D
28.正确表示"当x的取值在[1,10]或[200,210]范围内为真,否则为假"的表达式是________。
A)(X>=1)&&(X<=10)&&(X>=200)&&(X<=210)
B)(X>=1)||(X<=10)||(X>=200)||(X<=210)
C)(X>=1)&&(X>=10)||(X>=200)&&(X<=210)
D)(X>=1)||(X<=10)&&(X>=200)||(X<=210)
答案:
C
29.设x,y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0的是________。
A)'x'&&'y'B)x<=yC)x||y+z&&y-zD)!
((xz||1)
答案:
D
30.已知x=43,ch='A',y=0;则表达式x=y&&ch<'B'&&!
y的值是________。
A)0B)语法错C)1 D)"假"
答案:
A
31.若希望当A的值为奇数时,表达式的值为"真"。
A的值为偶数时,表达式的值为"假"。
则以下不能满足要求的表达式是________。
A)A%2==1B)!
(A%2==0)C)!
(A%2)D)A%2
答案:
C
32.不合法的常量是________。
A)'\2'B)'""'(外面是单引号)C)""D)"\003"
答案:
B
33.若有以下定义
chars='\092';则该语句________。
A)使s的值包含一个字符B)定义不合法,s的值不确定
C)使s的值包含4个字符D)使s的值包含3个字符
答案:
B
34.下列不正确的字符串常量是________。
A)"ABC"B)"W\"C)"SDF/3"D)""
答案:
B
35.若变量a是int类型,执行语句:
a='A'+1.6;后,正确的叙述是()。
A.a的值是字符CB.a的值是浮点型
C.不允许字符型和浮点型相加D.a的值是字符'A'的ASCII值加上1
答案:
D
36.设有说明:
charw;intx;floaty;doublez;则表达式w*x+z-y值的数据类型是________。
A)intB)floatC)doubleD)char
答案:
C
37.执行下列语句inta=3,b;b=-(--a);后a,b的值分别是________。
A)2和-2B)2和-3C)3和-2D)3和-3
答案:
A
38.执行下列语句floatf=3.9;inta=4;f=(int)f+a;后f的值是________。
A)7.9B)7.000000C)7.0D)出错
答案:
B
39.执行下列语句intf=3,g,h;g=++f;g=f++;h=++g;后f和h的值是________。
A)5和5B)6和5C)5和6D)4和5
答案:
A
40.下列C语句格式错的是________。
A)inta=10;B)inta,b,z;C)a=2:
b=3;D)z=a+b;
答案:
C
41.下列变量定义中合法的是________。
A)int_a=1-.e-1;B)doubleb=1+5e2.5;
C)longx=12.5;D)float2_and=1-e-3;
案:
C
42.以下______符合C语言语法的实型常量。
A)1.3E0.5B)7E-2C)3.14159ED)E5
答案:
B
43.以下______符合C语言语法的赋值表达式。
A)d=8+e+f=d+aB)8+e=f=dC)d=f=8+e++D)d=8+e++=d+7
答案:
C
44.假设整型变量a的值是1,b的值是2,c的值是3,在这种情况下执行下面的语句:
u=(a==2)?
b+a:
c+a;执行该语句后整型变量u的值为()。
A)0B)3C)4D)5
答案:
C
45.若x为int类型,则下面与逻辑表达式!
x等价的C语言关系表达式是________。
A)x==1B)x!
=1C)x==0D)x!
=0
答案:
C
46.设inta=3;下列表达式值等于0的是______。
A)a&&(a>0)B)!
a||aC)a%=aD)a>=a
答案:
C
47.假定有以下变量定义:
intk=7,x=12;则能使值为3的表达式是________。
A)x%=(k%=5)B)x%=(k-4%5)C)x%=k-k%5D)(x%=k)-(k%=5)
答案:
D
48.设x和y均为int型变量,则语句:
x+=y;y=x-y;x-=y;的功能是________。
A)把x和y按从大到小排列B)把x和y按从小到大排列
C)无确定结果D)交换x和y中的值
答案:
D
49.下面能正确表示"整数x的绝对值大于等于0"的C语言表达式是________。
A)x≥0B)abs(x)≥0C)abs(x)>=0D)abs(int(x))>=0
答案:
C
50.以下所列的C语言常量中,错误的是________。
A)0xFFB)1.2e5C)1.0/2.0D)'\72'
答案:
C
二.填空题。
1.在C语言中用关键字【1】定义整型类型变量,用关键字float定义单精度实型变量,用关键字double定义双精度实型变量。
答案:
【1】int
解析:
C语言中规定用关键字int定义整型变量。
2.3.5+1/2的计算结果是【2】
答案:
【2】3.5
解析:
1/2的值为0,故3.5+1/2的值为3.5。
3.设y是int型,请写出y为奇数的关系表达式【3】。
答案:
【3】(y%2)==1或(y%2)!
=0
4.设inta=5,b=6,表达式(++a==b--)?
++a:
--b的值是【4】。
答案:
【4】7
解析:
此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。
请注意前缀++,--和后缀++,--的区别。
5.以下程序的输出结果是【5】。
inta=1234;
printf("%2d\n",a);
答案:
【5】1234
解析:
在%与格式符之间插入一个整形数来指这输出宽度,并不影响数据的完整性,当插入的宽度小于实际的宽度时,则实际的宽度输出。
6.以下程序的输出结果是【6】。
main()
{inta=0;
a+=(a=8);
printf("%d\n",a);}
答案:
【6】16
解析:
赋值表达式的值就是所赋值变量的值,本题中a+=8相当于a=a+8,对表达式逐步进行求解:
a+=(a=8)此时,a的值由于赋值为8,而不是0
a+=8
a=a+8
a=16
7.在计算机中,字符的比较是对它们的【7】进行比较。
答案:
ASCII码
解析:
【7】C语言中,字符也可以进行比较运算,且是按照ASCII码值进行的。
8.在内存中,存储字符′x′要占用1个字节,存储字符串″X″要占用【8】个字节。
答案:
【8】2
解析:
计算机存储一个字符用1个字节,存储字符串时,每个字符用占用1个字节,另在字符串的有效字符之后存储1个字符串的结束标记符。
所以存储字符串“X”要占用2个字节,存储字符′x′只要1个字节。
9.以下程序的运行结果是【9】。
main()
{
intm=5;
m++;
printf("%d\n",m--);
}
答案:
【9】6
10.设有intx=8;则表达式(++x*1/3)的值是【10】。
答案:
【10】3
11.设x,y,z和k都是int型变量,则执行表达式:
x=(y=4,z=16,k=32)后,x的值为【11】。
答案:
【11】32
12.设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是【12】。
答案:
【12】0至65535
13.执行以下语句后b的值为【13】。
inta,b,c;a=b=c=1;++a||++b&&++c;
答案:
【13】1
14.设intx=2,y=1;则表达式(!
x||y--)的值是【14】。
答案:
【14】1
15.设inta=5,b=2,c=3,d=4;则表达式a>b?
a:
c>d?
c:
d值为【15】。
答案:
【15】5
16.若有以下程序段,
intc1=1,c2=2,c3;
c3=1.0/c2*c1;
则执行后,c3的值是【16】。
答案:
【16】0
17.有程序:
main()
{
inty=3,x=3,z=1;
printf("%d%d\n",(++x,y++),z+2);
}
运行该程序的输出结果是【17】。
答案:
【17】33
18.能正确表示逻辑关系:
"a≥5或a≤-1"的C语言表达式是【18】。
答案:
【18】a>=5||a<=-1
19.执行下面程序段:
inta=10,b=9,c;
c=(a-=(b-5));
c=(a%11)+(b=3);
则变量C的值是【19】。
答案:
【19】9
20.假定w、x、y、z、m均为整型变量,且w=1,x=2,y=3,z=4则执行语句:
m=(ww:
x;
m=(mm:
y;
m=(mm:
z;后,m的值是【20】。
答案:
【20】1