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

下载本文档

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

文档简介

1、本文档如对你有帮助,请帮忙下载支持!笔试题一、填空题 ( 每个空 4 分,共 28 分)1) struct tagABCchar namechar sexlong sno10;float score 4;*pAbc;(四字节对齐 )pAbc=NULL;那么,执行pAbc+=2;之后 pAbc 的值为(64 )2)如下代码,最终value的值是(8 )int *p1,*p2;int value;p1=(int*)0× 400;p2=(int*)0× 408;value = p2-p1;3)如下代码, printf 的结果为( 2)#include stdio.h#includ

2、e string.hvoid main(void)char acNew 20 = “ 00” ;printf(“ %dn” ,strlen(acNew);4) 有如下程序段,运行该程序的输出结果是(33 )main ()int y=3,x=3,z=1;printf(“ %d%dn” ,(+x,y+),z+2);5) 设有: inta=1,b=2,c=3,d=4,m=2,n=2;执行(m=a>b)&&(n=c>d) 后, n 的值为 (6) struct tagAAA2)Unsigned char ucId:1;Unsigned char ucPara0:2;Unsi

3、gned char ucState:6;Unsigned char ucTail:4;Unsigned char ucAvail;Unsigned char unTail2:4;本文档如对你有帮助,请帮忙下载支持!Unsigned long ulData;AAA_S问: AAA_S在字节对齐分别为1,4 情况下,占用的空间大小分别是多少?(9)(12 )二、选择题 ( 每题 2分,共 34 分)1)若有说明 int ( *p ) 3;以下叙述正确的是(D )A: p 是指针数组B:( *p ) 3 和 *p3 等价C: p 是指向一维数组中任何一个元素的指针D: p 是指向含有 3 个整型元素

4、的一维数组的指针2)以下关于单元测试的描述,哪些是对的?(D )A :黑盒测试针对软件的功能,不考虑功能的实现细节;B :白盒测试针对源代码的测试,从程序功能的具体实现上找错;C :路径覆盖是黑盒测试的一种方法,编写测试用例使程序的每条语句都能走到;D :条件覆盖是百盒测试的一种方法 , 编写测试用例使程序的每个判断的各种情况都能到3) 以下可以用于任务间通信的有(ABCD)A:共享内存B:信号量C :消息队列和管道D:socket调用4) 有关结构,以下哪些描述是对的?(BC)A:为了测试方便,尽量把一个结构的功能设计得多一些B:不同结构间的关系不要过于复杂C:结构中的各元素应代表同一事务的

5、不同侧面,而不应把描述没有关系或关系很弱的不同事务的元素放到同一结构中D:结构中元素的布局与排列顺序可以随意设计5) 关于强制类型转化,下面说法正确的是(ABCD)A:当目的结构的空间大于源结构的空间时, 要重点关注内存访问超过源结构范围的情形,可能越界;B: 当目的结构的空间小于源结构的空间时,要重点关注对目的结构赋值不能完全覆盖源结构范围的情形,可能遗漏;C :结构体之间的强制类型转换时,其成员字段的数据类型的差异也是要格外小心的;D :与结构体之间的强制类型转换相比,基本数据结构的强制类型转换更容易出现上面描述的情况,使用的时候,一定要慎之又慎;6) 正确的使用assert ,软件系统不

6、会对人为原因造成的错误进行处理。它有利于( A BCD )A :缺陷及早暴露,加快定位进程;B :明确表示函数接口或算法逻辑的校验关系,增强软件代码的可读性;C :去除不必要的容错处理,简化代码处理流程,降低软件处理复杂度;D :强化编程接口之间的契约,增强软件的可维护性;7) 对于循环体的执行效率,下述说法正确的是(ABCD )A :循环体内工作量最小化B :在多重循环中,应将最忙的循环放在最内层C :尽量减少循环的嵌套层次D :避免在循环体内做无谓的判断语句,将循环语句置于判读语句的代码块之中8) 设数组 a5=10,20,30,40,50;已知指针p 指向 a1 ;则表达式 *+pA20

