计算机二级C 语言10,09笔试讲解.doc_第1页
计算机二级C 语言10,09笔试讲解.doc_第2页
计算机二级C 语言10,09笔试讲解.doc_第3页
计算机二级C 语言10,09笔试讲解.doc_第4页
计算机二级C 语言10,09笔试讲解.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2010年9月全国计算机二级C语言笔试试题一、选择题(每小题2分,共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的。请将正确选项填涂在答题卡相应位置上,答在试卷上不得分。(11)以下关于结构化程序设计的叙述中正确的是A)一个结构化程序必须同时由顺序、分支、循环三种结构组成B)结构化程序使用goto语句会很便捷C)在C语言中,程序的模块化是利用函数实现的D)由三种基本结构构成的程序只能解决小规模的问题【答案与解析】C、C语言中有顺序、选择(分支)、循环三种基本结构,这三种基本结构组成的算法可以任何复杂的问题,但并不是所有的程序都要用到这三种结构。goto语句称为无条件转向语句,滥用goto语句会是程序流程毫无规律,可读性变差,应尽量避免使用。(12)以下关于简单程序设计的步骤和顺序的说法中正确的是A)确定算法后,整理并写出文档,最后进行编码和上机调试B)首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理文档C)先编码和上机调试,在编码过程中确定算法和数据结构,最后整理文档D)先写好文档,再根据文档进行编码和上机调试,最后确定算法和数据结构【答案与解析】B、本题考查程序设计基本知识。简单程序设计首先确定数据结构,然后确定算法,再编码,并上机调试,最后整理出文档。(13)以下叙述中错误的是A) C程序在运行过程中所有计算都以二进制方式进行B)C程序在运行过程中所有计算都以十进制方式进行C)所有C程序都需要编译链接无误后才能运行D)C程序中整型变量只能存放整数,实型变量只能存放浮点数【答案与解析】B、本题考查C语言基础知识。编写C语言源程序要经过编译链接生成二进制文件才能执行,B选项错误的。(14)有以下定义:int a; long b; double x,y;则以下选项中正确的表达式是A)a%(int)(x-y)B)a=x!=y;C)(a*y)%bD)y=x+y=x 【答案与解析】A、本题考查算术运算符的基本用法。B选项是语句,不是表达式首先排除。A、B、C中求余符号%要求左右两边必须是整型,只有A符合。(15)以下选项中能表示合法常量的是A)整数:1,200 B)实数:1.5E2.0 C )字符斜杠: D)字符串:007 【答案与解析】D、本题考查各类型常量的正确表示形式。整数里面没有逗号,实型数e的后面必须是整数,字符斜杠应为.本题只有D选项是正确的,表示只有一个字符的字符串,而且是一个八进制转义字符。(16)表达式a+=a-=a=9的值是A)9 B)_9 C)18 D)0【答案与解析】D、本题考查连续赋值。连续赋值是从右向左依次运算。首先9赋值给a,然后将a-a赋值给a,a变为0,再将a+a赋值给a,得0,答案选D选项。(17)若变量已正确定义,在if (W)printf(“%dn,k”);中,以下不可替代W的是A)ab+c B)ch=getchar() C)a=b+c D)a+ 【答案与解析】A、在C语言中没有这种形式的运算符。 (18)有以下程序includemain()int a=1,b=0;if(!a) b+;else if(a=0)if(a)b+=2;else b+=3;printf(”%dn”,b);程序运行后的输出结果是A)0B)1C)2D)3 【答案与解析】A、本题考查if-else的嵌套。本题中整体是一个if-else语句,if控制b+;else后面跟if语句,这个if语句控制一个if-else语句。!a为假,执行else后面的if语句,a=0为假,后面的if-else不再执行。整个过程中b均为再赋值,故仍保持原值为0(19)若有定义语句int a, b;double x;则下列选项中没有错误的是A)switch(x%2) B)switch(int)x/2.0)case 0: a+; break; case 0: a+; break;case 1: b+; break; case 1: b+; break;default : a+; b+; default : a+; b+; C)switch(int)x%2) D)switch(int)(x)%2)case 0: a+; break; case 0.0: a+; break;case 1: b+; break; case 1.0: b+; break;default : a+; b+; default : a+; b+; 【答案与解析】C、本题考查switch结构。switch后面括号内必须是整形或字符型的表达式,case后面必须是对应类型的常量表达式。符合要求的只有选项。(20)有以下程序include main()int a=1,b=2;while(amain()int y=10;while(y-);printf(”=dn”,);程序执行后的输出结果是A)y=0B)y= -1C)y=1D)while构成无限循环【答案与解析】、本题考查循环的简单计算。while的循环体是空语句,所以我们看能不能结束循环,当while后面-为时结束循环,不会死循环,结束时又自减了。所以最后值为-1。选项正确。(22)有以下程序includestdio .hmain()char srstuv;printf(cn,*s2);程序运行后的输出结果是A)tuv B)字符t的ASCII码值 C)t D)出错 【答案与解析】、本题考查字符数据类型。*值为,加后变为,本题答案选。(23)有以下程序includestdio.hincludestring.hmain()char x“STRING”;x0=0;x10;x20;printf(“d dn”,sizeof(x),strlen(x);程序运行后的输出结果是A)6 1 B)7 0 C)6 3 D)7 1【答案与解析】B、本题考查了sizeof和strlen的功能。sizeof是求结构所占字节,要存放长度为6的那个字符串,需要长度为7的一维字符数组,所以x数组的占字节数为7。strlen是求字符串长度的,是指从参数的字符地址开始到第一个0之间的字符个数,x0被赋予0,实际上是被赋了0,因为0是0的ASCII码值,第一个就是字符串结束的标志,所以长度为0。(24)有以下程序include stdiohint f(int x);main()int n=1,m;m=f(f(f(n);printf(“%dn”,m);int f(int x)return x*2;程序运行后的输出结果是A)1 B)2 C)4 D)8【答案与解析】D、本题考查简单的函数嵌套调用。f函数的功能是x的2倍,显然最里面的fun(n)的值为2,fun(2)为4,fun(4)为8。最终m被赋值为8。输出结果为D选项。(25)以下程序段完全正确的是A)int *p; scanf(%d,p); B)int *p; scanf(“%d”,p);C)int k, *p=&k; scanf(%d,p); D)int k, *p; *p= &k; scanf(“%d”,p);【答案与解析】D,指针变量都要遵循先定义,然后赋值,最后进行运算。A,B只定义没赋值,C选项没定义,所以错误。(26)有定义语句:int *p4;以下选项中与此语句等价的是A)int p4; B)int *p; C)int *(p4); D)int (*p)4;【答案与解析】C、本题考查运算符的优先级和结合性。的优先级高于*,故题干中语句与C选项等价。(27)下列定义数组的语句中,正确的是A)int N=10; B)define N 10int xN; int xN;C)int x0.10; D)int x;【答案与解析】B、本题考查数组的基础知识。定义数组时数组名后面的内必须是常量,而若要在定义时缺省这个数字,必须定义同时进行数组的初始化。本题中只有B选项正确。(28)若要定义一个具有5个元素的整型数组,以下错误的定义语句是A)int a5=0;B)int b=0,0,0,0,0;C)int c2+3; D)int i=5,di;【答案与解析】D、本题考查数组的基础知识。定义数组时数组名后面的内必须是常量,而若要在定义时缺省这个数字,必须定义同时进行数组的初始化。D选项里面i是变量了,错误。答案应选择D。(29)有以下程序includestdiohvoid f(int *p);main()int a51,2,3,4,5,*r=a;f(r);printf(“dn”;*r);void f(int *p)p=p+3;printf(“d,”,*p);程序运行后的输出结果是A)1,4 B)4,4 C)3,1 D)4,1【答案与解析】D、本题考察函数值传递的问题。f函数参数为指针,容易让人误解为传址的问题,但实际上只是简单传值问题,调用后实参没有改变。故答案选D。(30)有以下程序(函数fun只对下标为偶数的元素进行操作)# includestdiohvoid fun(int *a;int n)int i、j、k、t;for (i=0;in一1;i=2) k=i;for(j=i;jak)k=j;t=ai;ai=ak;akt;main()int aa10=1、2、3、4、5、6、7,i;fun(aa、7);for(i=0,iincludestring hmain()char a20=“ABCDOEFG0”,b“IJK”;strcat(a,b);printf(“sn”,a);程序运行后的输出结果是A)ABCDEOFGOIJKB)ABCDIJKC)IJKD)EFGIJK【答案与解析】B、本题考察字符串操作函数。strcat的功能是将后面字符指针引导的字符串连接到前面一个字符指针引导的字符串上去,是直接连在结束标识0的位置,故IJK会直接从D后面连接,答案选择B选项。(34)有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母includestdiohincludectypehvoid fun(char*p)int i=0;while (pi)if(pi= islower(pi-1)pi-1=pi-1-a+A;i;main()char s1100“ab cd EFG!”;fun(s1); printf(“sn”,s1);程序运行后的输出结果是A)ab cd EFG! B)Ab Cd EFg!C)aB cD EFG! D)ab cd EFg!【答案与解析】C、本题考查字符指针的基本运算。根据对if语句的理解,fun函数的功能是字符串中当一个字符为小写字母且其后面为空格时,就将其变为大写字母。本题选C答案。(35)有以下程序includestdiohvoid fun(int x)if(x21)fun(x2);printf(“d”,x);main()fun(7);printf(“n”);程序运行后的输出结果是A)1 3 7 B)7 3 1 C)7 3 D)3 7【答案与解析】D、本题考查函数递归调用的问题。本题中递归调用了fun函数,根据对fun函数观察发现,要输出对应x的值,必须先执行了前面的if语句,if直接控制是否再次调用fun函数,显然要输出x的值,肯定要先执行完可能的内层fun函数调用。执行fun就肯定有输出,因此最先输出的肯定是最内层的x值,当x为3时x/21为假了,故最内层应输出3,接着输出7调用结束。答案应选择D。(36)有以下程序includestdiohint fun()static int x=1;x+=1;return x;main()int i;s=1;for(i=1;imain()int s,t,A=10;double B=6;ssizeof(A);t=sizeof(B);printf(“d,dn”,s,t);在VC6平台上编译运行,程序运行后的输出结果是A)2,4 B)4,4 C)4,8 D)10,6【答案与解析】C、本题考查基本数据字节长的问题。基本数据类型在不同的编译环境下会不同。sizeof的功能是求字节长,在VC6平台上,int类型和double类型的数据所占字节数分别为4和8。(39)若有以下语句Typedef struct Sint g; char h;T;以下叙述中正确的是A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是struct S类型的变量【答案与解析】C、本题考查结构体以及定义新类型名的基本概念。typedef作用是定义新的类型名称,原来的类型名依然有效。按照题干定义后,可以用struct S或者T来定义结构体变量。(40)有以下程序includestdiohmain()short c=124;c=c_;printf(“dn”、c);若要使程序的运行结果为248,应在下划线处填入的是A)2 B)|248 C)0248 D)main()int a=200,b=010;printf(“%d%dn”,a,b);【答案与解析】2008、本题考查整型进制转换的问题。整型变量,定义时被赋值分别以十进制和八进制,然后均以十进制输出,原转化成十进制为。故答案为。(7)有以下程序includestdiohmain()int x,y;scanf(“%2d%1d”,x,y);printf(“dn”,x+y);程序运行时输入:1234567程序的运行结果是【7】。【答案与解析】15、本题考查格式输入。%和d之间用整数表示读取宽度。显然第一个数字读取为12赋值给x,第二个数字读取为3赋值给y,故最终输出结果为15。(8)在C语言中,当表达式值为0时表示逻辑值“假”,当表达式值为【8】时表示逻辑值“真”。 【答案与解析】非0(9)有以下程序includestdiohmain()int i,n=0,0,0,0,0;for (i=1;i=4;i+)ni=ni-1*3+1; printf(“%d”,ni);程序运行后的输出结果是【9】。【答案与解析】141340、本题是循环的简单计算。本题中当i为1时n1被赋值为1并输出,当i为2时n2被赋值为1*3+1即4,同理n3,n4被赋值为13和40并输出。所以答案为141340(10)以下fun函数的功能是:找出具有N个元素的一维数组中的最小值,并作为函数值返回。请填空。(设N已定义)int fun(int xN)int i,k=0;for(i=0;iN;i+)if(xiint *f(int *p,int *q);main()int m=1,n=2,*r=&m;r=f(r,n);printf(“dn”,*r);int*f(int *p,int*q)return(*p*q)?p:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论