ImageVerifierCode 换一换
格式:DOCX , 页数:140 ,大小:157.38KB ,
资源ID:12405842      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12405842.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言历年考题真题解析.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、C语言历年考题真题解析1.C语言规定,在一个源程序中main函数的位置 _ 。(2010年春选择题第21题)A.必须在最开始 B.必须在最后 C.必须在预处理命令的后面 D.可以在其他函数之前或之后 【解析】main函数也叫主函数,是C语言编译系统提供的特殊函数,可以放在程序中的任何位置,但不能定义在其他函数体内。C程序总是从main函数的第一条语句开始执行。【答案】D2.以下叙述中正确的是_ 。(2009年秋选择题第21题)A.C语言系统以函数为单位编译源程序B.main函数必须放在程序开始C.用户定义的函数可以被一个或多个函数调用任意多次D.在一个函数体内可以定义另外一个函数【解析】C语言

2、系统以程序为单位编译源程序,程序由函数组成。main函数可以放在其他函数之前或之后。除了main函数外,函数可以被其他函数多次调用。函数不能定义在其他函数体内,即不能嵌套定义。【答案】C3.以下叙述中正确的是_ 。(2008年秋选择题第21题)A.在编译时可以发现注释中的拼写错误B.C语言程序的每一行只能写一条语句C.main()必须位于程序的开始D.C语言程序可以由一个或多个函数组成【解析】C程序的注释不产生编译代码,编译时跳过去,发现不了其中错误。C程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。main函数可以放在程序中的任何位置。C程序可以由一个或多个函数组成,函数可

3、以为空函数,包括main函数。【答案】D4.以下关于C语言源程序的叙述中错误的是_。(2007年春选择题第21题)A.一个C源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义B.函数定义由函数头部和函数体两部分组成C.在一个函数定义的函数体中允许定义另一个函数D.在一个函数定义的函数体中允许调用另一个函数或调用函数自身【解析】一个C语言源程序由若干个函数定义组成,其中必须有且仅有一个名为main的函数定义,函数定义由函数头部和函数体两部分组成。函数可以嵌套调用也可以递归调用,但不能嵌套定义。C的意思是嵌套定义,错误,D的意思是嵌套调用和递归调用,正确。【答案】C3.1.2

4、基本数据类型1.以下选项中,_ 是C语言关键字。 (2010年春选择题第22题)A.printf B.include C.fun D.default 【解析】default是关键字,用在switch语句中。printf和include属于预定义标识符,其中printf是输出函数名,include用在预编译处理命令中。fun是用户自定义标识符。【答案】D2.在以下各组标识符中,均可以用作变量名的一组是_。(2007年秋选择题第22题)A.a01,Int B.table_1,a*.1 C.0_a,W12 D.for,point【解析】选项A中两个都符合标识符的命令规则,Int与关键字int是不同的

5、标识符,选项B的第2个标识符中有*号,不符合标识符命名规则,选项C数字开头,不允许,选项D中的for是关键字,不能做变量名。【答案】A3.以下定义和声明中,语法均有错误的是_。 (2009年春选择题第21题)int _f(int x) int f(int f) int 2x=1; struct forint x;A. B. C. D.【解析】本题考的是标识符的命名规则。定义的整型变量名数字开头,不符合命名规则。中定义的结构体类型名for属于关键字,不能作为结构体类型名。中使用的函数名和形式参数名相同,在语法上可以,但在实际编程时不提倡使用。【答案】B4.在C语言系统中,如果一个变量能正确存储的

6、数据范围为整数-3276832767,则该变量在内存中占_个字节。 (2010年春填空题第3题)【解析】表示范围为整数-3276832767的属于int型或short型的变量,它们在内存占2个字节。【答案】25.若有声明“int x;”且sizeof(x)的值为2,则当x值为_时“x+1x”为假。(2009年春填空题第2题)【解析】x为int型,其表示范围为-32768+32767,当x为32767时,再加1就变成了-32768了,此时,就是x+1x”为假的情况。这是由int型数据在内存中的存储情况决定的。int型数据在内存中占2个字节,以补码的形式存放,32767的补码为01111111 1

7、1111111,加1以后就变成了10000000 00000000,为-32768的补码,这种情况为溢出,数处于边界时会溢出。sizeof(x)是求字节数运算符。【答案】327676.已知sizeof(int)的值为2,为将10!的值存储到变量f中(10!=3628800),变量f的类型应声明为_ 。(2008年秋选择题第23题)A. long int B. int C. short int D.unsigned int【解析】10!=3628800,超过了int的范围-32768+32767,而长整型在内存占4个字节,表示范围大到-2147483482147483647,应该要用长整型才可以

