c语言笔试题答案_第1页
c语言笔试题答案_第2页
c语言笔试题答案_第3页
c语言笔试题答案_第4页
c语言笔试题答案_第5页
已阅读5页,还剩11页未读, 继续免费阅读

下载本文档

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

文档简介

C语言笔试题答案

资料仅供参考

笔试题

一、填空题(每个空4分,共28分)

1)structtagABC

{

charname[10];

charsex;

longsno;

floatscore[4];

产pAbc;(四字节对齐)

pAbc=NULL;

那么,执行pAbc+=2;之后pAbc的值为

(64)

2)如下代码,最终value的值是(8)

int*pl,*p2;

intvalue;

pl=(int*)0X400;

p2=(int*)0X408;

value=p2-pl;

3)如下代码,printf的结果为(2)

#include(stdio.h)

ttinclude(string,h)

资料仅供参考

voidmain(void)

characNew[20]="\\0\0”;

printf("%d\n",strlen(acNew));

)

4)有如下程序段,运行该程序的输出结果是

(33)

main()

inty=3,x=3,z=l;

printf(a%d%d\n^,(++x,y++),z+2);

)

5)设有:inta=l,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n=c>d)后,n的值为(2)

6)structtagAAA

Unsignedcharucld:1;

UnsignedcharucParaO:2;

UnsignedcharucState:6;

UnsignedcharucTail:4;

UnsignedcharucAvail;

UnsignedcharunTail2:4;

资料仅供参考

UnsignedlongulData;

}AAA_S

问:AAA_S在字节对齐分别为1,4情况下,占

用的空间大小分别是多少?(9)(12)

二、选择题(每题2分,共34分)

1)若有说明int(*p)[3];以下叙述正确的是

(D)

A:p是指针数组

B:(*p)[3]和*p[3]等价

C:p是指向一维数组中任何一个元素的指针

D:p是指向含有3个整型元素的一维数组的

指针

2)以下关于单元测试的描述,哪些是正确?

(D)

A:黑盒测试针对软件的功能,不考虑功能的

实现细节;

B:白盒测试针对源代码的测试,从程序功能

的具体实现上找错;

C:路径覆盖是黑盒测试的一种方法,编写测

试用例使程序的每条语句都能走到;

D:条件覆盖是百盒测试的一种方法,编写测

资料仅供参考

试用例使程序的每个判断的各种情况都能到

3)以下能够用于任务间通信的有(ABCD)

A:共享内存B:信号量

C:消息队列和管道D:socket调

用

4)有关结构,以下哪些描述是正确?(BC)

A:为了测试方便,尽量把一个结构的功能设

计得多一些

B:不同结构间的关系不要过于复杂

C:结构中的各元素应代表同一事务的不同

侧面,而不应把描述没有关系或关系很

弱的不同事务的元素放到同一结构中

D:结构中元素的布局与排列顺序能够随意

设计

5)关于强制类型转化,下面说法正确的是

(ABCD)

A:当目的结构的空间大于源结构的空间时,

要重点关注内存访问超过源结构范围的情

形,可能越界;

B:当目的结构的空间小于源结构的空间时,

要重点关注对目的结构赋值不能完全覆盖

源结构范围的情形,可能遗漏;

资料仅供参考

C:结构体之间的强制类型转换时,其成员字

段的数据类型的差异也是要格外小心的;

D:与结构体之间的强制类型转换相比,基本

数据结构的强制类型转换更容易出现上面

描述的情况,使用的时候,一定要慎之又

慎;

6)正确的使用assert,软件系统不会对人为原

因造成的错误进行处理。它有利于(ABCD)

A:缺陷及早暴露,加快定位进程;

B:明确表示函数接口或算法逻辑的校验关

系,增强软件代码的可读性;

C:去除不必要的容错处理,简化代码处理流

程,降低软件处理复杂度;

D:强化编程接口之间的契约,增强软件的可

维护性;

7)对于循环体的执行效率,下述说法正确的是

(ABCD)

A:循环体内工作量最小化

B:在多重循环中,应将最忙的循环放在最内

层

C:尽量减少循环的嵌套层次

D:避免在循环体内做无谓的判断语句,将循

资料仅供参考

环语句置于判读语句的代码块之中

8)设数组a[5]={10,20,30,40,50};已知指针p

指向a[l];则表示式*++p的值是(A)

A.20

B.21

C.30

D.31

9)有以下程序段,执行后,mul的值为(B)

inta[]=<1,3,557,9);

intmul,*data5x;

mid=1;

data=&a[1];

for(x=0;x<3;x++)mul*=*(data+x);

A.15

B.105

C.315

D.945

10)有以下程序段,执行后的结果为(D)

intlist[]={6575859310);

int*p;p=list;

*(P+2)=10;

printf(J,%d,%d\n,,,*p,*(p+2));

资料仅供参考

A.8,10

B.6,8

C.7,9

D.6,10

11)以下语句不能正确赋值的是(A)

A.chars1[10];s1=,5China,J;

B.chars2[]={

C.chars3[20]=,JChina,5;

D.char*s=,,ChinaJ,;

12)C语言中,定义PI为一个符号常量,正确的

