C语言历年考题 真题 解析.docx

上传人:b****5 文档编号:3172216 上传时间:2022-11-18 格式:DOCX 页数:110 大小:111.28KB
下载 相关 举报
C语言历年考题 真题 解析.docx_第1页
第1页 / 共110页
C语言历年考题 真题 解析.docx_第2页
第2页 / 共110页
C语言历年考题 真题 解析.docx_第3页
第3页 / 共110页
C语言历年考题 真题 解析.docx_第4页
第4页 / 共110页
C语言历年考题 真题 解析.docx_第5页
第5页 / 共110页
点击查看更多>>
下载资源
资源描述

C语言历年考题 真题 解析.docx

《C语言历年考题 真题 解析.docx》由会员分享,可在线阅读,更多相关《C语言历年考题 真题 解析.docx(110页珍藏版)》请在冰豆网上搜索。

C语言历年考题 真题 解析.docx

C语言历年考题真题解析

语言规定,在一个源程序中main函数的位置______。

(2010年春选择题第21题)

A.必须在最开始B.必须在最后

C.必须在预处理命令的后面D.可以在其他函数之前或之后

【解析】main函数也叫主函数,是C语言编译系统提供的特殊函数,可以放在程序中的任何位置,但不能定义在其他函数体内。

C程序总是从main函数的第一条语句开始执行。

【答案】D

2.以下叙述中正确的是________。

(2009年秋选择题第21题)

语言系统以函数为单位编译源程序

函数必须放在程序开始

C.用户定义的函数可以被一个或多个函数调用任意多次

D.在一个函数体内可以定义另外一个函数

【解析】C语言系统以程序为单位编译源程序,程序由函数组成。

main函数可以放在其他函数之前或之后。

除了main函数外,函数可以被其他函数多次调用。

函数不能定义在其他函数体内,即不能嵌套定义。

【答案】C

3.以下叙述中正确的是_________。

(2008年秋选择题第21题)

A.在编译时可以发现注释中的拼写错误

语言程序的每一行只能写一条语句

(){}必须位于程序的开始

语言程序可以由一个或多个函数组成

【解析】C程序的注释不产生编译代码,编译时跳过去,发现不了其中错误。

C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。

main函数可以放在程序中的任何位置。

C程序可以由一个或多个函数组成,函数可以为空函数,包括main函数。

【答案】D

4.以下关于C语言源程序的叙述中错误的是________。

(2007年春选择题第21题)

A.一个C源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义

B.函数定义由函数头部和函数体两部分组成

C.在一个函数定义的函数体中允许定义另一个函数

D.在一个函数定义的函数体中允许调用另一个函数或调用函数自身

【解析】一个C语言源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义,函数定义由函数头部和函数体两部分组成。

函数可以嵌套调用也可以递归调用,但不能嵌套定义。

C的意思是嵌套定义,错误,D的意思是嵌套调用和递归调用,正确。

【答案】C

基本数据类型

1.以下选项中,___________是C语言关键字。

(2010年春选择题第22题)

【解析】default是关键字,用在switch语句中。

printf和include属于预定义标识符,其中printf是输出函数名,include用在预编译处理命令中。

fun是用户自定义标识符。

【答案】D

2.在以下各组标识符中,均可以用作变量名的一组是_____。

(2007年秋选择题第22题)

,Int,a*.1,W12,point

【解析】选项A中两个都符合标识符的命令规则,Int与关键字int是不同的标识符,选项B的第2个标识符中有*号,不符合标识符命名规则,选项C数字开头,不允许,选项D中的for是关键字,不能做变量名。

【答案】A

3.以下定义和声明中,语法均有错误的是___________。

(2009年春选择题第21题)

①int_f(intx){}②intf(intf){}③int2x=1;④structfor{intx;};

A.②③B.③④C.①④D.①②③④

【解析】本题考的是标识符的命名规则。

③定义的整型变量名数字开头,不符合命名规则。

④中定义的结构体类型名for属于关键字,不能作为结构体类型名。

②中使用的函数名和形式参数名相同,在语法上可以,但在实际编程时不提倡使用。

【答案】B

4.在C语言系统中,如果一个变量能正确存储的数据范围为整数-32768~32767,则该变量在内存中占________个字节。

(2010年春填空题第3题)

【解析】表示范围为整数-32768~32767的属于int型或short型的变量,它们在内存占2个字节。

【答案】2

5.若有声明“intx;”且sizeof(x)的值为2,则当x值为___________时“x+1>x”为假。

(2009年春填空题第2题)

【解析】x为int型,其表示范围为-32768~+32767,当x为32767时,再加1就变成了-32768了,此时,就是x+1>x”为假的情况。

这是由int型数据在内存中的存储情况决定的。

int型数据在内存中占2个字节,以补码的形式为-32768的补码,这种情况为溢出,数处于边界时会溢出。

sizeof(x)是求字节数运算符。

【答案】32767

6.已知sizeof(int)的值为2,为将10!

的值存储到变量f中(10!

=3628800),变量f的类型应声明为___________。

(2008年秋选择题第23题)

A.longintB.intC.shortintint

【解析】10!

=3628800,超过了int的范围-32768~+32767,而长整型在内存占4个字节,表示范围大到,应该要用长整型才可以存放3628800。

【答案】A

7.以下常量表示中正确的是__________。

(2008年春选择题第22题)

【解析】选项A若想表示成十六进制常量,正确的表示应该是0xff,如果表示成转义字符,应该放在单引号内:

