ImageVerifierCode 换一换
格式:DOCX , 页数:41 ,大小:37.63KB ,
资源ID:8394816      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-8394816.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言试题及答案Word下载.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

C语言试题及答案Word下载.docx

1、char str = “Hello” ; char *p = str ; int n = 10;请计算sizeof (str ) = sizeof ( p ) = sizeof ( n ) =2)void Func ( char str100) sizeof( str ) = 3) void *p = malloc( 100 );请计算sizeof ( p ) =10. 请仔细分析以下程序并回答问题。16void GetMemory(char *p)p = (char *)malloc(100);void Test(void) char *str = NULL;GetMemory(str);

2、strcpy(str, hello worldprintf(str);请问运行Test函数会有什么样的结果? 2)char *GetMemory(void) char p = ;return p;void Test(void)str = GetMemory(); Void GetMemory2(char *p, int num)*p = (char *)malloc(num);GetMemory(&str, 100);hello 4) void Test(void)char *str = (char *) malloc(100); strcpy(str, “hello”); free(str)

3、; if(str != NULL) strcpy(str, “world”);二、编程题第一组:请在以下三到题中任意选一道做101. 请编写程序,把文件a.txt和文件b.txt的内容都拷贝到文件c.txt中。2. 请编写一个程序,在一个升序的整形数组中是否有一个需要找的数,用折半查找法?3. 请编写一个程序,输出一个short类型数的镜像。(既:假如一个unsigned short类型的数的二进制码是1111 1111 0000 0000 那输出应为 0000 0000 1111 1111)。第二组:请在以下三到题中任意选一道做(如果选题3做,加5分)101. 请编写程序,将一个有数字组成的

4、字符串转化为整数。(不允许使用库函数atoi()2. 已知strcpy函数的原型是char *strcpy(char *strDest, const char *strSrc);其中strDest是目的字符串,strSrc是源字符串。不调用C+/C的字符串库函数,请编写函数 strcpy。3. 请编写一个程序,用递归的算法,来实现10!?第三组:请在以下三到题中任意选一道做(如果选题3做,加5分)151. 请编写一个程序,输出显示如下图形。1 1 1 1 11 2 2 2 11 2 3 2 12. 设编号为1,2, n的17个人围坐一圈,从1开始报数,数到3 的那个人出列,它的下一位又从1开始

5、报数,数到3的那个人又出列,依次类推,请编写一个程序,来得到最后留下来的那个人的编号。. 请编写一个程序,实现一个二叉树中序的遍历。第四组 该组是必须做题151.请编写一个程序,实现以下功能。1)创建一棵链表,该链表的每个节点有来存放一个整形的数。(提示:在创建链表时可以用输入0来结束创建)2)查找一个数是否是该链表的一个节点。3)如果这个数是在这个链表中,那么就删除该节点。请自己定义相关数据结构。试题一参考答案1. 答:在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不。在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一

6、个本地的全局变量。在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是这个函数被限制在声明它的模块的本地范围内使用。(考生可以自己的话总结,只要符合要求,就给分)2. 答:不会在两个操作之间把volatile变量缓存在寄存器中。在多任务、中断、甚至setjmp环境下,变量可能被其他的程序改变,编译器自己无法知道,volatile就是告诉编译器这种情况。不做常量合并、常量传播等优化。对volatile变量的读写不会被优化掉。如果你对一个变量赋值但后面没用到,编译器常常可以省略那个赋值操作,然而对Memory Mapped IO的处理是不能这样优化的。(考生可以自己的话总结,只要

7、符合要求,就给分) 3. 答:防止该头文件被重复引用。4. 答:对于#include ,编译器从标准库路径开始搜索 filename.h,对于#include “filename.h” ,编译器从用户的工作路径开始搜索 filename.h。5. 答:#define SECONDS_PER_YEAR (365*24*60*60)UL6. 答:#define MIN(A,B) (A)=(B)?(A):(B)7. 答:输出是 6。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。8. 答:输出是 1,

8、2 。不能满足真实的要求。 程序应该为 swap(int *p1 ,int *p2) int temp; temp=*p1;*p1=*p2;*p2=temp;swap(&a,&b);9. 答:6 4 4 4 410.1)答:程序崩溃。因为GetMemory并不能传递动态内存,Test函数中的 str一直都是 NULL。将使程序崩溃。2)答:可能是乱码。因为GetMemory返回的是指向“栈内存”的指针,该指针的地址不是 NULL,但其原现的内容已经被清除,新内容不可知。3)答:能够输出hello。会有内存泄漏的情况。4)答:篡改动态内存区的内容,后果难以预料,非常危险。因为free(str);

9、之后,str成为野指针,if(str != NULL)语句不起作用。二、编程题(注:编程题主要考察考生的思路,考生的回答不一定会和参考答案一样) 第一组:#include void mian(void) FILE *fp1,*fp2,*fp3; char ch; fp1=fopen(a.txt,r fp2=fopen(b.txt fp3=fopen(c.txtw ch=fgetc(fp1); while(ch!=EOF) fwrite(&ch,1,1,fp3); ch=fgetc(fp1); ch=fgetc(fp2); ch=fgetc(fp2); fclose(fp1); fclose(f

