C语言历年考题真题解析Word文档下载推荐.docx
《C语言历年考题真题解析Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言历年考题真题解析Word文档下载推荐.docx(112页珍藏版)》请在冰豆网上搜索。
C程序可以由一个或多个函数组成,函数可以为空函数,包括main函数。
【答案】D4.以下关于C语言源程序的叙述中错误的是_。
(2007年春选择题第21题)A.一个C源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义B.函数定义由函数头部和函数体两部分组成C.在一个函数定义的函数体中允许定义另一个函数D.在一个函数定义的函数体中允许调用另一个函数或调用函数自身【解析】一个C语言源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义,函数定义由函数头部和函数体两部分组成。
函数可以嵌套调用也可以递归调用,但不能嵌套定义。
C的意思是嵌套定义,错误,D的意思是嵌套调用和递归调用,正确。
【答案】C3.1.2基本数据类型基本数据类型1.以下选项中,_是C语言关键字。
(2010年春选择题第22题)A.printfB.includeC.funD.default【解析】default是关键字,用在switch语句中。
printf和include属于预定义标识符,其中printf是输出函数名,include用在预编译处理命令中。
fun是用户自定义标识符。
【答案】D2.在以下各组标识符中,均可以用作变量名的一组是_。
(2007年秋选择题第22题)A.a01,IntB.table_1,a*.1C.0_a,W12D.for,point【解析】选项A中两个都符合标识符的命令规则,Int与关键字int是不同的标识符,选项B的第2个标识符中有*号,不符合标识符命名规则,选项C数字开头,不允许,选项D中的for是关键字,不能做变量名。
【答案】A3.以下定义和声明中,语法均有错误的是_。
(2009年春选择题第21题)int_f(intx)intf(intf)int2x=1;
structforintx;
A.B.C.D.【解析】本题考的是标识符的命名规则。
定义的整型变量名数字开头,不符合命名规则。
中定义的结构体类型名for属于关键字,不能作为结构体类型名。
中使用的函数名和形式参数名相同,在语法上可以,但在实际编程时不提倡使用。
【答案】B4.在C语言系统中,如果一个变量能正确存储的数据范围为整数-3276832767,则该变量在内存中占_个字节。
(2010年春填空题第3题)
【解析】表示范围为整数-3276832767的属于int型或short型的变量,它们在内存占2个字节。
【答案】25.若有声明“intx;
”且sizeof(x)的值为2,则当x值为_时“x+1x”为假。
(2009年春填空题第2题)
【解析】x为int型,其表示范围为-32768+32767,当x为32767时,再加1就变成了-32768了,此时,就是x+1x”为假的情况。
这是由int型数据在内存中的存储情况决定的。
int型数据在内存中占2个字节,以补码的形式存放,32767的补码为0111111111111111,加1以后就变成了1000000000000000,为-32768的补码,这种情况为溢出,数处于边界时会溢出。
sizeof(x)是求字节数运算符。
【答案】327676.已知sizeof(int)的值为2,为将10!
的值存储到变量f中(10!
=3628800),变量f的类型应声明为_。
(2008年秋选择题第23题)A.longintB.intC.shortintD.unsignedint【解析】10!
=3628800,超过了int的范围-32768+32767,而长整型在内存占4个字节,表示范围大到-2147483482147483647,应该要用长整型才可以存放3628800。
【答案】A7.以下常量表示中正确的是_。
(2008年春选择题第22题)A.xffB.5LC.aEbD.3.14U【解析】选项A若想表示成十六进制常量,正确的表示应该是0xff,如果表示成转义字符,应该放在单引号内:
0xff。
选项B表示的是长整型常量,选项C是一个标识符,不能表示常量,选项D表示的是无符号整数,但无符号整数不应该有小数。
【答案】B8.以下表示中不能用作C语言常量表示的是。
(2007年春选择题第22题)A.0ULB.(long)123C.1e0D.x2a【解析】0UL意为将0以无符号长整型存放,B为强制类型转换,是表达式,表示长整型常量应该在123后加字母l或L。
C是实常量,指数表示法,意为1乘以10的0次方,e前面必须有数字,后面的数字必须是整数。
D是转义字符,表示十六进制数2a。
【答案】B9.在C语言源程序中,不带任何修饰的浮点数直接量(例如:
3.14)都是按_类型数据存储的。
(2008年春填空题第1题)
【解析】实型常量的类型默认为double类型,在内存中占8个字节。
带f修饰即3.14f或3.14F,则认为它是float型,在内存中占4个字节。
【答案】double10.已知有声明“charch=g;
”,则表达式ch=ch-a+A的值为字符_的编码。
(2010年春填空题第2题)
【解析】本题的功能是将小写字母转换成大写字母。
-a+A实际上就是减去32,对于一个小写字母来说,减去32就变成对应的大写字母。
【答案】G11.若有程序段“charc=256;
inta=c;
”,则执行该程序段后a的值是_。
(2007年秋选择题第24题)A.256B.65536C.0D.-1【解析】将256转换成二进制,为100000000,占9位,而char在内存只占一个字节,即8位,截取低8位赋给字符变量c,得c=0,将c的值赋给a,结果为0。
【答案】C3.1.3运算符和表达式运算符和表达式1.已知有声明“inta=3,b=4,c;
”,则执行语句“c=1/2*(a+b);
”后,c的值为_。
(2010年春选择题第23题)A.0B.3C.3.5D.4【解析】本题考查的是两整数相除,结果为整数,截取的是整数部分,不是四舍五入。
1/2等于0,0乘于任何一个整数结果还是0,最后结果为0。
【答案】A2.已知有声明“longx,y;
”且x中整数的十进制表示有n位数字(4n10),若要求去掉整数x十进制表示中的最高位,用剩下的数字组成一个新的整数并保存到y中,则以下表达式中能正确实现这一功能的是_。
(2009年秋选择题第25题)A.y=x/(10*(n-1)B.y=x%(10*(n-1)C.y=x%(long)pow(10,n-1)D.y=x%(10(n-1)
【解析】本类型的题目,拿一个具体的数,放到四个选项中去计算,就能得到正确答案。
假设x为1234,代入A中,为1234/(10*3),肯定不是234,代入B中,为1234%(10*3)也不对,代入C中为1234%(long)103,结果为234,正确,选C。
而D中的“”在C语言中是指位运算中的“异或”运算,不是求指数。
【答案】C3.若有声明“floaty=3.14619;
intx;
”,则计算表达式“x=y*100+0.5,y=x/100.0”后y的值是_。
(2009年春填空题第3题)
【解析】x=y*100+0.5=3.14619*100+0.5=315,因为x为int,截取整数部分赋给x。
然后计算y=x/100.0=315/100=3.15,y是浮点数。
【答案】3.154.若有声明“inta=32767,b;
”,则在TurboC2.0系统中执行语句“printf(%d,b=+a);
”后输出结果是_。
(2006年秋填空题第3题)
【解析】本题有4个知识点:
一是printf语句,输出%d格式,二是赋值运算及赋值表达式的值,三是+运算,四是int型数据的表示范围及整数在内存的存储情况。
b=+a是将a的值加1后赋给b,a、b是int型,处于-3276832767范围内,32767+1=-32768,整数在计算机中以补码形式存储,32767的补码为0111111111111111,加1后为1000000000000000,是-32768的补码。
对于int数据,32767+1等于-32768。
若是long型,满足32767+1等于32768。
【答案】-327685.已知有声明“inta=3,b=4;
”,下列表达式中合法的是_。
(2010年春选择题第25题)A.a+b=7B.a=|b|C.a=b=0D.(a+)+【解析】本题考查的是赋值运算符和“+”运算符的左值要求。
左值必须是变量,不能是常量和表达式。
选项A左边是表达式,不允许,选项D括号中的a+也是表达式,不能进行+运算。
选项B是一个代数式,必须转换成C语言合法的表达式,表示成a=abs(b)。
选项C正确,将0赋给b,再赋给a,a和b的值不再是初始化的值,而变成0了。
【答案】C6.已知有声明“intn;
floatx,y;
”,则执行语句“y=n=x=3.89;
”后,y的值为_。
(2010年春选择题第28题)A.3B.3.0C.3.89D.4.0【解析】本题考查的是不同类型间的赋值。
赋值运算符右结合。
先将3.89赋给x,表达式的值也为3.89,再将3.89赋给n,n是int,自动截取整数部分,将3赋给n。
最后将3赋给y,y是float,将整数3转换成实数3.0后赋给y,y值为3.0。
【答案】B7.以下程序运行时输出到屏幕的结果是_。
(2010年春阅读程序第7题)#includevoidmain()inta=1,b=2;
a+=b;
b=a-b;
a-=b;
printf(%d,%dn,a,b);
【解析】本题的考点是复合赋值运算符,程序功能是不用临时变量,实现两个变量的值的交换。
计算过程如下:
a=a+b=1+2=3,b=a-b=3-2=1,a=a-b=3-1=2。
最后结果是a为2,b为1。
变量的值在程序运行过程中可能在不断的变化,每次计算都要用最新得到的值。
【答案】2,18.若有声明“intx=2,y=1,z=0;
”,则下列关系表达式中有语法错误的是_。
(2008年春选择题第25题)A.xy=2B.zyxC.