7、的值是(A )本文档如对你有帮助,请帮忙下载支持!B 21C 30D 319) 有以下程序段 , 执行后, mul 的值为( B )int a =1,3,5,7,9;int mul, *data, x;mul=1;data=&a1;for( x=0; x<3; x+) mul *= *(data+x);A 15B 105C 315D 94510) 有以下程序段,执行后的结果为(D)int list =6,7,8,9,10;int * p;p=list;*(p+2)=10;printf(”%d, %d n”,*p,*(p+2);A 8, 10B 6, 8C 7, 9D 6, 101

8、1) 以下语句不能正确赋值的是( A)A char s110; s1= ”China”;B char s2 =C, h, i , n, a;C char s320= ”China”;D char *s= ”China”;12) C语言中,定义PI 为一个符号常量,正确的是(A)A #define PI 3.14B define PI 3.14C #include PI 3.14D include PI 3.1413) 有以下程序,该程序输出的结果为(B)#define N 3#define M N+2#define NUM 2*M+1main()int ii=NUMprintf(;”%d n”

9、,i);本文档如对你有帮助,请帮忙下载支持!A 11 、B 9C 7D 514) 有以下程序,程序运行后的输出结果是(D )#include <string.h>#include <stdio.h>main() char *p=“abcde0”;printf(“%d n” , strlen(p); A 12B 15C 6D 515) 为了比较两个字符串s1 和 s2 是否相等,应当使用(C )A if (s1=s2 )B if (s1=s2 )C if (strcmp(s1, s2)=0D if (strcmp(&s1, &s2)=016) 设有如下结构

10、定义:)struct student int num;char name20;char sex;int age;char addr30; stud;若用printf(“%s n”, ) 访问该结构中name值的正确方法是(D )A stud->nameB &C stud.&nameD 17) 想对一个文本文件的尾部追加写入, 应当在 fopen 语句中使用的文件操作方式指示符号为(D)A wB rC wbD a三、指出下列程序的错误(每题4 分,共20 分)1).如下程序用于输出"WelcomeHome"。请指出其中

11、的错误:(4 分)voidTest(void)本文档如对你有帮助,请帮忙下载支持!charpcArray12;strcpy(pcArray,"WelcomeHome");printf("%s!",pcArray);return;答案:数组越界。2). 如下程序用于把 "blue"字符串返回,请指出其中的错误:(4 分)char *GetBLUE(void)char*pcColor;char*pcNewColor;pcColor="blue"pcNewColor=(char*)malloc(strlen(pColor

12、);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("rnstr= %s",str);return;答案:无法返回字符串,参

13、数使用错误。4). 请指出下面程序错误的地方:(4 分)#defineBUFFER_SIZE256voidTest(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 分)voidGetMemory(char

14、*ppcChar,intiLength)if(NULL=ppcChar)return;*ppcChar=(char*)malloc(iLength);return;voidTest(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)

15、?(A):(B) )2) 画出同下面多叉树等价的二叉树,并作说明。 (4 分)本文档如对你有帮助,请帮忙下载支持!ABCDEF答案如下:(采用树的孩子兄弟法将树转换成二叉树)ABCEDF五、编程题(共10 分)1) 给一个单链表,删除某一节点(要求:先找到是否有这个节点,然后再删除,要能保证程序运行正确) (10 分)参考解法如下:include<iostream.h>#include<malloc.h>#include<stdio.h>#include<conio.h>typedefstructintdata;structlinkqueue1l

16、inkqueue1*next;linkqueue1,linklist;linklist*creat(void)/ 建立链表linklist*head;本文档如对你有帮助,请帮忙下载支持!intn=1,len;linklist*p1,*p2;cout<<"inputnumberofrecords:"<<endl;cin>>len;head=p1=p2=(linklist*)malloc(sizeof(linklist);cout<<"inputrecords:"<<endl;cin>>

17、p1->data;head->next=NULL;while(n+<=len-1)p1=(linklist*)malloc(sizeof(linklist);cin>>p1->data;p2->next=p1;p2=p1;p2->next=NULL;return(head);voidoutlink(linklist*head)linklist*p;p=head;while(p)cout<<p->data<<" "p=p->next;intbianli(linklist*head, intNu

18、mber) /遍历链表,返回1 说明有要删除的元素,反之。linklist*p;p=head;while(p->next!=NULL)if( p->data= Number)return 1;return0;linklist*deletenode(linklistlinklist*Pointer,Back =head;*head,int *Back;deleteNumber)本文档如对你有帮助,请帮忙下载支持!Pointer= Back >next;while(Pointer->data!= deleteNumber)Pointer+;Back= Back->next;if(Pointer->data=deleteNumber)printf("删除首节点! n");head=Pointer ->next;free(Pointer);break;elseBack->next=Pointer->next;free(Pointer);brea

温馨提示

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

评论

0/150

提交评论