(10)A
知识点:
位运算符的含义及使用
评析:
本题的考查点是运算符。
题目的四个选项中,(B)(C)(D)都不要求运算数必须为整数,参与模运算(%)的运算数必须是整型数据。
(11)若变量已正确定义并赋值,下面符合c语言的表达式是______。
A)a:
:
b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b
(11)B
知识点:
表达式类型和求值规则
评析:
选项A和c一望而知其错;对于表达式a=a+7=c+b(答案D),是先执行赋值表达式a+7=c+b,再把这个表达式的值赋给a,显然,表达式a+7=c+b非法,因为赋值表达式的左侧不能为常量或表达式。
(12)若变量a、i已正确定义,且i已正确赋值,合法的语句是______。
A)a==1B)++i;C)a=a++=5;D)a=int(i);
(12)B
知识点:
基本语句中的表达式语句
评析:
选项D显然是错的,而选项A没有分号结束,不是c语句;a++=5(答案c)违反了赋值表达式左侧必须为一个变量(不能是常量或表达式)的规定。
(13)C语言运算对象必须是整型的运算符是______。
A)%B)/C)=D)<。
(13)A
知识点:
运算符及其运算对象
评析:
在c语言中,模运算(即取余运算%)的运算对象必须是整型数据(常量、变量或表达式)。
(14)以下变量x、y、z均为double类型且已正确赋值,不能正确表示数学式子x/(y*z)的c语言表达式是______。
A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z
(14)A
知识点:
运算符的优先级
评析:
按照自左向右的运算逻辑,选项A是先做x/y,然后再乘以x,显然与题意不符。
(15)若a为int类型,且其值为3,则执行完表达式a+=a--=a*a后,a的值是______。
A)-3B)9C)-12D)6
(15)C
知识点:
运算符的优先级
评析:
c语言中对赋值运算的运算顺序是自右向左。
本题中,计算a*a之后,a的值依然为3,表达式a*a的值为9;a-=9.a=3-9=-6;a+=-6.a=-6+-6=-12.
(16)若变量c为char类型,能正确判断出c为小写字母的表达式是_______。
A)‘a’<=c<=‘z’B)(c>=‘a')||(c<=‘z’)
C)(‘a’<=c)and(‘z’>=c)D)(c>=‘a’)&&(C<=‘z’)
(16)D
知识点:
变量的灵活应用
评析:
(c>=‘a’)和(c<=‘z’)的关系应该是“与”的关系。
(17)以下合法的赋值语句是______。
A)X=Y=100B)D--;C)X+Y;D)C=int(A+B)
(17)B
知识点:
c语言的赋值语句
评析:
本题中的答案A与D都缺少“;”,而答案c中,表达式是不能独立成为语句的,答案B使用了C语言的自减运算符就相当于D=D-1,所以答案B为赋值语句。
18)设x,y均为.int型变量,且x=10,y=3,则printf("%d,%d\n",x--,--y);语句的输出结果是______。
A)10,3B)9,3C)9,2D)10,2
(18)D
知识点:
c语言的自减运算符
评析:
c语言的自减运算符有前置与后置两种形式。
当自减运算符前置时,变量先自减1后再参与表达式运算:
而后置时,变量先参与表达式运算后再自减1。
(19)以下程序的输出结果是_________。
main()
{inta=3;
printf("%d\n",(a+=a-=a*a));
}
A)-6B)1C)2D)-12
(19)D
知识点:
c语言的赋值运算符
评析:
首先a+=b相当于a=a+b;a-=b相当于a=a-b,且赋值运算符的结合方向是自右至左,所以表达式a+=a-=a*a。
a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a+(6),即a=(-6)+(-6)-12。
(20)以下选项中,非法的字符常量是_______。
A)‘\t’B)‘\17’C)“\n”D)‘\xaa’
(20)C
知识点:
c语言的字符常量与转义字符
评析:
c语言中字符常量足以单引号括起来的单个字符,或为以“\”与三位八进制数值或两位十六进制数值代替单个字符。
(21)若变量a是int类型,并执行了语句:
a=‘A’+1.6;,则正确叙述是______。
A)a的值是字符CB)a的值是浮点型
c)不允许字符型和浮点型相加D)a的值是字符"A"的ASCII值加上l
(21)D
知识点:
C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则
评析:
在赋值表达式中,赋值符右边的值的类型会自动转换成赋值符左边的变量的类型。
在本题中,先用”A”的ASCII码值加上1.46得到66.46,然后将它强制转换成int型,转换后,实数的小数部分全部舍去。
(22)以下选项中不属于C语言的类型的是______。
A)signedshortintB)unsignedchar
C)signedlongD)longshort
(22)D
知识点:
c的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法
评析:
c语言中归纳起来,基本类型数据有以下几种:
[signed]char;
unsignedchar;
[signed]short[int];
unsignedshort[int];
[signed]long[int];
unsignedlong[int];
float;
double.
(23)以下程序的输出结果是______。
main()
{inta=5,b=4,c=6,d;
printf("%d\n",d=a>c?
(a>c?
a:
c):
(b));
}
A)5B)4C)6D)不确定
(23)B
知识点:
C运算符的种类、运算优先级和结合性
评析:
本题最重要的分析d=a>c?
(a>c?
a:
c):
(b)),首先运算括号内的式子a>c?
a:
c,它的值是c的值6,即式子化成d=a>c?
6:
4。
显然a=c,所以将4赋给d。
(24)以下选项中合法的实型常数是_______。
A)5E2.0B)E-3C).2E0D)1.3E
(24)C
知识点:
实型数据的指数表示方式
评析:
以指数形式表示实数时,字母e(或E)之前必须有数字,且e后面的指数必须为整数。
(25)已知大写字母A的ASCII码是65,小写字母a的ASCII码是97,则用八进制表示的字符常量‘\101’是_______。
A)字符AB)字符aC)字符eD)非法的常量
(25)A
知识点:
字符与ASCII码的转换,
评析:
八进制101转换为lO进制即为65,而字母A的ASCII码是65,所以用八进制表示的字符常量‘\101’是A。
(26)设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是______。
A)6.500000B)6C)5.500000D)6.000000
(26)D
知识点:
各类数值型数据的混合运算
评析:
各类数值型数据在进行混合运算时,不同类型的数据要先转换成同一类型,然后进行运算。
转换的规则为:
总是转换为精度更大的数据类型,字符数据转换为整数,short型转为int型,float型数据在运算时转换成双精度型,以提高运算精度
(27)若有以下程序:
main()
{intk=2,i=2,m;
m=(k+=i*=k);
printf("%d,%d\n",m,i);
}
执行后的输出结果是_______。
A)8,6B)8,3C)6,4D)7,4
(27)C
知识点:
复合的赋值运算符
评析:
在赋值符“=”之前加上其他运算符,可以构成复合的运算符。
此运算为右结合性。
即从右往左计算。
i*=k即i=i*k=2*2=4,k=k+i=2+4=6,然后将k的值赋给m。
(28)已有定义:
intx=3,y=4,z=5;,则表达式!
(x+y)+z-l&&y+z/2的值是_______。
A)6B)0C)2D)l
(28)D
知识点:
运算符的优先级
评析:
在本题中,运算符的优先级分别为:
!
>/>+,->&&,即:
!
(3+4)+5-1&&4+5/2=O+5-1&&4+2=4&&6=1。
(29)以下选项中,与k=n++完全等价的表达式是_______。
A)k=n,n=n+1B)n=n+1,k=nC)k=++nD)k+=n+1
(29)A
知识点:
自增及赋值运算
评析:
n++是自增运算,是先使用,然后再使n加l,分开来写即为:
k=n,n=n+l。
(30)若已定义x和y为double类型,则表达式x=l,y--x+3/2的值是______。
A)1B)2C)2.0D)2.5
(30)C
知识点:
表达式的运算
评析:
这是一个逗号表达式,它的值应为表达式y-~x+3/2的值,而前一个表达式已给x赋值l,在没有进行类型转换的情况下,3/2的值为1,所以x+3/2的值应为2.0。
(31)以下有4组用户标识符,其中合法的一组是______。
A)FORB)4dC)f2_G3D)WORD
-subDOIFvoid
CaseSizeabcdefine
(31)C
知识点:
c语言标识符
评析:
c语言的标识符的定义为:
以字母或下划线开头的由字母、数字字符、下划线组成的字符串,而且标识符不能与关键字相同。
(32)请选出可用作C语言用户标识符的一组标识符_______。
A)VoidB)a3_b3C)ForD)2a
define_123_abcDO
WORDIFcasesizeof
(32)B
知识点:
C语言的标识符
评析:
c语言规定标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。
选项A中的void和define都和c语言的关键字重名,不合法;
选项C中的case和c语言的关键字重名,不合法;
选项D中的2a是数字打头而且sizeof和c语言的关键字重名,不合法。
(33)下列可用于c语言用户标识符的一组是_______。
A)voiddefineWORDB)a3_b3_123Car
C)For-abcIFCaseD)2aD0sizeof
(33)B
知识点:
c语言的标识符
评析:
c语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,所以排除c和D。
c语言还规定标识符不能为c语言的关键字,从而选项A是错误的,因为void为关键字。
(34)以下各选项企图说明一种新的类型名,其中正确的是______。
A)typedefvlint;B)typedefv2=int;
C)typedefintv3;D)typedefv4:
int
(34)C
知识点:
c语言的类型定义
评析:
c语言中可以使用typedef来重新定义已有的数据类型,相当于为数据类型取个别名。
第四章
(1)有以下程序:
#include
main(){
charc[6];
inti=0:
for(;i<6;c[i]=getchar(),i++);
for(i=0;i<6;i++)putchar(c[i]);
printf("\n");
}
如果从键盘上输入:
ab<回车>
c<回车>
def<回车>
则输出结果为________。
A)aB)aC)abD)abcdef
bbc
ccd
dd
e
f
(1)C
知识点:
字符数据的输入、输出
评析:
1.getchar()
此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。
请注意:
getchar()只能接受一个字符(回车符也算是一个字符)。
getchar函数得到的字符可以赋给一个字符变量或整型变量,也可不赋给任何变量,作为表达式的一部分。
2.putchar()
此函数的作用是向终端输出一个字符,也可以输出控制字符,如回车符·使输出的当前位置移到下一行的开头。
本题在输入字符时,ab和c后面的回车符分别赋给了c[2]和c[4],所以,正确答案为C。
(2)以下程序段给数组所有的元素输入数据,请选择正确答案填入:
#include
main()
{
inta[10],i=0;
while(i:
:
}
A)a+(i++)B)&a[i+l]C]a+iD]&a[++i]
(2)A
知识点:
格式输入函数scanf()
评析:
因为a实际上就是数组a的首地址,而a+x则是数组中第x个元素的地址,所以在四个选项中,选项B和C只能输入一个数据,选项D不能给a[0]输入数据,只有选项A可以完成给数组所有的元素输入数据的任务。
(3)下面程序的输出是_______。
main()
{intk=ll;
printf("k=%d,k=%o,k=%x\n",k,k,k);
}
A)k=11.k=12,k=llB)k=ll,k=13,k=13
C)k=ll,k=013,k=0xbD)k=ll,k=13,k=B
(3)D
知识点:
格式字符
评析:
在c语言格式字符的输出中,“%d”是以带符号的十进制形式输出整数,即k=ll:
“%o”是以8进制无符号形式输出整数(不输出前导符0),即k=13:
“%x”是以16进制无符号形式输出整数(不输出前导符0x),即k=B。
(4)已知字母A的ASCII码为十进制的65,下面程序
main()
{charchl,ch2;
ch1=‘A’+‘5’-‘3’:
ch2=‘A’+‘6’-‘3’:
printf(“%d,%c\n”,ch1,ch2);
}
的输出是_______。
A)67,DB)B,CC)C,DD)不确定的值
(4)A
知识点:
数据的输入与输出,输入输出函数的调用。
评析:
本题的考查点是格式输出函数printf的格式字符。
由于字符“5”和“3”的ASCII码相差为2。
所以ch1经过运算后的值应为65+2=67;同理,ch2经过运算后的值应为65+3=68,即是字符“D”。
(5)下面程序的输出是________。
main()
{
intm=0xa,n=2;
m+=a;
printf("%X\n",m);
}
A)CB)cC)99D)2
(5)A
知识点:
格式字符
评析:
格式控制符x表示数据按十六进制形式输出(不输出前导符0x)。