【计算机类职业资格】二级C语言笔试65及答案解析.doc
《【计算机类职业资格】二级C语言笔试65及答案解析.doc》由会员分享,可在线阅读,更多相关《【计算机类职业资格】二级C语言笔试65及答案解析.doc(22页珍藏版)》请在麦多课文档分享上搜索。
1、二级 C 语言笔试 65 及答案解析(总分:100.00,做题时间:90 分钟)一、B选择题/B(总题数:50,分数:50.00)1.以下叙述中错误的是(分数:1.00)A.二进制文件打开后可以先读文件的末尾,而顺序文件不可以B.在程序结束时,应当用 fclose 函数关闭已打开的文件C.在利用 fread 函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据D.不可以用 FILE 定义指向二进制文件的文件指针2.有以下程序段: int a10=1,2,3,4,5,6,7,8,9,10,*p= printf(“/“%s/“/n“,cf1); (分数:1.00)A.“AAAA“B.“
2、BBB“C.“BBBCC“D.“CC“6.有以下程序 main() char s=“ABCD“, *p; for( p=s+1;ps+4;p+) printf(“%s/n“,p); 程序运行后的输出结果是(分数:1.00)A.ABCD BCD CDB.A B C DC.B C DD.BCD CD D8.有以下程序: Void f(int a,iht i,int j) int t; if(ij) t=ai; ai=aj; aj=t; f(a,i+1,i-1); main() int i,aa5=1,2,3,4,5; f(aa,0,4); for(i=0;i5;i+) printf(“%d“ ,a
3、ai);printf(“/n“); 执行后输出结果是(分数:1.00)A.5,4,3,2,1,B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,9.有以下程序 #includestringh main(int argc,char *argv) int i,len=0; for(i=1;iargc;i+)len+=strlen(argvi); printf(“%d/n“,len); 程序编译连接后生成的可执行文件是 exl.exe,若运行时输入带参数的命令行是: exl abcd efg 10回车 则运行的结果是:(分数:1.00)A.22B.17C.12D.910.设有定
4、义:int k=1,m=2;float f=7;,则以下选项中错误的表达式是(分数:1.00)A.k=k=kB.-k+C.k%int(D.k=f=m11.有以下程序 #define N 20 fun(int a,int n,:Int m) int i,i; for(i=m; in; i-) ai+1);ai; main() int i,aN=1,2,3,4,5,6,7,8,9,10; fuu(a,2,9); for(i=0; i5; i+) printf(“%d“,ai); 程序运行后的输出结果是(分数:1.00)A.10234B.12344C.12334D.1223412.若有语句:char
5、*line5,以下叙述中正确的是(分数:1.00)A.定义 line 是一个数组,每个数组元素是一个基类型为 char 的指针变量B.定义 line 是一个指针变量,该变量可以指向一个长度为 5 的字符型数组C.定义 line 是一个指针数组,语句中的*号称为间址运算符D.定义 line 是一个指向字符型函数的指针13.以下 4 组用户定义标识符中,全部合法的一组是(分数:1.00)A.main enclude sinB.If -max turboC.txt REAL 3COMD.int 12 _00114.以下符合 C 语言语法的实犁常量是(分数:1.00)A.1.2E0.5B.3.1415
6、9EC.5E-3D.E1515.对于长度为 n 的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是(分数:1.00)A.冒泡排序为 n/2B.冒泡排序为 nC.快速排序为 nD.快速排序为 n(n-1)/216.以下叙述中错误的是(分数:1.00)A.C 语句必须以分号结束B.复合语句在语法上被看作一条语句C.空语句出现在任何位置都不会影响程序运行D.赋值表达式末尾加分号就构成赋值语句17.以下选项中,与 k=n+完全等价的表达式是(分数:1.00)A.k=n,n=n+1B.n=n+l,k=nC.k=+nD.k+=n+118.以下程序调用 findmax 函数返回数组中的最大值 f
7、indmax (inE *a,int n) int*p,*s; for(p=a,s=a;p-an;p+) if(_)s=p; return(*S); main() int x5=12,21,13,6,18);printf(“%d/n“,findmax(x5); 在下划线处应填入的是(分数:1.00)A.psB.*p*sC.aaD.p-ap-s19.下面不属于软件设计原则的是(分数:1.00)A.抽象B.模块化C.自底向上D.信息隐藏20.算法的空间复杂度是指(分数:1.00)A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间21.以下 4 个
8、选项中,不能看作一条语句的是(分数:1.00)A.;B.a=0,b=0,c=0;C.if(a0);D.if(b=0)m=1;n=2;22.不合法的 main 函数命令行参数表示形式是(分数:1.00)A.main(inta,char *c)B.mmn(int arc,char *arC.main(int argc,char *argD.majn(int argv,char *atgc)23.数据的存储结构是指(分数:1.00)A.数据所占的存储空间量B.数据的逻辑结构在汁算机中的表示C.数据在计算机中的顺序存储方式D.存储在外存中的数据24.设有下列二叉树: (分数:1.00)A.ABCDEF
9、B.BDAECFC.ABDCEFD.DBEFCA25.有以下程序 main() int a3=(1,2,3,4,5,0,(*pa) 3,i; pa=a; for(i=0;i3;i+) if(i2) pali=pa1 i-1; else pa1i=1; printf(“%d/n“a01+a11+a12); 执行后输出结果是(分数:1.00)A.7B.6C.8D.无确定值26.若要打开 A 盘上 user 了目录下名为 abc.txt 的文本文件进行读、写操作,下面符合此要求的函数调用是(分数:1.00)A.fopen(“A:/user/abtxt“,“,“r“)B.fopen(“A:/user/
10、abtxt“,“r+“)C.fopen(“A:/user/abtxt“,“rb“)D.fopen(“A:/user/abtxt“,“w“)27.以下叙述中正确的是(分数:1.00)A.C 程序中注释部分可以出现在程序中任意合适的地方B.花括号“”和“”只能作为函数体的定界符C.构成 C 程序的基本单位是函数,所有函数名都可以山用户命名D.分号是 C 语句之间的分隔符,不是语句的一部分28.要求以下程序的功能是计算 (分数:1.00)A.s=1.0;B.for(n=10;n1;n-)C.s=s+1/n;D.prind(“%6.4f/n“,;29.有以下程序 vold soru(int a, in
11、t n) int i,i,t; for(i=0;in-1;i+) for(j=i+1;jn;j+) if(aiaj) t=ai; ai=ai; aj=t; main() int aa10=1,2,3,4,5,6,7,8,9,10),i; sore(aa+2, 5); for(i=0;i10;i+) printf(“%d,“,aai); printf(“/n“); 程序运行后的输出结果是(分数:1.00)A.1,2,3,4,5,6,7,8,9,10,B.1,2,7,6,3,4,5,8,9,10,C.1,2,7,6,5,4,3,8,9,10,D.1,2,9,8,7,6,5,4,3,10,30.下列
12、对于线性链表的描述中正确的是(分数:1.00)A.存储空间不一定是连续,且各元素的存储顺序是任意的B.存储空间不一定是连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的31.若有以下说明和语句 int c4 5,(*p)5; p=c; 能够正确引用 c 数组元素的是(分数:1.00)A.p+1B.*(p+3)C.*(p+1)+3D.*(P0+2)32.以下选项中合法的实型常数是(分数:1.00)A.5E2.0B.E-3C2E0D.1.3E33.有以下程序 main() iht a2,4,6,9,10,
13、 y=0,x,*p; p= main() char c1=A,c2=a,*p1,*p2; p1=fun(p);int fun(int *p) ints; p=B ) main() int *p;fun(int fun(int *p) int s; *p=)C) #includemain() int *p;fun(int fun(int *p)*p=(int*)malloc(2);D) #includemain() iht *p;fun(p);iht fun(iht *p) p=(int*)malloc(sizeof(int); (分数:1.00)A.B.C.D.42.有以下程序 int fl(
14、int x.iht y) return xy?x:y; int f2(int x,int y) return xy?y:X; main() int a=4,b=3c=5,d,e,f; d=fla,B) ; d=f1(d,C) : e=f2a,B) ; e=f2(e.C) ; f=a+b+c-d-e; printf(“%d,%d,%d/n“,d,f,e); 执行后输出的结果是(分数:1.00)A.3,4,5B.13,4C.5,4,3D.3,5,443.若有以下程序段 int m=0xabc,n=0xabc; m-=n; printf(“%X/n“.m); 执行后输出结果是(分数:1.00)A.0
15、X0B.0x0C.0D.0XABC44.若有定义:inl a=8,b=5,c;,执行语句 c=a/b+0.4;后,c 的值为(分数:1.00)A.1.4B.1C.2.0D.245.以下能正确定义一维数组的选项是(分数:1.00)A.int a5=0,1,2,3,4,5);B.char a=0,1,2,3,4,5);C.char a=ABC);D.int a5=“0123“;46.有以下程序段: main) int a=5,*b,*C; c= printf(“/“%s/“/n“,cf1); (分数:1.00)A.“AAAA“B.“BBB“ C.“BBBCC“D.“CC“解析:解析 ;维字符数组可
16、以看成由若干个一维字符数组组成,每行是一个一维字符数组。本题首先定义了一个数组 ch35并给它们按行赋初值,即相当于给 ch0赋值“AAAA”,给 ch1赋值“BBB”,给 ch2赋值“BBB”,最后输出转义字符“/”、ch1和转义字符“/”,因此输出为“BBB”所以,4 个选项中 B 为所选。6.有以下程序 main() char s=“ABCD“, *p; for( p=s+1;ps+4;p+) printf(“%s/n“,p); 程序运行后的输出结果是(分数:1.00)A.ABCD BCD CDB.A B C DC.B C DD.BCD CD D 解析:解析 本题中首先定义一个字符数组
17、s,并将字符串“ABCD”存到数组 s 中,定义了一个字符指针变量 p,在接下来 for 循环中,循环体共执行了三次,第一次 p 指向 31,所以此时输出的 p 所指的字符串的值为 BCD,第二次循环 p 指向 s2,所以此时输出的 p 所指的字符串的值为 CD,第三次循环 p 指向 s3,因此此时输出的 p 所指的字符串的值为 D。所以,4 个选项中选项 D 符合题意。解析:解析 在 C 语言中函数名代表该函数的入口地址, 因此可以定义一种指向函数的指针来存放这种地址其定义形式为: 函数类型 (*函数指针名)(函数参数列表); 其中,函数参数列表可以省略。通过函数指针调用函数的形式为: (*
18、函数指针)(函数参数列表) 调用时函数的参数列表是不能省略的。所以本题的正确答案为选项 A。8.有以下程序: Void f(int a,iht i,int j) int t; if(ij) t=ai; ai=aj; aj=t; f(a,i+1,i-1); main() int i,aa5=1,2,3,4,5; f(aa,0,4); for(i=0;i5;i+) printf(“%d“ ,aai);printf(“/n“); 执行后输出结果是(分数:1.00)A.5,4,3,2,1, B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,解析:解析 在 C 语言中所谓函数的递归
19、是在指在调用一个函数的过程中,又出现了直接或间接地调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用由程序可以看出函数 f(a,i,j)为一递归函数,其功能是 i9.有以下程序 #includestringh main(int argc,char *argv) int i,len=0; for(i=1;iargc;i+)len+=strlen(argvi); printf(“%d/n“,len); 程序编译连接后生成的可执行文件是 exl.exe,若运行时输入带参数的命令行是: exl abcd efg 10回车 则运行的结果是:(分数:1.00)A.22
20、B.17C.12D.9 解析:解析 main()函数可以带参数,并且参数只能有两个,第一个参数(argc)类型为整型用来记下命令行的参数个数,第二个参数 (argv)为一个字符型指针数组,其各个元素用来记下命令行各参数字符串的首地址。本题执行时,argc 的值为 4,在循环中依次求出 argv1、argv2和 argv3指向的字符串(“abcd“、“efg“和“10“)的长度,并把它们加到变量 len 中,得到 len 的值 9。所以最后输出的 len 值为9,所以 4 个选项中 D 正确。10.设有定义:int k=1,m=2;float f=7;,则以下选项中错误的表达式是(分数:1.00
21、)A.k=k=kB.-k+C.k%int( D.k=f=m解析:解析 本题考查的是强制类型转换运算符。强制类型转换运算符的格式是: (类型名)变量名 所以将浮点型变量 f 转换为整型应写作(int)f,故选项 C 是错误的。11.有以下程序 #define N 20 fun(int a,int n,:Int m) int i,i; for(i=m; in; i-) ai+1);ai; main() int i,aN=1,2,3,4,5,6,7,8,9,10; fuu(a,2,9); for(i=0; i5; i+) printf(“%d“,ai); 程序运行后的输出结果是(分数:1.00)A.
22、10234B.12344C.12334 D.12234解析:解析 数组名可以作为实参传送,由于数组名本身是一个地址值,因此,在函数中对形参数组元素的修改也会相应改变实参数组的元素在本题中,函数 fun()通过一个 for 循环,将形参数组 a 中下标为 n 到 m 之间的元素向后移动一位,an元素的值不变。所以主函数调用 fun(a,2,9);之后,数组 a 的内容变成1,2,3,3,4,5,5,6,7,8,9,10,最后通过 for 循环输出数组前 5 个元素为 12334。选项 C 符合题意。12.若有语句:char*line5,以下叙述中正确的是(分数:1.00)A.定义 line 是一
23、个数组,每个数组元素是一个基类型为 char 的指针变量 B.定义 line 是一个指针变量,该变量可以指向一个长度为 5 的字符型数组C.定义 line 是一个指针数组,语句中的*号称为间址运算符D.定义 line 是一个指向字符型函数的指针解析:解析 理解复杂定义要掌握两点:一、右结合原则本题中的定义 char*line5;等价于char*(line5);二、自外向内分解成 typedef 语句。char*(line5);等价于 typedef char*A;A line5;其中 A 被 typedef 定义成字符指针的别名,然后 line 被定义成 A 的一维数组,即字符指针的一维数组。
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
5000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 职业资格 二级 语言 笔试 65 答案 解析 DOC
