c语言笔试题答案.docx

上传人:b****2 文档编号:1037402 上传时间:2022-10-15 格式:DOCX 页数:13 大小:28.67KB
下载 相关 举报
c语言笔试题答案.docx_第1页
第1页 / 共13页
c语言笔试题答案.docx_第2页
第2页 / 共13页
c语言笔试题答案.docx_第3页
第3页 / 共13页
c语言笔试题答案.docx_第4页
第4页 / 共13页
c语言笔试题答案.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

c语言笔试题答案.docx

《c语言笔试题答案.docx》由会员分享,可在线阅读,更多相关《c语言笔试题答案.docx(13页珍藏版)》请在冰豆网上搜索。

c语言笔试题答案.docx

c语言笔试题答案

c语言笔试题(答案)

笔试题

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

1)structtagABC

{

charname[10];

charsex;

longsno;

floatscore[4];

}*pAbc;(四字节对齐)

pAbc=NULL;

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

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

int*p1,*p2;

intvalue;

p1=(int*)0×400;

p2=(int*)0×408;

value=p2-p1;

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

(2)

#include〈stdio.h〉

#include〈string.h〉

voidmain(void)

{

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

printf(“%d\n”,strlen(acNew));

}

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

main()

{

inty=3,x=3,z=1;

printf(“%d%d\n”,(++x,y++),z+2);

}

5)设有:

inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d)后,n的值为

(2)

6)structtagAAA

{

UnsignedcharucId:

1;

UnsignedcharucPara0:

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[1];则表达式*++p的值是(A)

A.20

B.21

C.30

D.31

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

inta[]={1,3,5,7,9};

intmul,*data,x;

mul=1;

data=&a[1];

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

A.15

B.105

C.315

D.945

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

intlist[]={6,7,8,9,10};

int*p;p=list;

*(p+2)=10;

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

A.8,10

B.6,8

C.7,9

D.6,10

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

A.chars1[10];s1=”China”;

B.chars2[]={’C’,’h’,’i’,’n’,’a’};

C.chars3[20]=”China”;

D.char*s=”China”;

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

#include

main()

{char*p=“abcde\0fghjik\0”;

printf(“%d\n”,strlen(p));}

A.12

B.15

C.6

D.5

15)为了比较两个字符串s1和s2是否相等,应当使用(C)

A.if(s1=s2)

B.if(s1==s2)

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

D.if(strcmp(&s1,&s2)==0)

16)设有如下结构定义:

structstudent

{intnum;

charname[20];

charsex;

intage;

charaddr[30];

}stud;

若用printf(“%s\n”,…)访问该结构中name值的正确方法是(D)

A.stud->name

B.&stud.name

C.stud.&name

D.stud.name

17)想对一个文本文件的尾部追加写入,应当在fopen语句中使用的文件操作方式指示符号为(D)

A.w

B.r

C.wb

D.a

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

1).如下程序用于输出"Welcome Home"。

请指出其中的错误:

(4分)

void Test(void)

{

    char pcArray[12];

    strcpy(pcArray,"Welcome Home");

    printf("%s!

", pcArray);

    return;

}

答案:

数组越界。

2).如下程序用于把"blue"字符串返回,请指出其中的错误:

(4分)

char *GetBLUE(void)

{

    char* pcColor ;

    char* pcNewColor;

    pcColor = "blue";

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

    if(NULL == pcNewColor)

    {

        return NULL;

    }

    strcpy(pcNewColor, pcColor);

    return pcNewColor;

}

答案:

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

3).下面程序期望输出str = hello world,请指出其中的错误:

(4分)

char * GetStr(char *p)

{

    p = "hello world";

    return p;

}

void main()

{   

    char *str = NULL;

  

    if(NULL !

= GetStr(str))

    {        

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

    }

    return;

}

答案:

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

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

(4分)

#define BUFFER_SIZE     256

void Test(void)

{

    char *str = NULL;

    str = (char *)malloc(BUFFER_SIZE);

    if(NULL == str)

    {

        return;

    }

  strcpy(str, "hello");

  free(str);  

  if(NULL !

= str)

  {

     strcpy(str, "world");

        printf(str);

    }

    return;

}

答案:

引用了已经释放的内存。

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

(4分)

void GetMemory(char **ppcChar, int iLength)

{

    if(NULL == ppcChar)

    {

        return;

    }

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

    return;

}

void Test(void)

{

    char *szStr = NULL;

    GetMemory(&szStr, 100);

    

    if(NULL !

= szStr)

    {

        strcpy(szStr, "hello");

        printf(szStr);

    }

    return;

}

答案:

没有释放内存。

 

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

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

(4分)

答案:

#definedMAX(A,B)((A)>=(B)?

(A):

(B))

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

(4分)

答案如下:

(采用树的孩子兄弟法将树转换

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1