是(A)

A.#definePI3.14

B.definePI3.14

C.includePI3.14

D.includePI3.14

13)有以下程序,该程序输出的结果为(B)

#defineN3

#defineMN+2

#defineNUM2*M+1

main()

inti;

资料仅供参考

i=NUM;

printf(,,%d\n,\i);

}

A.11、

B.9

C.7

D.5

14)有以下程序,程序运行后的输出结果是

(D)

#include<string.h>

#include<stdio.h>

main()

{char*p=uabcde\Ofghjik\O,J;

printf("%d\rT,strlen(p));}

A.12

B.15

C.6

D.5

15)为了比较两个字符串si和s2是否相等,应

当使用(C)

A.if(s1=s2)

B.if(s1==s2)

资料仅供参考

C.if(strcmp(s1,s2)==0)

D.if(strcmp(&s15&s2)==0)

16)设有如下结构定义:

structstudent

{intnum;

charname[20];

charsex;

intage;

charaddr[30];

}stud;

若用printf("%s\n”,…)访问该结构中name

值的正确方法是(D)

A.stud->name

B.&

C.stud.&name

D.

17)想对一个文本文件的尾部追加写入,应当在

fopen语句中使用的文件操作方式指示符号为

(D)

A.w

B.r

C.wb

D.a

资料仅供参考

三、指出下列程序的错误(每题4分,共20分)

工).如下程序用于输出"WelcomeHome,请指出其中的错误:(4分)

voidTest(void)

{

charpcArray[12];

strcpy(pcArray/'WelcomeHome");

printfC'^s!",pcArray);

return;

}

答案:数组越界。

2),如下程序用于把“blue”字符串返回,请指出其中的错误:(4分)

char*GetBLUE(void)

<

char*pcColor;

char*pcNewColor;

pcColor="blue”;

pcNewColor=(char*)malloc(strlen(pColor));

if(NULL==pcNewColor)

(

returnNULL;

)

strcpy(pcNewColor,pcColor);

returnpcNewColor;

}

答案:申请内存空间不足,字符串结尾还有‘\0'。

3)・下面程序期望输出str=helloworld,请指出其中的错误:(4分)

char*GetStr(char*p)

<

p="helloworld";

returnp;

)

voidmain()

<

char*str=NULL;

if(NULL!=GetStr(str))

<

printf("\r\nstr=%s”,str);

)

return;

}

答案:无法返回字符串,参数使用错误。

资料仅供参考

4).请指出下面程序错误的地方:(4分)

#defineBUFFER_SIZE256

voidTest(void)

{

char*str=NULL;

str=(char*)malloc(BUFFER_SIZE);

if(NULL==str)

{

return;

?

,

strcpy(strz"hello');

free(str);

if(NULL!=str)

<

strcpy(strz"world");

printf(str);

}

return;

}

答案:引用了已经释放的内存。

5).请指出下面程序的错误:(4分)

voidGetMemory(char**ppcCharzintiLength)

<

if(NULL==ppcChar)

<

return;

y

♦ppcChar=(char*)malloc(iLength);

return;

}

voidTest(void)

<

char*szStr=NULL;

GetMemory(&szStrz100);

if(NULL!=szStr)

<

n

strcpy(szStrz"hello);

printf(szStr);

}

return;

}

答案:没有释放内存。

资料仅供参考

四、简答题(每题4分,共8分)

1)写宏定义MAX,求出两个数中的较大者。(4分)

答案:^definedMAX(A,B)((A)>=(B)?(A):(B))

2)画出同下面多叉树等价的二叉树,并作说明。(4分)

答案如下:(采用树的核子兄弟法将树转换成二叉树)

五、编程题(共10分)

1)给一个单链表,删除某一节点(要求:先找到是否有这个节点,然后再删

除,要能保证程序运行正确)(10分)

参考解法如下:

include<iostream.h>

#include<malloc.h>

资料仅供参考

#include<stdio.h>

#includc<conio.h>

typcdcfstructlinkqueucl

(

intdata;

structlinkqueuel*next;

{linkqueuel,linklist;

linklist*creat(void)〃建立链表

(

linklist*head;

intn=l,len;

linklist*pl,*p2;

coul«"inputnumberofrecords:*'«endl;

cin»len;

head=pl=p2=(linklist*)malloc(sizeof(linklist));

cout«*'inputrecords;**«cndl;

cin»pl->data;

hcad->next=NULL;

while(n++<=len-l)

{

pl=(linklist*)malloc(sizeof(linklist));

cin»pl->data;

p2->next=pl;

p2=pl;

p2->ncxt=MULL;

}

return(head);

}

voidoutlink(linklist*head)

(

linklist*p;

p=head;

while(p)

(

cout«p->data«'tH;

p=p->next;

}

)

intbianli(linklist*head,intNumber)〃遍历链表,返回1说明有要删除的元素,反之。

linklist*p;

资料仅供参考

p=head;

while(p->ncxt!=NLJLL)

(

if(p->data==Number)

ret

温馨提示

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

评论

0/150

提交评论