10、p2); fclose(fp3);#include=low) middle=(low+high)/2; if(need_numnummiddle) low=middle+1; else if(need_num high=middle-1; else if(need_num=nummiddle) return 1; return 0;/*用来测试的*/void main(void) int a=1,2,3,4,5,6,7,8,9,10; int flag=0; flag=find_number(a,3,10); if(flag) printf(existn elseno existn/*/voi

11、d image(unsigned short src) int i; unsigned short dest=0;printf(%xn,src);for(i=0;ii)&1) int x,y,result; for(y=-2;y3;y+) for(x=-2;xfabs(y) result=3-fabs(x); printf(%d,result); else result=3-fabs(y); nstdlib.h#define null 0struct node int data; struct node *next; struct node *p,*tmp,*head; p=head=(str

12、uct node *)malloc(sizeof(struct node); head-data=1;next=null; for(i=2;=17; tmp=(struct node *)malloc(sizeof(struct node); tmp-data=i; head-next=tmp; head=head-next;next=p; while(p!=p-next) p-next-next=p- p=p-%dn,p-data);typedef struct tree /*定义树结点结构*/ struct tree *child; struct tree *rchild;treenode

13、,*bintree;bintree create_tree(int data,int len) /*利用插入算法创建二叉树*/ bintree root; root=NULL; for(i=0;len; root=insert_node(root,datai); return root;void inorder(bintree root) /*中序遍历二叉树的递归算法*/ if(root!=NULL) inorder(root-lchild);,root-rchild);第四组: 1答:#define NULL 0#define LEN sizeof(struct data)struct da

14、ta int num; struct data *next;int n=0;struct data *creat(void) struct data *head; struct data *p1,*p2; n=0; p1=p2=(struct data *)malloc(LEN); scanf(,&p1-num); head=NULL; if(p1-num=0) free(p1); while(p1-num!=0) n=n+1; if(n=1) head=p1; else p2-next=p1; p2=p1; p1=(struct data *)malloc(LEN); scanf( p2-n

15、ext=NULL; return head;int find(struct data *head,int findnum) struct data *p1; p1=head; while(p1! if(p1-=findnum) p1=p1- return findnum; if(p1=NULL) return 0;struct data *del(struct data *head,int neednum) if(head=NULL) return head; while(neednum!=p1-num&next! p1=p1- if(neednum=p1-num) if(p1=head) h

16、ead=p1-next=p1- free(p1);void print(struct data *head),p1- int findnum=5; int flag; head=creat(); print(head); flag=find(head,findnum); head=del(head,flag);试题二问答题1、局部变量能否和全局变量重名?2、如何引用一个已经定义过的全局变量?3、全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么?4、动态连接库的两种方式?5、 int i=10, j=10, k=3; k*=i+j; k最后的值是?6、C+中什么数据分配在栈或堆中,N

17、ew分配数据是在近堆还是远堆中?7、 什么是“引用”?申明和使用“引用”要注意哪些问题?8、 将“引用”作为函数参数有哪些特点?9、在什么时候需要使用“常引用”?10、static全局变量与普通的全局变量有什么区别?static局部变量和普通局部变量有什么区别?static函数与普通函数有什么区别?11、 结构与联合有和区别?12、程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于( )中?13、队列和栈有什么区别?14、为什么标准头文件都有类似以下的结构?15、 include 与 include file.h的区别?16、面向对象的三个基本特征,并简单叙述之?17、 多态

18、:是将父对象设置成为和一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。18、请说出static和const关键字尽可能多的作用19、New delete 与malloc free 的联系与区别?20、#define DOUBLE(x) x+x ,i = 5*DOUBLE(5); i 是多少?21、 有哪几种情况只能用intialization list 而不能用assignment?22、C+是不是类型安全的?23、main 函数执行以前,还会执行什么代码?24、描述内存分配

19、方式以及它们的区别?25、Heap与stack的差别?26、 在8086 汇编下,逻辑地址和物理地址是怎样转换的?27、C和C+有什么不同?28、 “& ”“|” 和 “&” “|”的区别?29、假设你有8个球,其中一个略微重一些,但是找出这个球的惟一方法是将两个球放在天平上对比。最少要称多少次才能找出这个较重的球?30、进程和线程的差别? 试题二参考答案问答题1:能,局部会屏蔽全局。要用全局变量,需要使用:,局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同

20、名的局部变量,而那个局部变量的作用域就在那个循环体内。问答题2:Extern,可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个函数名写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。问答题3:可以,在不同的C文件中以static形式来声明同名全局变量。可以在不同的C文件中声明同名的全局变量,前提是其中只能有一个C文件中对此变量赋初值,此时连接不会出错问答题4:调用一个DLL中的函数有两种方法:1载入时动态链接(load-time dynamic linking),模块非常明确调用某个导出函数,使得他们就像本地函数一样。这需要链接时链接那些函数所在DLL的导入库,导入库向系统提供了载入DLL时所需的信息及DLL函数定位。2运行时动态链接(run-time dynamic linking),运行时可以通过LoadLibrary或LoadLibraryEx函数载入DLL。DLL载入后,模块可以通过调用GetProcAddress获取DLL函数的出口地址,然后就可以通过返回的函数指针调用DLL函数了。如此即可避免导入库文件了。问答题5:60,此题考察优先级,实际写成: k*=(i+j)

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2