'\0xff'。

选项B表示的是长整型常量,选项C是一个标识符,不能表示常量,选项D表示的是无符号整数,但无符号整数不应该有小数。

【答案】B

8.以下表示中不能用作C语言常量表示的是____。

(2007年春选择题第22题)

   B.(long)123D.'\x2a'

【解析】0UL意为将0以无符号长整型存放,B为强制类型转换,是表达式,表示长整型常量应该在123后加字母l或L。

C是实常量,指数表示法,意为1乘以10的0次方,e前面必须有数字,后面的数字必须是整数。

D是转义字符,表示十六进制数2a。

【答案】B

9.在C语言源程序中,不带任何修饰的浮点数直接量(例如:

)都是按_________类型数据存储的。

(2008年春填空题第1题)

【解析】实型常量的类型默认为double类型,在内存中占8个字节。

带f修饰即或,则认为它是float型,在内存中占4个字节。

【答案】double

10.已知有声明“charch='g';”,则表达式ch=ch-'a'+'A'的值为字符__________的编码。

(2010年春填空题第2题)

【解析】本题的功能是将小写字母转换成大写字母。

-'a'+'A'实际上就是减去32,对于一个小写字母来说,减去32就变成对应的大写字母。

【答案】G

11.若有程序段“charc=256;inta=c;”,则执行该程序段后a的值是______。

(2007年秋选择题第24题)

【解析】将256转换成二进制,为100000000,占9位,而char在内存只占一个字节,即8位,截取低8位赋给字符变量c,得c=0,将c的值赋给a,结果为0。

【答案】C

运算符和表达式

1.已知有声明“inta=3,b=4,c;”,则执行语句“c=1/2*(a+b);”后,c的值为_______。

(2010年春选择题第23题)

【解析】本题考查的是两整数相除,结果为整数,截取的是整数部分,不是四舍五入。

1/2等于0,0乘于任何一个整数结果还是0,最后结果为0。

【答案】A

2.已知有声明“longx,y;”且x中整数的十进制表示有n位数字(4

(2009年秋选择题第25题)

=x/(10*(n-1))=x%(10*(n-1))

=x%(long)pow(10,n-1)=x%(10(n-1))

【解析】本类型的题目,拿一个具体的数,放到四个选项中去计算,就能得到正确答案。

假设x为1234,代入A中,为1234/(10*3),肯定不是234,代入B中,为1234%(10*3)也不对,代入C中为1234%(long)103,结果为234,正确,选C。

而D中的“”在C语言中是指位运算中的“异或”运算,不是求指数。

【答案】C

3.若有声明“floaty=;intx;”,则计算表达式“x=y*100+,y=x/”后y的值是___________。

(2009年春填空题第3题)

【解析】x=y*100+=*100+=315,因为x为int,截取整数部分赋给x。

然后计算y=x/=315/100=,y是浮点数。

【答案】

4.若有声明“inta=32767,b;”,则在TurboC系统中执行语句“printf("%d",b=++a);”后输出结果是_________。

(2006年秋填空题第3题)

【解析】本题有4个知识点:

一是printf语句,输出%d格式,二是赋值运算及赋值表达式的值,三是++运算,四是int型数据的表示范围及整数在内存的存储情况。

b=++a是将a的值加1后赋给b,a、b是int型,处于-32768~32767范围内,32767+1=后为若是long型,满足32767+1等于32768。

【答案】-32768

5.已知有声明“inta=3,b=4;”,下列表达式中合法的是______。

(2010年春选择题第25题)

+b=7=|b|=b=0D.(a++)++

【解析】本题考查的是赋值运算符和“++”运算符的左值要求。

左值必须是变量,不能是常量和表达式。

选项A左边是表达式,不允许,选项D括号中的a++也是表达式,不能进行++运算。

选项B是一个代数式,必须转换成C语言合法的表达式,表示成a=abs(b)。

选项C正确,将0赋给b,再赋给a,a和b的值不再是初始化的值,而变成0了。

【答案】C

6.已知有声明“intn;floatx,y;”,则执行语句“y=n=x=;”后,y的值为________。

(2010年春选择题第28题)

【解析】本题考查的是不同类型间的赋值。

赋值运算符右结合。

先将赋给x,表达式的值也为,再将赋给n,n是int,自动截取整数部分,将3赋给n。

最后将3赋给y,y是float,将整数3转换成实数后赋给y,y值为。

【答案】B

7.以下程序运行时输出到屏幕的结果是___________。

(2010年春阅读程序第7题)

#include<>

voidmain()

{inta=1,b=2;

a+=b;

b=a-b;

a-=b;

printf("%d,%d\n",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,1

8.若有声明“intx=2,y=1,z=0;”,则下列关系表达式中有语法错误的是_______。

(2008年春选择题第25题)

A.x>y=2>y>x>y==1==(x=0,y=1,z=2)

【解析】赋值表达式的运算数有左值要求,赋值号左边必须是变量,不能是表达式,A错。

B没有语法错误,z>y成立结果为1,不成立为0,再将1或0与x比较,判断其是否成立。

C先判断x>y是否成立,得到0或1再与1比较是否相等,最后的结果要么是0要么是1。

D先做括号中的逗号表达式,依次进行赋值,最后一个表达式的值2是整个逗号表达式的值,将其与x的值进行是否相等的比较。

【答案】A

9.已知有声明“inta=12,b=15,c;”,则执行

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1