8、存放3628800。【答案】A7.以下常量表示中正确的是_ 。(2008年春选择题第22题)A.xff B.5L C.aEb D.3.14U【解析】选项A若想表示成十六进制常量,正确的表示应该是0xff,如果表示成转义字符,应该放在单引号内:0xff。选项B表示的是长整型常量,选项C是一个标识符,不能表示常量,选项D表示的是无符号整数,但无符号整数不应该有小数。【答案】B8.以下表示中不能用作C语言常量表示的是。(2007年春选择题第22题)A.0UL B.(long)123 C.1e0 D.x2a【解析】0UL意为将0以无符号长整型存放,B为强制类型转换,是表达式,表示长整型常量应该在123

9、后加字母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.已知有声明“char ch=g;”,则表达式ch=ch-a+A的值为字符_的编码。 (2010年春填空题第2题)【解析】本题的功能是将小写字母转换成大写字母。

10、-a+A实际上就是减去32,对于一个小写字母来说,减去32就变成对应的大写字母。【答案】G11.若有程序段“char c=256;int a=c;”,则执行该程序段后a的值是_。(2007年秋选择题第24题) A.256 B.65536 C.0 D.-1【解析】将256转换成二进制,为10000 0000,占9位,而char在内存只占一个字节,即8位,截取低8位赋给字符变量c,得c=0,将c的值赋给a,结果为0。【答案】C3.1.3 运算符和表达式 1.已知有声明“int a=3,b=4,c;”,则执行语句“c=1/2*(a+b);”后,c的值为_ 。(2010年春选择题第23题)A.0 B.

11、3 C.3.5 D.4 【解析】本题考查的是两整数相除,结果为整数,截取的是整数部分,不是四舍五入。1/2等于0,0乘于任何一个整数结果还是0,最后结果为0。【答案】A2.已知有声明“long x,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)【解析】本类型的题目,拿一个具体的数,放到四个选项中去计算,

12、就能得到正确答案。假设x为1234,代入A中,为1234/(10*3),肯定不是234,代入B中,为1234%(10*3)也不对,代入C中为1234%(long)103,结果为234,正确,选C。而D中的“”在C语言中是指位运算中的“异或”运算,不是求指数。【答案】C3.若有声明“float y=3.14619;int x;”,则计算表达式“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是浮

13、点数。【答案】3.154.若有声明“int a=32767,b;”,则在Turbo C 2.0系统中执行语句“printf(%d,b=+a);”后输出结果是_ 。(2006年秋填空题第3题)【解析】本题有4个知识点:一是printf语句,输出%d格式,二是赋值运算及赋值表达式的值,三是+运算,四是int型数据的表示范围及整数在内存的存储情况。b=+a是将a的值加1后赋给b,a、b是int型,处于-3276832767范围内,32767+1=-32768,整数在计算机中以补码形式存储,32767的补码为01111111 11111111,加1后为10000000 00000000,是-32768

14、的补码。对于int数据,32767+1等于-32768。若是long型,满足32767+1等于32768。【答案】-3276810.已知有声明“int a=3,b=4,c=5;”,以下表达式中值为0的是_ 。(2009年秋选择题第24题)A.a&b B.a=b C.a|b&c D.!(!c|1)【解析】a&b中a和b都是非0,A的结果为1。B中a=b成立,结果为1。C中&优先级高于|,先做&,b和c的值非0,b&c的结果为1,因为是|运算,最后的结果肯定是1。D中c非0,!c为0,与1逻辑或为1,将括号中的1再逻辑非,结果为0。【答案】D11.C语言中有!、&、|三个逻辑运算符,其中优先级高于

15、算术运算符的是_ 。(2009年秋填空题第1题)【解析】逻辑非“!”是单目运算符,优先级为2级,高于3级的“* / %”和4级的“+”和“-”。 “&”的优先级为11级,“|”的优先级为12,低于算术运算符。【答案】!12.以下表示数学式“abc”的逻辑表达式中,错误的是_。(2007年春选择题24题)A.abc B.ab & b=b)&!(b=c) D.!(a=b|b=c)【解析】最好的答案是B,但C、D与B的功能相同。C中!(a=b)就是ab,而D中将!放到外面,“&”就变成了“|”。选项A先判断a013.以下选项中,不能表示函数sign(x)= 0 x=0 功能的表达式是_。 -1 x0

16、)?1:(x0)?-1:0 B.s=x0?1:0)C.s=x0?1:x=0?0:-1【解析】本题考点是嵌套的条件表达式。仔细分析它们的逻辑关系,选项C的功能是当x0再判断x=0是否成立决定值为0还是1,不合题意。【答案】 C14.若有声明“int a=5,b=2;”,则表达式“b+=(float)(a+b)/2”运算后b的值为_ 。(2007年秋填空题第1题)【解析】b+=(float)(a+b)/2相当于b=b+(float)(a+b)/2)。先执行a+b得7,转换成实数7.0除以2,得3.5,然后将原来的b=2加3.5得5.5,b是int,截取整数部分5赋给b。【答案】515.设指针变量占

