1、二级 C语言笔试-152 及答案解析(总分:92.00,做题时间:90 分钟)一、选择题(总题数:50,分数:60.00)1.某片软盘上已染有病毒,为防止该病毒传染计算机系统,正确的措施是_。(分数:2.00)A.删除软盘上的所有文件即删除了病毒B.将该软盘进行写保护C.将软盘放一段时间后再用D.将该软盘重新格式化2.完整的计算机存储器应包括_。(分数:2.00)A.软盘、硬盘B.磁盘、磁带、光盘C.内存储器、外存储器D.RAM、ROM3.以下程序的输出结果是_。#includestdio.hmain()int k=4,m=1,p;p=func(k,m);printf(“%d,“,p);p=f
2、unc(k,m);printf(“%d/n“,p);func(a,b)int a,b;static int m=0,i=2;i+=m+1;m=i+a+b;return(m);(分数:2.00)A.8,17B.8,16C.8,20D.8,84.若有说明:int x3=1,3,5,7,9,11,13;,则 x数组的行数为_。(分数:2.00)A.2B.3C.4D.无确定值5.以下程序的输出结果是_。int i=010,j=10;printf(“%d,%d/n“,+i,j-);(分数:2.00)A.11,10B.9,10C.10,10D.10,96.若 x为 int类型变量,则执行以下程序段后的 x
3、值是_。x=6;x+=x-=x*x;(分数:2.00)A.36B.-60C.60D.-247.以下对 C语言函数的有关描述中,正确的是_。(分数:2.00)A.在 C程序中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B.函数既可以嵌套定义又可以递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中8.标有/$/的语句的执行次数是_。int y,i;for(i=0;i20;i+)if(i%2=0)continue;y+=i;/$/;(分数:2.00)A.20B.19C.10D.99.数据管理技术随着计算机技术的发展而发展。数据库
4、阶段具有许多特点,但下面列出的特点中,_不是数据库阶段的特点。(分数:2.00)A.数据结构化B.数据面向应用程序C.数据共享性高D.数据具有较高的独立性10.设有以下定义:char *st=“how are you“;下列程序段中正确的是_。(分数:2.00)A.char a11,*p;strcpy(p=a+1,B.char a11;strcpy(+a,st);C.char a11;strcpy(a,st);D.char a,*p;srtcpy(p=11.以下函数返回 a所指数组中最小的值所在的下标值:fun(int *a,int n)int i,j=0,p;p=j;for(i=j;in;i
5、+)If(aiap)_,return(p);在横线处应填入的是_。(分数:1.00)A.i=pB.ap=aiC.p=jD.p=i12.下列语句中,不正确的是_。(分数:1.00)A.static char a=“Jack“;B.static char a=“Jack“;C.printf(“%s“,a0);D.scanf(“%s“,a);13.在 C语言中提供的合法的关键词是_。(分数:1.00)A.swicthB.cherC.CaseD.default14.产生软件危机的原因是:一方面与软件生产本身的复杂性有关;另一方面,和_的方法不正确有关。(分数:1.00)A.软件的使用B.软件的成本C.
6、软件的开发和维护D.软件的文档资料15.下列定义不正确的有_。(分数:1.00)A.#define PI 3.141592B.#define S 345;C.int max(x, y);int x,y;D.int max(int,int);16.以下程序的输出结果是_。#includestdio.hmain()int a,b,d=241;a=d/100%9;b=(-1)printf(“%d,%d“,a,b);(分数:1.00)A.6,1B.2,1C.6,0D.2,017.设树 T的度为 4,其中度为 1、2、3、4 的结点的个数分别为 4、2、1、1,则 T中的叶点为_。(分数:1.00)A.
7、5B.6C.7D.818.若有以下定义:char a; int b; float c; double d; 则表达式 a*b+d-c值的类型为_。(分数:1.00)A.floatB.intC.charD.double19.以下程序段运行时_。char x10,y=“China“;x=y;printf(“%s“,x);(分数:1.00)A.将输出 ChinaB.将输出 ChC.将输出 ChiD.编译出错20.若定义 static int a22=1,2,3,4,则 a数组的各数组元素分别为_。(分数:1.00)A.a00=1,a01=2,a10=3,a11=4B.a00=1,at01=3,a10
8、=2,a11=4C.a00=4,a01=3,a10=2,a11=1D.a00=4,a01=2,a10=3,a11=121.给出以下定义:char x=“abcdefg“;char y=a,b,c,d,e,f,g;则正确的叙述为_。(分数:1.00)A.数组 x和数组 y等价B.数组 x和数组 y的长度相同C.数组 x的长度大于数组 y的长度D.数组 x的长度小于数组 y的长度22.若调用一个函数,且此函数中没有 return语句,则以下正确的说法是_。(分数:1.00)_23.在计算机系统中,可执行程序是_。(分数:1.00)A.源代码B.汇编语言代码C.机器语言代码D.ASC码24.以下程序
9、的输出结果是_。main()char c1=6,c2=0;printf(“%d,%d,%d/n“,c1,c2,c1-c2);(分数:1.00)A.因输出格式不合法,输出出错信息B.54,48,6C.6,0,7D.6,0,625.下列程序的输出结果是_。main()char a10=1,2,3,4,5,6,7,8,9,0,*p=a+5;printf(“%d“,*-p);(分数:1.00)A.非法B.a4的地址C.5D.726.对线性表进行二分查找,要求线性表为_。(分数:1.00)A.以顺序方式存储B.以链式方式存储C.以顺序方式存储,且要求数据元素有序D.以链接方式存储,且要求数据元素有序27
10、.C语言程序的基本单位是_。(分数:1.00)A.程序行B.语句C.函数D.字符28.以下对结构体变量 mix中成员 x的正确引用是_。structint t;int x;mix,*p;p=(分数:1.00)A.(*p).mix.xB.(*p).xC.p-mix.xD.mix.x29.以下程序的输出结果是_。#define TIMES(X) X*Xmain()int a=16,k=2,m=1;a/=TIMES (k+m)/TIMES(k+m);printf(“d/n“,(分数:1.00)A.;B.putchar(/108);C.scanf(“%d%*2d%d“,D.putchar(/);31.
11、已知 p为指针变量,a 为数组名,i 为整型变量,下列语句中,不正确的是_。(分数:1.00)A.p=B.p=a;C.p=D.p=10;32.关于线性表的描述,错误的一条是_。(分数:1.00)A.线性表是线性结构B.线性表就是单链表C.线性表的顺序存储结构,必须占用一片连续的存储单元D.线性表的链式存储结构,不必占用连续的存储单元33.设有结构体类型定义:struct tryint one;float two;*str;若要动态开辟一个结构单元,使指针 str指向其首地址,正确的语句是_。(分数:1.00)A.str=(try*)malloc(sizeof(try);B.*str=(stru
12、ct try*)malloc(sizeof(struct try);C.str=(strucy try*)malloc(sizeof(struct try);D.str=(struc try)malloc(sizeof(struct try);34.下列程序段的输出结果是_。void fun(int *x,int *y)printf(“%d %d“,*x,*y);*x=3;*y=4;main()int x=1,y=2;fun(printf(“%d %d“,x,y);(分数:1.00)A.2 1 4 3B.1 2 1 2C.1 2 3 4D.2 1 1 235.下列变量说明语句中,正确的是_。(
13、分数:1.00)A.char a=b=c;B.char a;b;c;C.int x;z;D.int x,z;36.以下能正确进行字符串赋值操作的是_。(分数:1.00)A.char *sss;*sss=“hello!“;B.char *sss;sss=“hello!“;C.char sss8;sss=“hello!“;D.char sss8;*sss=“hello!“;37.在 C程序中,可把整型数以二进制形式存放到文件中的函数是_。(分数:1.00)A.fprintf 函数B.fread 函数C.fwrite 函数D.fputc 函数38.设有语句:“int a=1,b=2,*p1=”,则使
14、指针 p1指向变量 b的赋值语句是_。(分数:1.00)A.p1=*p2B.*p1=p2C.p1=p2D.*p1=*p239.软件生存周期是指_这一过程。(分数:1.00)A.软件系统投入运行到软件系统被废弃B.软件系统投入试运行到软件系统被废弃C.软件系统开始研制到软件系统投入运行D.软件系统开始研制到软件系统被废弃40.设有以下语句:struct stint n;struct st*next;static struct st a3=5,p=则表达式的值是 6的为_。(分数:1.00)A.p+-nB.p-n+C.(*p).n+D.+p-n41.以下程序的输出结果是_。long fun(int
15、 n)long s;if(n=1|n=2) s=2;else s=n-fun(n-1);return s;main()printf(“%1d/n“,fun(3);(分数:1.00)A.1B.2C.3D.442.为了避免在嵌套的条件语句 if-else中产生二义性,C 语言中规定的 if-else配对原则是_。(分数:1.00)A.else子句与缩排位置相同的 if配对B.else子句与其之前最近的未被配对的 if配对C.else子句与其之后最近的 if配对D.else子句与同一行上的 if配对43.从一个具有 n个结点的单链表中查找其值等于 k的结点时,在查找成功的情况下,需平均比较_个结点(
16、分数:1.00)A.nB.n/2C.(n-1)/2D.(n+1)/244.下面程序的输出结果是_。main()int a=1,2,3,4,5,6,7,8,9,0,*p;p=a;printf(“%d/n“,*(p+9);(分数:1.00)A.0B.1C.10D.945.若有以下定义和语句,则对 w数组元素非法引用的是_。int w23,(*pw)3;pw=w;(分数:1.00)A.w0+2B.*(pw+1)2C.pw00D.*(pw1+2)46.以下程序的运行结果为_。main()int x,*p,*q;x=10;p=q=printf(“%d/n“,*q);(分数:1.00)A.10B.9C.8
17、D.1147.以下叙述中不正确的是_。(分数:1.00)A.C程序中的预处理命令行都以#号开始B.宏定义中的宏名可用大写字母或小写字母C.宏替换不占用运行时间,只占用编译时间D.使用带参数的宏时,参数的类型应与宏定义时的一致48.若有以下定义和语句:int a10=1,2,3,4,5,6,7,8,9,10,*p=a;则不能表示 a数组元素的表达式是_。(分数:1.00)A.*pB.a10C.*aD.ap-a49.以下程序的输出结果是_。fun(int *s,int p23)*s=p11;main()int a23=1,3,5,7,9,11,*p;p=(int *)malloc(sizeof(i
18、nt);fun(if(m+5) printf(“%d/n“,m);else printf(“%d/n“,m-);(分数:1.00)A.7B.6C.5D.4二、填空题(总题数:16,分数:32.00)51.黑盒测试是从 【1】 观点的测试。(分数:2.00)填空项 1:_52.关系模型的 3类完整性指的是 【2】 、参照完整性、用户定义的完整性。(分数:2.00)填空项 1:_53.当线性表的操作无插入和删除时,采用 【3】 结构为好。(分数:2.00)填空项 1:_54.对一组记录 54,38,96,23,15,72,60,45,83进行直接插入排序时,当插入第 5个记录到有序表时,寻找插入位
19、置需比较 【4】 次。(分数:2.00)填空项 1:_55.数据库系统在三级模式之间提供了两层映像,这两层映像是外模式/模式映像和 【5】 。(分数:2.00)填空项 1:_56.以下程序的输出结果为 【6】 。main()int k=1;white(k=15)if(+k%3!=2)continue;else printf(“%d “,k);printf(“/n“);(分数:2.00)填空项 1:_57.若 x,y 和 z均是 int型变量,则执行下面表达式后的 x值为 【7】 。x=(y=4)+(z=2)(分数:2.00)填空项 1:_58.下面程序的输出是 【8】 。main()int a
20、rr10,i,k=0;for(i=0;i,10;i+) arri=i;for(i=1;i4;i+) k+=arri+i;printf(“%d/n“,k);(分数:2.00)填空项 1:_59.设 i,j,k 均是 int型变量,则执行以下 for循环后,k 的值为 【9】 。for(i=0,j=10;i=j;i+,j-)k=i+j;(分数:2.00)填空项 1:_60.用以下语句调用库函数 malloc,使字符指针 st指向具有 11个字节的动态存储空间。st=(char*) 【10】 ;(分数:2.00)填空项 1:_61.设有以下结构类型说明和变量定义,则变量 a在内存所占字节数是 【11
21、】 。struct studchar num6;mt s4;double ave;a,*p;(分数:2.00)填空项 1:_62.下面程序的功能是将字符串 a下标值为偶数的元素由小到大排序,其他元素不变,请填空。#includestdio.hmain()char a=“labchmfye“,t;int i,j;for(i=0;i7;i+=2)for(j=i+2;j9; 【12】 )if( 【13】 )t=ai;ai=aj;aj=t;puts(a);printf(“/n“);(分数:2.00)填空项 1:_63.函数 compare的功能是比较两个字符串是否相等,若相等则函数返回值 0,否则返回
22、值 1,请填空。compare(char s,char t)int i=0;while(si=ti| 【14】 ) i+;return( 【15】 ?1:0);(分数:2.00)填空项 1:_64.若变量 n中的值为 24,则 print函数共输出 【16】 行,最后一行有 【17】 个数。void print(int n,int aa)int i;for(i=1;i=n;i+)printf(“%6d“,aai);if(!(i%5)printf(“/n“);printf(“/n“);(分数:2.00)填空项 1:_65.以下程序的输出结果是 12.00,请将空白处填写完整。main()int
23、a=9,b=2;float x= 【18】 ,y=1.1,z;z=a/2+b*x/y+1*2;printf(“%52f/n“,z);(分数:2.00)填空项 1:_66.以下函数把 b字符串连接到 a字符串的后面,并返回 a中新字符串的长度。strcen(char a,char b)int num=0,n=0;while(*(a+num)!= 【19】 )num+;while(bn)*(a+num)=bn;num+; 【20】 ;return(num);(分数:2.00)填空项 1:_二级 C语言笔试-152 答案解析(总分:92.00,做题时间:90 分钟)一、选择题(总题数:50,分数:6
24、0.00)1.某片软盘上已染有病毒,为防止该病毒传染计算机系统,正确的措施是_。(分数:2.00)A.删除软盘上的所有文件即删除了病毒B.将该软盘进行写保护C.将软盘放一段时间后再用D.将该软盘重新格式化 解析:解析 软盘中有病毒,有可能打开软盘就会感染机器,因此最好的办法是直接格式化。2.完整的计算机存储器应包括_。(分数:2.00)A.软盘、硬盘B.磁盘、磁带、光盘C.内存储器、外存储器 D.RAM、ROM解析:3.以下程序的输出结果是_。#includestdio.hmain()int k=4,m=1,p;p=func(k,m);printf(“%d,“,p);p=func(k,m);p
25、rintf(“%d/n“,p);func(a,b)int a,b;static int m=0,i=2;i+=m+1;m=i+a+b;return(m);(分数:2.00)A.8,17 B.8,16C.8,20D.8,8解析:4.若有说明:int x3=1,3,5,7,9,11,13;,则 x数组的行数为_。(分数:2.00)A.2B.3 C.4D.无确定值解析:解析 计算行数的方法是用数组的元素个数除以列数,尾数为小数直接进一位。5.以下程序的输出结果是_。int i=010,j=10;printf(“%d,%d/n“,+i,j-);(分数:2.00)A.11,10B.9,10 C.10,1
26、0D.10,9解析:解析 在 C语言中,以 0开头表示八进制数,所以本题程序中 010表示八进制数 10,相当于十进制数 8。因此 i的初值为 8,经+i 后,i 的值为 9。变量 j经 j-后,变为 10,由于自减运算符在 j的右侧,所以是先输出 j的值 10后,再自减 1。6.若 x为 int类型变量,则执行以下程序段后的 x值是_。x=6;x+=x-=x*x;(分数:2.00)A.36B.-60 C.60D.-24解析:7.以下对 C语言函数的有关描述中,正确的是_。(分数:2.00)A.在 C程序中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 B.函数既可以嵌套定义又
27、可以递归调用C.函数必须有返回值,否则不能使用函数D.C程序中有调用关系的所有函数必须放在同一个源程序文件中解析:解析 在 C语言中,提供了许多库函数供用户使用,因此选项 D错误。8.标有/$/的语句的执行次数是_。int y,i;for(i=0;i20;i+)if(i%2=0)continue;y+=i;/$/;(分数:2.00)A.20B.19C.10 D.9解析:解析 程序中标有/$/的语句 y+=i在 for循环中,由于该语句前面的条件语句使循环变量 i在对 2求余为 0时就结束本次循环,直接跳过标有/$/的语句,因此该语句执行了 10次。9.数据管理技术随着计算机技术的发展而发展。数
28、据库阶段具有许多特点,但下面列出的特点中,_不是数据库阶段的特点。(分数:2.00)A.数据结构化B.数据面向应用程序 C.数据共享性高D.数据具有较高的独立性解析:解析 数据的结构化是数据库阶段的重要特征之一。在数据库阶段,数据不再面向应用,而是面向整个系统,数据的共享性高、冗余小、易于扩展。由于数据库三级模式间的两级映像,所以数据具有较高的独立性。10.设有以下定义:char *st=“how are you“;下列程序段中正确的是_。(分数:2.00)A.char a11,*p;strcpy(p=a+1, B.char a11;strcpy(+a,st);C.char a11;strcp
29、y(a,st);D.char a,*p;srtcpy(p=解析:解析 选项 A表示把 st所指串的第 5个字符开始的后面的元素赋值给数组 a的第 2个元素开始的后面元素,形式正确;选项 B中出现对数组名进行自加运算,因此错误:选项 C中 st 所指字符串有 11个字符,再加上/0,有 12个字符,超过数组长度,所以也是错误的;选项 D的情况和选项 C相似,也是形式正确,但超过了数组的长度。11.以下函数返回 a所指数组中最小的值所在的下标值:fun(int *a,int n)int i,j=0,p;p=j;for(i=j;in;i+)If(aiap)_,return(p);在横线处应填入的是_
30、。(分数:1.00)A.i=pB.ap=aiC.p=jD.p=i 解析:解析 首先,p=0 是假设数组的第 1个元素为最小,然后在循环里将数组中的每一个元素 ai与当前最小元素 ap比较,如果前者小,那么就要更新 p的值,使 p=i。12.下列语句中,不正确的是_。(分数:1.00)A.static char a=“Jack“;B.static char a=“Jack“;C.printf(“%s“,a0); D.scanf(“%s“,a);解析:解析 当用%s 格式符输出字符串时,printf 中的输出项是字符数组名,不是数组元素名。13.在 C语言中提供的合法的关键词是_。(分数:1.00
31、)A.swicthB.cherC.CaseD.default 解析:解析 选项 A应为多分支语句中的 switch,选项 B应为定义字符类型的 char,选项 C应为多分支语句中的分支关键词 case(小写)。因此,选项 A、B、C 都有书写上的错误,只有选项 D正确。14.产生软件危机的原因是:一方面与软件生产本身的复杂性有关;另一方面,和_的方法不正确有关。(分数:1.00)A.软件的使用B.软件的成本C.软件的开发和维护 D.软件的文档资料解析:解析 在软件开发和维护的过程中存在着不少问题,从而导致软件危机。软件危机一方面与软件生产本身的复杂性有关,另一方面也和软件开发与维护的方法不正确
32、有关。15.下列定义不正确的有_。(分数:1.00)A.#define PI 3.141592B.#define S 345;C.int max(x, y);int x,y;D.int max(int,int);解析:解析 定义函数时,函数头后不能加分号。16.以下程序的输出结果是_。#includestdio.hmain()int a,b,d=241;a=d/100%9;b=(-1)printf(“%d,%d“,a,b);(分数:1.00)A.6,1B.2,1 C.6,0D.2,0解析:解析 在表达式的值作为逻辑值时,非 0值一律为 1,0 值才为 0。17.设树 T的度为 4,其中度为 1
33、、2、3、4 的结点的个数分别为 4、2、1、1,则 T中的叶点为_。(分数:1.00)A.5B.6C.7D.8 解析:解析 设树中度为 0、1、2、3、4 的结点个数各为 n0、n 1、n 2、n 3、n 4,T 中的结点个数为 n,则n=n0+n1+n2+n3+n4。在树中,除了根结点,其余结点都有分支进入,由于这些分支由度 1、2、3、4 的结点射出,所以 n=1*n1+2*n2+3*n3+4*n4+1,得 n0=n2+2n3+3n4+1。18.若有以下定义:char a; int b; float c; double d; 则表达式 a*b+d-c值的类型为_。(分数:1.00)A.f
34、loatB.intC.charD.double 解析:19.以下程序段运行时_。char x10,y=“China“;x=y;printf(“%s“,x);(分数:1.00)A.将输出 ChinaB.将输出 ChC.将输出 ChiD.编译出错 解析:解析 数组名可以认为是一个存放地址值的指针变量,这个指针变量中的地址值不可改变。因此,可以认为数组名是一个地址常量,所以不能将它随意改变。20.若定义 static int a22=1,2,3,4,则 a数组的各数组元素分别为_。(分数:1.00)A.a00=1,a01=2,a10=3,a11=4 B.a00=1,at01=3,a10=2,a11=
35、4C.a00=4,a01=3,a10=2,a11=1D.a00=4,a01=2,a10=3,a11=1解析:解析 C 语言中二维数组数组元素的排列顺序是按行依次存放的,所以 A是正确选项。21.给出以下定义:char x=“abcdefg“;char y=a,b,c,d,e,f,g;则正确的叙述为_。(分数:1.00)A.数组 x和数组 y等价B.数组 x和数组 y的长度相同C.数组 x的长度大于数组 y的长度 D.数组 x的长度小于数组 y的长度解析:解析 在 C语言中,字符串以/0作为结束符,因此数组 x的长度为 7+1=8,而数组 y的长度等于 7。22.若调用一个函数,且此函数中没有
36、return语句,则以下正确的说法是_。(分数:1.00)_解析:解析 函数体可以没有 return语句,程序执行到末尾为“23.在计算机系统中,可执行程序是_。(分数:1.00)A.源代码B.汇编语言代码C.机器语言代码 D.ASC码解析:24.以下程序的输出结果是_。main()char c1=6,c2=0;printf(“%d,%d,%d/n“,c1,c2,c1-c2);(分数:1.00)A.因输出格式不合法,输出出错信息B.54,48,6 C.6,0,7D.6,0,6解析:解析 本题 printf语句输出字符的 ASC码值(整型)。25.下列程序的输出结果是_。main()char a
37、10=1,2,3,4,5,6,7,8,9,0,*p=a+5;printf(“%d“,*-p);(分数:1.00)A.非法B.a4的地址C.5 D.7解析:解析 p 是一个指向字符的指针,在定义时,指向 a5。执行-p 时,p 就指向了 a4,那么*-p就是 5。26.对线性表进行二分查找,要求线性表为_。(分数:1.00)A.以顺序方式存储B.以链式方式存储C.以顺序方式存储,且要求数据元素有序 D.以链接方式存储,且要求数据元素有序解析:解析 二分查找的前提是线性表以顺序存储,且数据元素有序。27.C语言程序的基本单位是_。(分数:1.00)A.程序行B.语句C.函数 D.字符解析:解析 每
38、一个 C语言程序都是由若干个函数构成的。28.以下对结构体变量 mix中成员 x的正确引用是_。structint t;int x;mix,*p;p=(分数:1.00)A.(*p).mix.xB.(*p).x C.p-mix.xD.mix.x解析:解析 结构体变量中的成员有 3种引用方式:结构体变量名成员名;指针变量名-成员名:(*指针变量名)成员名。29.以下程序的输出结果是_。#define TIMES(X) X*Xmain()int a=16,k=2,m=1;a/=TIMES (k+m)/TIMES(k+m);printf(“d/n“,(分数:1.00)A.;B.putchar(/108
39、); C.scanf(“%d%*2d%d“,D.putchar(/);解析:解析 八进制中的基本数为 07,不可能出现 8。31.已知 p为指针变量,a 为数组名,i 为整型变量,下列语句中,不正确的是_。(分数:1.00)A.p=B.p=a;C.p=D.p=10; 解析:解析 不能把一个整数赋给指针变量,只能将变量已分配的地址赋给指针变量。32.关于线性表的描述,错误的一条是_。(分数:1.00)A.线性表是线性结构 B.线性表就是单链表C.线性表的顺序存储结构,必须占用一片连续的存储单元D.线性表的链式存储结构,不必占用连续的存储单元解析:解析 线性结构是一个更大的概念,线性表不能等同于线
40、性结构。33.设有结构体类型定义:struct tryint one;float two;*str;若要动态开辟一个结构单元,使指针 str指向其首地址,正确的语句是_。(分数:1.00)A.str=(try*)malloc(sizeof(try);B.*str=(struct try*)malloc(sizeof(struct try);C.str=(strucy try*)malloc(sizeof(struct try); D.str=(struc try)malloc(sizeof(struct try);解析:解析 由于在 ANSI C中 malloc函数返回的地址为 void,故在
41、调用函数时,必须利用强制类型转换将其转换成所需的类型。34.下列程序段的输出结果是_。void fun(int *x,int *y)printf(“%d %d“,*x,*y);*x=3;*y=4;main()int x=1,y=2;fun(printf(“%d %d“,x,y);(分数:1.00)A.2 1 4 3 B.1 2 1 2C.1 2 3 4D.2 1 1 2解析:解析 实参的个数必须与形参的个数一致,实参可以是表达式,在类型上应按位置与形参一一对应匹配。35.下列变量说明语句中,正确的是_。(分数:1.00)A.char a=b=c;B.char a;b;c;C.int x;z;D
42、.int x,z; 解析:解析 同时说明多个变量为同一类型时,变量之间应用逗号分隔。故 D为正确选项。36.以下能正确进行字符串赋值操作的是_。(分数:1.00)A.char *sss;*sss=“hello!“;B.char *sss;sss=“hello!“; C.char sss8;sss=“hello!“;D.char sss8;*sss=“hello!“;解析:37.在 C程序中,可把整型数以二进制形式存放到文件中的函数是_。(分数:1.00)A.fprintf 函数B.fread 函数C.fwrite 函数 D.fputc 函数解析:解析 fprintf 是格式文件格式化输出函数,
43、fread 是读文件,fputc 输出单个字符到文件。只有fwrite可以通过参数来设置以二进制形式写文件。38.设有语句:“int a=1,b=2,*p1=”,则使指针 p1指向变量 b的赋值语句是_。(分数:1.00)A.p1=*p2B.*p1=p2C.p1=p2D.*p1=*p2 解析:解析 对于定义 int *p,*q;,可以通过赋值语句 p=q;,把指针变量 q中的地址值赋给指针变量p,从而使这两个指针变量指向同一地址。39.软件生存周期是指_这一过程。(分数:1.00)A.软件系统投入运行到软件系统被废弃B.软件系统投入试运行到软件系统被废弃C.软件系统开始研制到软件系统投入运行D
44、.软件系统开始研制到软件系统被废弃 解析:解析 在软件工程学中,一个软件系统从开始研制到最终被废弃这个过程被叫做软件系统的生命周期。40.设有以下语句:struct stint n;struct st*next;static struct st a3=5,p=则表达式的值是 6的为_。(分数:1.00)A.p+-nB.p-n+C.(*p).n+D.+p-n 解析:解析 本题主要考查结构体变量的定义和应用,以及运算符的优先级。41.以下程序的输出结果是_。long fun(int n)long s;if(n=1|n=2) s=2;else s=n-fun(n-1);return s;main()
45、printf(“%1d/n“,fun(3);(分数:1.00)A.1 B.2C.3D.4解析:解析 本题两次执行 fun函数,第一次执行得 f(3)=s=n-f(n-1)=3-f(2):第二次执行得 s=2,通过传递返回值 f(2)=2,所以 s=3-2=1,即 f(3)=1。42.为了避免在嵌套的条件语句 if-else中产生二义性,C 语言中规定的 if-else配对原则是_。(分数:1.00)A.else子句与缩排位置相同的 if配对B.else子句与其之前最近的未被配对的 if配对 C.else子句与其之后最近的 if配对D.else子句与同一行上的 if配对解析:43.从一个具有 n个结点的单链表中查找其值等于