1、二级 C语言笔试-187 及答案解析(总分:100.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.有以下程序main()int p8=11,12,13,14,15,16,17,18,i=0,j=0;while(i+7)if(pi%2)j+=pi;printf(“%d/n“,j);程序运行后的输出结果是(分数:1.00)A.42B.45C.56D.602.有以下程序main()int i=1,j=2,k=3;if(i+=1int b;char c2;NEW;则下面叙述中正确的是(分数:1.00)A.以上的说明形式非法B.ST是一个结构体类型C.NEW是一个结构体类型
2、D.NEW是一个结构体变量4.有以下程序main()int a,b,d=25;a=d/10%9;b=aprintf(“%d,%d/n“,a,b);程序运行后的输出结果是(分数:1.00)A.6,1B.2,1C.6,0D.2,05.有以下结构体说明和变量定义,如图所示:struet nodeint data; struct node*next;*p,*q,*r;(分数:1.00)A.B.C.D.6.以下叙述中错误的是(分数:1.00)A.对于 double类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出
3、所定义的下标范围时,系统将给出“下标越界”的出错信息D.可以通过赋初值的方式确定数组元素的个数7.以下选项中不能作为合法常量的是(分数:1.00)A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e08.以下与函数 fseek(fp,OL,SEEK_SET)有相同作用的是(分数:1.00)A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp)9.有以下程序main()int a33,*p,i;p=i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a1i);程序运行后的输出结果是(分数:1.00)A.012B.1
4、23C.234D.34510.以下对结构体类型变量 td的定义中,错误的是(分数:1.00)A.typedef struct aaint n; float m; AA; AA td;B.struct aaint n;float m;td;struct aa td;C.structint n;float m;aa; struct aa td;D.structint n;float m;td;11.数据的存储结构是指(分数:1.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示12.数据独立性是数据库技术的重要特点之一,所谓数据独
5、立性是指(分数:1.00)A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上三种说法都不对13.有以下程序prt(int *m,int n)int i;for(i=0;in;i+)mi+;main()int a=1,2,3,4,5,i;prt(a,5);for(i=0;i5;i+)printf(“%d,“,ai);程序运行后的输出结果是(分数:1.00)A.1,2,3,4,5,B.2,3,4,5,6,C.3,4,5,6,7,D.2,3,4,5,1,14.对长度为 n的线性表进行顺序查找,在最坏情况下所需要的比较次数为(分数:1.00)A.l
6、og2nB.n/2C.nD.n+l15.有以下程序main()char a7=“a0/0a0/0“;int i,j;i=sizeof((分数:1.00)A.;j=strlen(a);B.char s10;s=“right!“;C.char s10;*s=“right!“;D.char*sp=:right!“;17.以下不能定义为用户标识符的是(分数:1.00)A.MainB._0C._intD.sizeof18.有以下程序main()int a=1,b;for(b=1;b10;b+)if(a8)break;if(a%2=1)a+=5;continue;a-=3;printf(“%d/n“,b)
7、;程序运行后的输出结果是(分数:1.00)A.3B.4C.5D.619.若整型变量 a、b、c、d 中的值依次为:1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是(分数:1.00)A.1B.2C.3D.420.有以下程序main()int m,n,p;scanf(“m=%dn=%dp=%d“,int f2(int x,int y)return xy?y:x;main()int a=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d);f=f1(f2(a,b) ,f2(c,d);g=a+b+c+d-e-f;printf(“%d,%d,%d/n“,e,f,g
8、);程序运行后的输出结果是(分数:1.00)A.4,3,7B.3,4,7C.5,2,7D.2,5,725.用树形结构表示实体之间联系的模型是(分数:1.00)A.关系模型B.网状模型C.层次模型D.以上三个都是26.以下能正确定义一维数组的选项是(分数:1.00)A.int a5=0,1,2,3,4,5;B.char a=0,1,2,3,4,5;C.char a=A,B,C;D.int a5=“0123“;27.以下选项中可作为 C语言合法常量的是(分数:1.00)A.-80.0B.-080C.-8e1.0D.-80.0e28.算法具有五个特性,以下选项中不属于算法特性的是(分数:1.00)A
9、.有穷性B.简洁性C.可行性D.确定性29.已有定义:char a=“xyz“,b=x,y,z;,以下叙述中正确的是(分数:1.00)A.数组 a和 b的长度相同B.a数组长度小于 b数组长度C.a数组长度大于 b数组长度D.上述说法都不对30.以下叙述中正确的是(分数:1.00)A.用 C程序实现的算法必须要有输入和输出操作B.用 C程序实现的算法可以没有输出但必须要输入C.用 C程序实现的算法可以没有输入但必须要有输出D.用 C程序实现的算法可以既没有输入也没有输出31.有以下程序void f(int*x,int *y)int t;t= *x;*x=*y;*y=t;main()int a8
10、=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=p+;q-;for(i=0;i8;i+)printf(“%d,“,ai);程序运行后的输出结果是(分数:1.00)A.8,2,3,4,5,6,7,1,B.5,6,7,8,1,2,3,4,C.1,2,3,4,5,6,7,8,D.8,7,6,5,4,3,2,132.程序中若有如下说明和定义语句char fun(char*);main()char*s=“one“,a5=0,(*f1)()=fun,ch;以下选项中对函数 fun的正确调用语句是(分数:1.00)A.(*B.*f1(*s);C.fD.ch=*f1(s);33.有以下程序mai
11、n()char s=“159“,*p;p=s;printf(“%c“,*p+);printf(“%c“,*p+);程序运行后的输出结果是(分数:1.00)A.15B.16C.12D.5934.有以下程序main()int c=35;printf(“%d/n“,cmain()char b4=a,b,c,d,*p=b;point(p);printf(“%c/n“,*p);程序运行后的输出结果是(分数:1.00)A.aB.bC.cD.d37.有定义语句:iht b;char c10;,则正确的输入语句是(分数:1.00)A.scanf(“%d%s“,char b;double c;data;以下叙述
12、中错误的是(分数:1.00)A.data的每个成员起始地址都相同B.变量 data所占的内存字节数与成员 c所占字节数相等C.程序段:dataa=5;printf(“%f/n“,datac);输出结果为 5.000000D.data可以作为函数的实参39.为了使模块尽可能独立,要求(分数:1.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强40.以下叙述中正确的是(分数:1.00)A.预处理命令行必须位于源文件的开
13、头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间41.有以下程序main()int a=1,2,3,4,5,6,7,8,9,0,*P;for(p=a;pa+10;p+)printf(“%d,“,*p);程序运行后的输出结果是(分数:2.00)A.1,2,3,4,5,6,7,8,9,0,B.2,3,4,5,6,7,8,9,10,1,C.0,1,2,3,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,42.有以下程序#define N20fun(int a,int n,int m)int i,j;for(i=m;i=n;i-)a
14、i+1=ai; main()int i,aN=1,2,3,4,5,6,7,8,9,10;fun(a,2,9);for(i=0;i5;i+)printf(“%d“,ai);程序运行后的输出结果是(分数:2.00)_43.有以下程序#define P3void F(int x)return(P*x*x);main()printf(“%d/n“,F(3+5);程序运行后的输出结果是(分数:2.00)A.192B.29C.25D.编译出错44.有以下函数fun(char*a,char*b) while(*a!=/0)b+; return(*a-*b);该函数的功能是(分数:2.00)A.计算 a和 b
15、所指字符串的长度之差B.将 b所指字符串连接到 a所指字符串中C.将 b所指字符串连接到 a所指字符串后面D.比较 a和 b所指字符串的大小45.下列关于栈的描述中错误的是(分数:2.00)A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针46.有以下程序 main()int num44=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,i,j;for(i=0;i4;i+)for(j=0;j=i;j+) printf(“%4c“,“);for(j=_;j4;j+) printf(“%4d“,numij);prr
16、intf(“/n“);若要按以下形式输出数组右上半三角1 2 3 46 7 811 1216则在程序下划线处应填入的是(分数:2.00)A.i-1B.iC.i+1D.4-i47.有以下程序#includestdiohvoid WriteStr(char*fn,char*str)FILE*fp;fp=fopen(fn,“w“);fputs(str,fp);fclose(fp);main()writeStr(“t1dat“,“start“);WriteStr(“t1dat“,“end“);程序运行后,文件 t1dat 中的内容是(分数:2.00)A.startB.endC.startendD.en
17、drt48.有以下程序main()int a32=0,(*ptr)2,i,j;for(i=0;i2;i+) ptr=a+i; scanf(“%d“,ptr); ptr+;for(i=0;i3;i+)for(j=0;j2;j+)printf(“%2d“,aij);printf(“/n“);若运行时输入:1 2 3回车,则输出结果是(分数:2.00)A.产生错误信息B.1 02 00 0C.1 23 0 0 0D.1 02 03 049.下列对于软件测试的描述中正确的是(分数:2.00)A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序
18、中的错误D.软件测试的目的是使程序符合结构化原则50.下列描述中正确的是(分数:2.00)A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合二、填空题(总题数:18,分数:40.00)51.某二叉树中度为 2的结点有 18个,则该二叉树中有 【1】 个叶子结点。(分数:2.00)填空项 1:_52.在面向对象方法中,类的实例称为 【2】 。(分数:2.00)填空项 1:_53.诊断和改正程序中错误的工作通常称为 【3】 。(分数:2.00)填空项 1:_54.在关系数据库中,把数据表示成二维表,每一个二维表称为 【4】 。(分
19、数:2.00)填空项 1:_55.问题处理方案的正确而完整的描述称为 【5】 。(分数:2.00)填空项 1:_56.以下程序运行时,若从键盘输入:10 20 30回车,输出的结果是 【6】 。#includestdiohmain() int i=0,j=0,k=0;scanf(“%d%*d%d“,c1c2;c1+,c2-) printf(“%c%c“,c1,c2);printf(“/n“);(分数:2.00)填空项 1:_61.已知字符 A的 ASCII代码值为 65,以下程序运行时若从键盘输入:B33回车,则输出结果是【11】 。#include stdiohmain()char a,b;
20、a=getchar();scanf(“%d“,b=b*2;printf(“%c%c/n“,a,b);(分数:2.00)填空项 1:_62.以下程序中,fun 函数的功能是求 3行 4列二维数组每行元素中的最大值。请填空。void fun(int,int,int(*)4,int*);main()int a34=12,41,36,28,19,33,15,27,3,27,19,1,b3,i;fun(3,4,a,b);for(i=0;i3;i+)printf(“%4d“,bi);printf(“/n“);void fun(int m,int n,int ar4,int *br)int i,j,x;fo
21、r(i=0;im;i+)x=ari0;for(j=0;jn;j+)if(xarij)x=arij;【12】 =x;(分数:2.00)填空项 1:_63.以下程序运行后的输出结果是 【13】 。void swap(int x,int y)int t;t=x;x=Y;Y=t;printf(“%d%d“,x,y);main()int a=3,b=4;swap(a,b);printf(“%d%d“,a,b);(分数:2.00)填空项 1:_64.以下程序运行后的输出结果是 【14】 。#includestringhvoid fun(char*s,int p,int k)int i;for(i=p;ik
22、-1;i+)si=si+2;main()char s=“abcdefg“;fun(s,3,strlen(s);puts(s);(分数:2.00)填空项 1:_65.以下程序运行后的输出结果是 【15】 。#includestringhmain()char ch=“abc“,x34;int i;for(i=0;i3;i+)strcpy(xi,ch);for(i=0;i3;i+)printf(“%s“,c+;return(a+b+c) ;main()int i,a=5;for(i=0;i3;i+)printf(“%d%d“,i,fun(a) );prind(“/n“);(分数:2.00)填空项 1
23、:_67.以下程序运行后的输出结果是 【17】 。struct NODEint k;struct NODE*link;;main()struct NODE m5,*p=m,*q=m+4;int i=0;while(p!=q)p-k=+i;p+;q-k=i+;q-;q-k=i;for(i=0;i5;i+)printf(“%d“,mi.k);printf(“/n“);(分数:2.00)填空项 1:_68.以下程序中函数 huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出,所谓回文即正向与反向的拼写都一样,例如:ad
24、gda。请填空。#includestring.hchar *huiwen(char*str)char*p1,*P2;int i,t=0;P1=str;p2= 【18】 ;for(i=0;istrlen(str)/2;i+)if(*p1+!=*p2-)t=1;break;if( 【19】 )return(“yes!“);else return(“no!“);main()char str50;printf(“Input:“);scanf(“%s“,str);printf(“%s/n“, 【20】 );(分数:6.00)填空项 1:_二级 C语言笔试-187 答案解析(总分:100.00,做题时间:
25、90 分钟)一、选择题(总题数:50,分数:60.00)1.有以下程序main()int p8=11,12,13,14,15,16,17,18,i=0,j=0;while(i+7)if(pi%2)j+=pi;printf(“%d/n“,j);程序运行后的输出结果是(分数:1.00)A.42 B.45C.56D.60解析:解析本题考查 while语句和 if语句的嵌套,程序段实现的功能是将 p1至 p7中的奇数相加求和并输出,j=13+15+17=45。2.有以下程序main()int i=1,j=2,k=3;if(i+=1int b;char c2;NEW;则下面叙述中正确的是(分数:1.00
26、)A.以上的说明形式非法B.ST是一个结构体类型C.NEW是一个结构体类型 D.NEW是一个结构体变量解析:解析用 typedef定义结构体类型,ST 为结构体名称,NEW 为结构体类型。4.有以下程序main()int a,b,d=25;a=d/10%9;b=aprintf(“%d,%d/n“,a,b);程序运行后的输出结果是(分数:1.00)A.6,1B.2,1 C.6,0D.2,0解析:解析本题考查算术运算符“/”、“%”,逻辑运算符“ struct node*next;*p,*q,*r;(分数:1.00)A.B.C.D. 解析:解析本题考查链表结点的删除。q-next 中存放的是 r所
27、指结点的首地址,将 r所指结点的首地址存于 p-next 中,则实现删除 q所指结点的功能,并保持链表连续,p 所指结点与 r所指结点相连。6.以下叙述中错误的是(分数:1.00)A.对于 double类型数组,不可以直接用数组名对数组进行整体输入或输出B.数组名代表的是数组所占存储区的首地址,其值不可改变C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息 D.可以通过赋初值的方式确定数组元素的个数解析:解析C 语言不检查数组越界,是为了保证程序执行的效率,这要求编写人员自己关心数组下标表达式的合法性了。7.以下选项中不能作为合法常量的是(分数:1.00)
28、A.1.234e04B.1.234e0.4 C.1.234e+4D.1.234e0解析:解析C 语言的语法规定,字母 e(E)之前必须有数字,且 e(E)后面的指数必须是整数,而选项 B中,e(E)后面的指数是小数,所以不合法。8.以下与函数 fseek(fp,OL,SEEK_SET)有相同作用的是(分数:1.00)A.feof(fp)B.ftell(fp)C.fgetc(fp)D.rewind(fp) 解析:解析fseek(fp,OL,SEEK_SET)的作用是使位置指针移到文件头。feof(fp)用来判断文件是否结束。ftell(fp)的作用是得到流式文件中的当前位置。fgete(fp)的
29、作用是从文件 fp读入一个字符。rewind(fp)的作用是使位置指针返回文件头。9.有以下程序main()int a33,*p,i;p=i9;i+)pi=i;for(i=0;i3;i+)printf(“%d“,a1i);程序运行后的输出结果是(分数:1.00)A.012B.123C.234D.345 解析:解析本题考查二维数组和指针,首先使指针 p指向二维数组的首地址,通过第一个 for循环对一维数组 p赋值,其实也就是给二维数组 a赋值,a00a22分别赋以 08,所以 a10,a11,a12分别为 3,4,5。10.以下对结构体类型变量 td的定义中,错误的是(分数:1.00)A.typ
30、edef struct aaint n; float m; AA; AA td;B.struct aaint n;float m;td;struct aa td;C.structint n;float m;aa; struct aa td; D.structint n;float m;td;解析:解析选项 t中,aa 为结构体变量,而不是结构体名称,不能再用来定义 td。11.数据的存储结构是指(分数:1.00)A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示 解析:解析数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构
31、(也称数据的物理结构)。12.数据独立性是数据库技术的重要特点之一,所谓数据独立性是指(分数:1.00)A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上三种说法都不对 解析:解析数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。数据的独立性一般分为物理独立性与逻辑独立性两级。13.有以下程序prt(int *m,int n)int i;for(i=0;in;i+)mi+;main()int a=1,2,3,4,5,i;prt(a,5);for(i=0;i5;i+)printf(“%d,“,ai);程序运
32、行后的输出结果是(分数:1.00)A.1,2,3,4,5,B.2,3,4,5,6, C.3,4,5,6,7,D.2,3,4,5,1,解析:解析函数 ptr(*m,n)中,参数 m传递的是一个地址,所以可以改变主函数中数组 a的各元素值,函数 ptr(*m,n)的功能是将数组的各元素都自加 1,所以,最后数组 a中的各元素为 2,3,4,5,6。14.对长度为 n的线性表进行顺序查找,在最坏情况下所需要的比较次数为(分数:1.00)A.log2nB.n/2C.n D.n+l解析:解析对于长度为 n的有序线性表,在最坏的情况下,二分查找只需要比较 log 2n次,而顺序查找需要比较 n次。15.有
33、以下程序main()char a7=“a0/0a0/0“;int i,j;i=sizeof((分数:1.00)A.;j=strlen(a);B.char s10;s=“right!“;C.char s10;*s=“right!“;D.char*sp=:right!“; 解析:解析C 语言中不允许通过赋值语句给字符数组赋值,所以选项 A、B、C 都不对。17.以下不能定义为用户标识符的是(分数:1.00)A.MainB._0C._intD.sizeof 解析:解析合法的标识符由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。而且在用户标识符中,如果与关键字相同,程序在编译时将出错,所以
34、,用户标识符不能为关键字。18.有以下程序main()int a=1,b;for(b=1;b10;b+)if(a8)break;if(a%2=1)a+=5;continue;a-=3;printf(“%d/n“,b);程序运行后的输出结果是(分数:1.00)A.3B.4 C.5D.6解析:解析本 break语句和 continue语句的区别:break 语句使程序跳出本层循环,而 continue语句使程序跳出本次循环,进入下一次循环,第一次循环,b=1,a=1;则执行第二个 if语句,a 为满足条件,a=a+5=6,退出本次循环;第二次循环,b=2,a=3;第三次循环,b=3,a 为奇数满足
35、第二个 if语句的条件,a=a+5=8,退出本次循环,第四次循环,b=4,a=8,满足第一个 if语句的条件,跳出 for循环,最后输出 b=4。19.若整型变量 a、b、c、d 中的值依次为:1、4、3、2。则条件表达式 ab?a:cd?c:d 的值是(分数:1.00)A.1 B.2C.3D.4解析:解析本题考查条件表达式的嵌套,因为 A=1,b=4,所以 Ab 成立,则条件表达式的值即 a的值为 1。20.有以下程序main()int m,n,p;scanf(“m=%dn=%dp=%d“,int f2(int x,int y)return xy?y:x;main()int a=4,b=3,
36、c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d);f=f1(f2(a,b) ,f2(c,d);g=a+b+c+d-e-f;printf(“%d,%d,%d/n“,e,f,g);程序运行后的输出结果是(分数:1.00)A.4,3,7 B.3,4,7C.5,2,7D.2,5,7解析:解析函数 f1(x,y)的功能返回 x,y 中较大的一个,而函数 f2(x,y)的功能是返回 x,y 中较小的一个,所以 f1(a,b)=4,f1(c,d)=3,f2(c,d)=2,故 e=f2(4,5),f= (3,2)=3,g=4+3+5+2-4-3=7。25.用树形结构表示实体之间联系的模型是
37、(分数:1.00)A.关系模型B.网状模型C.层次模型 D.以上三个都是解析:解析层次模型是最早发展起来的数据库模型,层次模型的基本结构是树形结构。26.以下能正确定义一维数组的选项是(分数:1.00)A.int a5=0,1,2,3,4,5;B.char a=0,1,2,3,4,5; C.char a=A,B,C;D.int a5=“0123“;解析:解析选项 A中,定义的初值个数大于数组的长度;选项 C中,数组名后少了中括号;选项 D中,整型数组不能赋予字符串。27.以下选项中可作为 C语言合法常量的是(分数:1.00)A.-80.0 B.-080C.-8e1.0D.-80.0e解析:解析
38、选项 B中,以 0开头表示是一个八进制数,而八进制数的取值范围是 07,所以-080 是不合法的;选项 C和 D中,e 后面的指数必须是整数,所以也不合法。28.算法具有五个特性,以下选项中不属于算法特性的是(分数:1.00)A.有穷性B.简洁性 C.可行性D.确定性解析:解析算法具有的 5个特性是:有穷性;确定性;可行性;有 0个或多个输入;有一个或多个输出。29.已有定义:char a=“xyz“,b=x,y,z;,以下叙述中正确的是(分数:1.00)A.数组 a和 b的长度相同B.a数组长度小于 b数组长度C.a数组长度大于 b数组长度 D.上述说法都不对解析:解析a 数组存放的是字符串
39、,系统会自动在字符串的最后加上一个“/0”,所以 a数组的长度为4,而 b数组的长度为 3,故 a数组长度大于 b数组长度。30.以下叙述中正确的是(分数:1.00)A.用 C程序实现的算法必须要有输入和输出操作B.用 C程序实现的算法可以没有输出但必须要输入C.用 C程序实现的算法可以没有输入但必须要有输出 D.用 C程序实现的算法可以既没有输入也没有输出解析:解析算法具有 5个特性:有穷性;确定性;可行性;有 0个或多个输入;有一个或多个输出。所以说,用 C程序实现的算法可以没有输入但必须要有输出。31.有以下程序void f(int*x,int *y)int t;t= *x;*x=*y;
40、*y=t;main()int a8=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=p+;q-;for(i=0;i8;i+)printf(“%d,“,ai);程序运行后的输出结果是(分数:1.00)A.8,2,3,4,5,6,7,1,B.5,6,7,8,1,2,3,4,C.1,2,3,4,5,6,7,8,D.8,7,6,5,4,3,2,1 解析:解析本题考查循环和指针做函数参数,程序的功能是将 a0和 a7对换,a1和 a6对换,a2和 a5对换,a3和 a4对换,最后输出。32.程序中若有如下说明和定义语句char fun(char*);main()char*s=“one“,a5
41、=0,(*f1)()=fun,ch;以下选项中对函数 fun的正确调用语句是(分数:1.00)A.(* B.*f1(*s);C.fD.ch=*f1(s);解析:解析函数 fun()的参数为指针类型,返回值为字符型,而选项 B、C 的参数不是指针类型,所以不正确,选项 D中,*fl(s)表示返回值为指针的函数,所以也不正确。33.有以下程序main()char s=“159“,*p;p=s;printf(“%c“,*p+);printf(“%c“,*p+);程序运行后的输出结果是(分数:1.00)A.15 B.16C.12D.59解析:解析自增运算符“+”放在变量之前表示在使用变量之前,先使变量
42、的值加 1;放在变量之后表示在使用变量之后,再使变量的值加 1。语句 p=s;使指针 p指向字符串 s的首地址,第一次输出语句先输出字符1,指针 p再往后移一位,指向字符5的地址,第二个输出语句,同样先输出字符5,指针p再往后移一位,指向字符9的地址。34.有以下程序main()int c=35;printf(“%d/n“,cmain()char b4=a,b,c,d,*p=b;point(p);printf(“%c/n“,*p);程序运行后的输出结果是(分数:1.00)A.a B.bC.cD.d解析:解析虽然函数的参数是一个指针,但函数体只对指针 p进行了操作,并不会影响主函数中的指针p,因
43、为传递的参数是 p,而不是 p的地址,所以输出的字符是 b0,即为 a。37.有定义语句:iht b;char c10;,则正确的输入语句是(分数:1.00)A.scanf(“%d%s“,char b;double c;data;以下叙述中错误的是(分数:1.00)A.data的每个成员起始地址都相同B.变量 data所占的内存字节数与成员 c所占字节数相等C.程序段:dataa=5;printf(“%f/n“,datac);输出结果为 5.000000D.data可以作为函数的实参 解析:解析选项 A共用体的每个成员的起始地址都相同;选项 B共用体变量所占的内存长度等于最长的成员的长度;选项
44、 C因为每个成员的起始地址相同,所以整型数 5 以浮点型输出时为 5.000000;选项D,C 语言规定,不能把共用体变量作为函数的参数。39.为了使模块尽可能独立,要求(分数:1.00)A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强解析:解析耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间
45、的耦合性和提高模块内的内聚性,有利于提高模块的独立性。40.以下叙述中正确的是(分数:1.00)A.预处理命令行必须位于源文件的开头B.在源文件的一行上可以有多条预处理命令C.宏名必须用大写字母表示D.宏替换不占用程序的运行时间 解析:解析选项 A预处理命令行通常位于源文件的开头,但不是必须的;选项 B在源文件的一行上只能有一条预处理命令;选项 C宏名一般习惯用大写字母表示,以与变量名相区别,但不是必须的;选项 D宏替换不占用程序的运行时间,只占编译时间。41.有以下程序main()int a=1,2,3,4,5,6,7,8,9,0,*P;for(p=a;pa+10;p+)printf(“%d
46、,“,*p);程序运行后的输出结果是(分数:2.00)A.1,2,3,4,5,6,7,8,9,0, B.2,3,4,5,6,7,8,9,10,1,C.0,1,2,3,4,5,6,7,8,9,D.1,1,1,1,1,1,1,1,1,1,解析:解析本指针访问数组元素,在 for循环中,首先指针 p指向 a0的地址,输出语句即输出 a0的值,然后指针 p依次后移一位,依次指向数组 a中各元素的地址,所以程序依次输出数组 a的各元素值。42.有以下程序#define N20fun(int a,int n,int m)int i,j;for(i=m;i=n;i-)ai+1=ai; main()int i,aN=1,2,3,4,5,6,7,8,9,10;fun(a,2,9);for(i=0;i5;i+)printf(“%d“,ai);程序运行后的输出结果是(分数:2.00)_解析:解析因为宏定义 N=20,所以数组 a中的后 10个元素均为 0,函数 fun(a ,n,m)的功能是从an+1(mn),依次将值赋给后一个元素。所以 fun(a,2,9);执行后,数组 a中的元素为 aN=1,2,3,4,4,5,6,7,8,9,1043.有以下程序#define P3void