第2章数据类型和运算符  习题及解答
一.选择题。
1.下列是用户自定义标识符的是
A_w1        B3_xy      Cint      DLINE-3
答案:A
解析: C语言规定用户标识符由英文字母、数字和下划线组成,且第一个字符必须是字母或下划线,由此可见选项B),D)是错的;此外,C语言不允许用户将关键字作为标识符,而选项C)选项项中的intC语言的关键字。
语言中最简单的数据类型包括
A)整型、实型、逻辑型        B)整型、实型、字符型
C)整型、字符型、逻辑型      D)字符型、实型、逻辑型
答案:B
解析: 本题考查C语言的数据类型。在C语言中,没有专门的逻辑型数据类型,可以用01来表示逻辑值。所以,在本题的选择答案中,不应该包括逻辑型。
3.假定int类型变量占用两个字节,其有定义:int x10={0,2,4};,则数组x在内存中所占字节数是
A3          B6          C10        D20
答案:D
解析: x数组共有10个元素,在花括弧内只提供3个初值,这表示只给前面的3个成员赋值,后7个元素的值为0,所以,一共有20个字节。
4.以下选项中不正确的实型常量是
A)    B)      C)        D)234e-2
答案:B
解析:实型常量表示时字母E或e前必须有数字,其后数字必需为整数,故B错。
5.若变量已正确定义并赋值,以下符合C语言语法的表达式是
Aa:=b+1    Ba=b=c+2      Cint %3  Da=a+7=c+b
答案:B
解析: 选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int%3;选项D)可理解为两个表达式:a+7=c+ba=a+7,其中第一个是错的,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。因此,正确答案是选项B),它实际上相当于a=b=c+2,进而可分解为两个表达式:b=c+2a=b
6.下列可用于C语言用户标识符的一组是
Avoid, define, WORD        Ba3_b3, _123,Car
CFor, -abc, IF Case        D2a, DO, sizeof
答案:B
解析: C语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线,排除选项C)和D)。C语言中还规定标识符不能为C语言的关键字,而选项A)中void为关键字,故排除选项A)。
语言中运算对象必须是整型的运算符是
A%=          B/          C=              D<=
答案:A
解析: C语言规定:取余运算符的运算对象必须是整型,复合运算符“%=”中包含%运算,它的运算对象也必须是整型。
8.若变量a,i已正确定义,i已正确赋值,合法的语句是
Aa= =1        B++i;      Ca=a++=5;      Da=inti;
答案:B
解析: 选项A是一个表达式,因为缺少分号,所以不是语句;选项C)包含一个不合法的运算符“++=”;选项D)应改为a=inti;
9.设xyz都是int型变量,且x=3y=4z=5,则下面表达式中,值为0的表达式是
Ax&&y        Bx<=y      Cx||++y&&y-z      D!x<y&&!z||1
答案:D
解析: 该题考查逻辑与“&&”和逻辑或“||”以及逻辑非“!”符号的用法。选项A)即3&&4为真,选项B)即3<=4为真,选项C)是一个逻辑或与逻辑与的混合运算,只要执行了逻辑或左半部分,程序将直接停止执行逻辑或右半部分程序,因为x的值为真,此时选项C)变为1&&-1为真。选项D)不用计算,括号内逻辑或右边的值为1,因而括号内的值为1,再进行逻辑非运算得0
10.有以下程序
main()
{int i=1,j=1,k=2;
if((j++||k++&&i++
printf"%d,%d,%dn",i,j,k;
}
执行后输出结果是
A1,1,2    B2,2,1    C2,2,2    D2,2,3
答案:C
解析: 该题目的关键是要搞清楚“&&”“||”两个逻辑运算符的运算功能。运算符“&&”“||”是双目运算符,要求有两个运算量。且规定逻辑与运算中,只有前面运算量的值为真时,才需要判别后面的值。只要前面为假,就不必判别后面的值。而逻辑或则为只要前为真,就不必判别后面的值;只有前为假,才判别后。本题中j++值为真,不进行k++的运算,所以k的值保持不变。
11.设int x=1,y=1;表达式(!x||y--)的值是
A0    B1    C2    D-1
答案:B
解析:C语言规定的运算优先级由高到低分别是逻辑非、算术运算、逻辑或。所以先计算!x,值是0,然后再计算y--,由于是后缀运算符,所以y在本次运算中的值仍然是1,最后计算0||1,值为1
12.若有说明语句:char c='72';则变量c
A)包含1个字符            B)包含2个字符 
C)包含3个字符            D)说明不合法,c的值不确定
答案:A逗号表达式的运算顺序
解析: C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个“\”开头的字
符。其中ddd”表示用ASCII码(八进制数)表示一个字符,本题中的char c=′\72′即表示占一个字符的变量cASCII码值。
13.在C语言中,退格符是
A)\n
B)\t
C)\f
D)\b
答案:D
解析: C语言的转义字符见下表所示。
转义字符
转义字符的意义
n
回车换行
t
横向跳到下一制表位置
v
竖向跳格
b
退格
r
回车
f
换页
\\
反斜线符
单引号符
14.在C程序中,判逻辑值时,用0”表示逻辑值 又用“0”表示逻辑值 在求逻辑值时,用()表示逻辑表达式值为 又用()表示逻辑表达式值为
A1  0    B0  1    C)非0      D1  1
答案:A
解析: C程序中,判断逻辑值时,用非0表示真,用0表示假。逻辑表达式计算时,逻辑表达式值为真是用1表示的,若逻辑表达式的值为假,则用0表示。
15.字符型数据在机器中是用ASCII码表示的,字符“5”“7”在机器中表示为
A)和 01110111        B0100010101100011
C0011010100110111          D0110010101100111
答案:C
解析: 为便于表示各种数据类型,机器中采用了BCD码(表示十进制数)、ASCII码(字
符型)、汉字机内码等等各种码。数据采用了补码、原码和反码为表示形式。实型数据表示方法有浮点法和定点法等,考生需熟练掌握各种码的含义,并用之来计算、比较。需要提出的是,在机器内部,所有码都是由二进制编码而成的,它都是以二进制存储在机器之中的。字符“5”“7”ASCII的值分别为5355,其二进制形式分别为0011010100110111
16.若已定义:int a=25,b=14,c=19;以下三目运算符(:)所构成语句的执行后
a<=25&&b--<=2&&cprintf"***a=%d,b=%d,c=%dn",a,b,c:printf"###a=%d,b=%d,c=%dn"a,b,c);程序输出的结果是
A***a=25,b=13,c=19          B***a=26,b=14,c=19
C### a=25,b=13,c=19          D### a=26,b=14,c=19
答案:C
解析: 此题综合考查多种运算符的使用;首先计算表达式a<=25 &&b--<=2 &&c的值,很
容易看出b--<=2的值为假,因此表达式为假;根据三目运算的特点,由于前面的表达式为假,应执行printf“###a=%d,b=%d,c=%dn”a,b,c),应注意a的值依然为25,b的值经过b--运算后改变为13,c的值仍为19
17.若有定义:int a=7;float x=,y=;则表达式x+a%3*int)(x+y%2/4的值是
A)    B2.750000    C)    D
答案:A
解析: x+y的值为实型,经强制类型转化成整型7a%3的值为11*7的值为77%2值为11/4的值为0,而非,因而为两个整数相除的结果为整数,舍去小数部分。与实型x相加,最终得结果为。
18.有如下程序段
int a=14,b=15,x;
char c=A;
x=a&&b&&c<B′);
执行该程序段后,x的值为
Ature    Bfalse    C0    D1
答案:D
解析: C语言中,逻辑运算符有4个,它们分别是:!(逻辑非)、||(逻辑或)、&&(逻辑与)、^(异或)。在位运算里面还有&(位与)、|(位或)的运算。本题考查逻辑与运算符的用法,在表达式x=a&&b&&c<B′);中,先判断a&&b条件,逻辑与条件的两边都要保证为1,即ab都成立,当然c<B′是成立的,显然,该表达式的值为1
19.在以下一组运算符中,优先级最高的运算符是
A)<=    B)=    C)%    D)&&
答案:C
解析:关系运算符、逻辑与和算术运算符总算术运算符的优先级最高,故选C)。
20.以下选项中,与k=n++完全等价的表达式是
Ak=n,n=n+1    Bn=n+1,k=n    Ck=++n    Dk+=n+1
答案:A
解析: k=n++的意思是先将n的值赋给k,然后n的值再加1,选项A)符合题意;选项C)是先使n的值加1,然后再赋值给k;选项D)等价于k=k+n+1)。
21.以下选项错误的是
Amain()                        Bmain()   
{ int x,y,z;                          { int x,y,z;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。