17、2个字节的内存空间,若有声明“char *p=123;int c;”,则执行语句“c=sizeof(p);”后,c的值为_ 。(2010年春选择题第24题) A.1 B.2 C.3 D.4 【解析】题目告诉我们指针变量占2个字节,而sizeof的功能就是计算变量在内存中所占的字节数,c的值为指针变量p在内存中占用的字节数,为2。【答案】B16.若有声明“int r=2;”,则执行语句“printf(%d,sizeof(2*3.14*r);”时输出_ 。(2009年秋填空题第2题)【解析】本题输出表达式2*3.14*r的结果在内存中占用的字节数。2*3.14*r的结果为实常量,其中有一个实常量3

18、.14,C中实常量默认为double型。根据类型转换规则,其他类型的数据也要转换成double型,最后结果为double型,在内存占8个字节。一般情况,只要表达式中有一个数据为double型,最后的结果就是double型。【答案】817.数学式所对应的c语言表达式为pow(x, _ )。 (2010年春填空题第1题)【解析】pow(x,y)是求x的y次方的函数。就是x的三分之一次方。此处注意的是1/3=0,要将其中一个转换为浮点数。【答案】1.0/3或者1/3.0或者(double)1/318.数学表达式 所对应的C语言表达式为 _ 。(2009年秋填空题第3题)【解析】求平方根的函数为sqr

19、t,求绝对值的函数为abs或fabs,abs求整数的绝对值,fabs求实数的绝对值。“”用“!=”表示。4a要用4*a表示,*表示乘号,不能缺省。分母一定要加括号,若不加括号得用除“/”不是用乘“*”。加括号的表示方式看起来更直观。【答案】sqrt(fabs(x)!=4*a/(b*c)或sqrt(fabs(x)!=4*a/b/c3.2.1 实现顺序结构的语句1.以下关于C语言语句的叙述中正确的是_ 。(2006年秋选择题第27题)A.所有语句都包含关键字B.所有语句都包含表达式C.所有语句都可以出现在源程序中的任何位置D.除复合语句外的其他所有语句都以分号结束【解析】关键字只有32个,大多数用

20、来进行变量类型说明以及实现条件选择和循环结构的控制语句。很多语句中没有关键字的,如赋值语句。表达式也不一定在所有的语句中出现的,如函数调用语句。语句是程序的执行部分,放在函数内部,而且在说明部分之后。C语言中复合语句中的各条语句都必须有分号“;”,但在“”外没有分号。【答案】D2.已知int类型数据在内存中存储长度为2个字节,以下语句中能正确输出整数32768的是_ 。(2009年秋选择题第23题)A.printf(%d,32768); B.printf(%ld,32768);C.printf(%f,32768); D.printf(%c,32768);【解析】本题考点是输出格式。%d格式输出

21、int型整数,范围为-3276832767,%f格式输出浮点数,%c格式输出字符。%ld格式输出长整型整数,范围为-21亿21亿。【答案】B3.以下语句中有语法错误的是_ 。 (2009年春选择题第24题)A.printf(%d,0e); B.printf(%f,0e2); C.printf(%d,0x2); D.printf(%s,0x2);【解析】本题考点为输出格式及常量表示。A中的%d表示输出int型整数,0开头为八进制数,只能为07共8个数字,不能为e。B是%f格式,输出实数,0e2是指数形式,即为0*102。C输出int型整数,0x是十六进制形式,D用%s格式输出字符串常量0x2。【

22、答案】A4.已知有声明和语句“int a;scanf(a=%d,&a);”,欲从键盘上输入数据使a中的值为3,则正确的输入应是 _。 (2010年春填空题第5题)【解析】“a=”是原样字符,要照输。“%d”的位置输入对应的变量a的值3。就是将键盘输入的值3存入变量a的地址单元,这样a的值就为3。【答案】a=35.若有声明“long a,b;”且变量a和b都需要通过键盘输入获得初值,则下列语句中正确的是_ 。 (2007年秋选择题第23题)A.scanf(%ld%ld,&a,&b); B.scanf(%d%d,a,b);C.scanf(%d%d,&a,&b); D.scanf(%ld%ld,&a

23、,&b);【解析】a和b是long型,输入时要用“%ld”格式。对于变量,scanf函数的地址表中必须有取地址运算符“&”,而且只在格式控制串上有双引号,地址表列上不应有双引号。满足这些要求的只有选项D。【答案】D6.若有声明“int i;float x;char a50;”,为使i得到值1,x得到值3.1416,a得到值yz,当执行语句“scanf(%3d%f%2s,&i,&x,a);”时,正确的输入形式是_ 。(2006年秋选择题第23题)A.1,3.1416,yz B. 13.1416yz C.001 3.1416 yz D.i=001,x=3.1416,a=yz【解析】第一个输入格式“

24、%3d”对应变量i,要输入3位,而i值为1,只占1位,补足3位,输入时在前面加00,输完“001”后用空格或回车或TAB键分隔。第二个输入格式“%f”,对应的数为实数3.1416,输完加分隔符。第三个输入格式“%2s”,是2个字符的字符串,a为数组名,本身就已表示地址了,前面无“&”。选项C满足要求。A用逗号分隔,逗号不是有效的分隔符,只有当格式控制串中有原样字符逗号时才需输入逗号,而且i不足3位。B在输入数据时没有分隔符,D在输入时有“i=”等字符,不需要。【答案】C7.已知有声明“char s80;”,若需要将键盘输入的一个不含空格的字符串保存到s数组中,则下列语句中正确的是_ 。(200

25、9年秋选择题第28题)A.scanf(%s,s); B.scanf(%s,s0); C.s=gets(); D.s=getchar();【解析】A中的scanf函数中的s是数组名,本身就表示地址了,不用再加“&”。B中的s0表示一个元素,不是地址,C中应该将s放入括号中作为gets函数的参数,D中的getchar函数一次只能输入一个字符。scanf函数不能输入空格。 【答案】A8.若有声明“char sl0=remind;”,执行“puts(s+2);”后的输出结果是_。 (2007年秋填空题第2题)【解析】puts函数的功能是输出一个字符串。s表示数组的起始地址,s+2表示数组元素的第2个元

26、素的地址,所以从s2元素开始输出,结果为mind。【答案】mind3.2.2 实现选择结构的语句1.已知有声明“int x,y;”,若要求编写一段程序实现“当x大于等于0时y取值1,否则y取值-1”,则以下程序段中错误的是_ 。(2009年秋选择题第26题)A.if(x=0) y=1;else y=-1; B.y=x=0?1:-1; C.switch() D.switch(x-abs(x) case x=0: y=1;break; case 0:y=1;break;default:y=-1; default:y=-1; 【解析】本题考点为if语句和switch语句。选项A用if语句表示,正确。

27、选项B用条件表达式表示,x大于等于0成立将1赋值给y,否则将-1赋值给y。选项C用switch语句,但不符合switch的语法规则,switch的括号中必须有一常量或表达式,不能为空。case后是一个常量表达式,其中只能有常量和运算符,不能有变量。选项D中,当x大于等于0时,x-abs(x)为0,执行y=1,否则就不是为0,执行y=-1。【答案】C2.以下程序运行时输出到屏幕的结果是 _ 。(2009年秋阅读程序第7题)#include void main() int i=1,m=0; switch(i) case 1: case 2: m+; case 3: m+; printf(%d,m)

28、; 【解析】因为case后无break语句,switch中的m+都要执行,m的初值为0,执行2次m+后m的值为2。【答案】23.2.3实现循环结构的语句1.程序段“int x=3;doprintf(%d,x-);while(!x);”的执行结果是_ 。(2006年秋选择题第24题)A.3 2 1 B.2 C.3 D.死循环【解析】本题的考点是do-while循环和自减运算符。先执行输出语句,输出x的值, x-,先用x的值3,再减1,为2。输出一个3,然后判断!x看是否继续循环,x为2,非0,!x就为0,循环结束。【答案】C2.若有声明“int i,k=1;unsigned j;”,则下列语句执

29、行时会出现无限循环的语句是_ 。(2008年春选择题第27题)A.for(j=15;j0;j-=2) k+; B.for(j=0;j15;j+=2) k+;C.for(i=0;i0;i-=2) k+;【解析】本题的考点是for循环的结束条件与无符号整数。j是无符号整数,永远不会小于0,选项A中,j的初值为单数,每次减2,还是单数,j也不会等于0,即j0永远满足, A是无限循环。【答案】A3.设有变量声明“char c;”,执行“for(;c=(getchar()!=n);)printf(%c,c);”时,从键盘上输入“ABCDEFG回车”之后,输出的结果是_ 。(2006年秋选择题第28题)A.ABCDEFG B. AABBCCDDEEFFGG C.非字母数字字符 D.语句不能执行【解析】for语句中,先执行条件判断(getchar()!=n),若不是回车条件成立,结果为1,将之赋给变量c,输出ASCII码值为1的对应的字

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

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