c语言练习题1(有答案)_第1页
c语言练习题1(有答案)_第2页
c语言练习题1(有答案)_第3页
c语言练习题1(有答案)_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、一、问答题1.请问以下代码有什么问题:int main()char a;char *str=&a;strcpy(str,"hello");printf(str);return 0;答:stcpy是将“hello覆盖到str上,str却没有足够的容量,出错:栈溢出改为int main()char a10;char *str=a;strcpy(str,"hello");printf("%s",str); return 0;PS:1. printf()格式不对2.虽然运行结果是正确的能够打印:hello,但是会有栈的错误,因为a是一

2、个char数据,在这里分配的内存给 1 一个字节,所以在 strcpy会出现内存访问越界2. int (*s10)(int)表示的是什么啊答:存放 返回值和参数都是整型的函数的指针 的数组PS:函数指针数组3.void main()(char aa10;printf( "d”,strlen(aa);会出现什么问题?打印结果是是多少答:strlen对应白是ld,把d%改为ld% ,那么打印结果是 0PS:打印结果是未知的。Sizeof与数组初始化没有关系。Strlen跟数组初始化有关系的,打印结果会根据数组中出现0 '为止4. 头文件中的ifndef/define/endif

3、干什么用?答:防止重定义,也就是防止对已经声明的变量产生冲突PS: ifndef _MAIN_H_ 如果没有定义某个宏 Define /马上就定义这个宏 o 0 o 0 endif /结束判断 为了防止头文件被用户多次包 5.程序哪里有错误wap( int* p1,int* p2 ) int * p ;* p = *p1;* p1 = *p2; *p2 = *p; 答:p指针没有指向一块地址,所以也就不能放 pl上的目标,报错:栈溢出, 可改为void wap( int* p1,int* p2 ) ( int c;int *p=&c;* p = *p1;* p1 = *p2;* p2

4、= *p;printf("a=%d,b=%d",*p1,*p2);int main()int a,b;a=1;b=2;printf("a=%d,b=%dn",a,b);wap(&a,&b);return 0;PS:1 .返回值2 .指针p没有初始化,出现了野指针3 .指针p在赋值之前没有分配内存空间,不可以 *p= *p1 ;6 .请说明以下const关键字的作用?Const int * ptr; * ptr 被 constint *const ptr; ptr 被 constconst int Num; Num 被 const答:con

5、st作用:限定一个变量不允许被改变PS:1 .表示不能使用ptr来修改ptr所指向的内容2 .表示不能修改ptr所执行的内容(地址)3 .表示不允许修改NUM得值7 .关键字static的作用是什么?答:首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区, 所以它具备持久性和默认值00(一)隐藏,对其他源文件不可见。修饰变量(全局变量,局部变量)为内 部(静态),修饰函数为内部(静态)(二)保持变量内容的持久。例如函数(非主函数)内被 static修饰的变量 a,函数被释放后,变量a不被释放。(三)默认初始化为00例如要把一个字符数组当字符串来用,但又觉得每 次在字符

6、数组末尾加0'太麻烦。如果把字符串定义成静态的,就省去了这个 麻烦,因为那里本来就是0'PS:第一、在修饰变量的时候,static修饰的静态局部变量只执行一次,而且延长了局部变量的生命周期, 直到程序运行结束以后才释放。第二、static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即 便是extern外部声明也不可以。第三、static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0;(四)8 .简述建立一个TCP连接的几个步骤。(东方拓宇科技有限公

7、司)答:tcp连接可以说是“三次握手一、客户端向服务端请求连接服务端的权 限给予连接客户端的权限;二、服务端向客户端发起连接,并给予连接服务端的 权限;三、客户端向服务端连接。PS:(自己理解,三次握手)连接建立阶段:第一次握手:客户端的应用进程主动打开,并向客户端发出请求报文段。第二次握手:服务器应用进程被动打开。若同意客户端的请求,则发回确认报文第三次握手:客户端收到确认报文之后,通知上层应用进程连接已建立,并向服务器发出确认报文, 当服务器收到客户端的确认报文之后,也通知其上层应用进程连接已建立。二、编程题:(编程题没有固定的答案,所以只要功能能实现就可以)1 .请先说明小端序和大端序的

8、区别,并写一个程序判断计算机的字节存储顺序是小端序还 是大端序。答:(一)大端模式:高字节保存在内存的低地址;小端模式:高字节保存在内存的高地址(二)程序:判断计算机的字节存储顺序int main()int a=0x00000001;int b=0x00000000;b=a;if(b=0x10000000)printf("大端序 n");elseprintf("小端序 n");return 0;2 .已知 strcpy 函数的原型是 char *strcpy(char *strDest, const char *strsrc)不调用C/C+的字符串函数,请编写strcpy的实现。(东方拓宇科技有限公司)char *Strcpy(char *dest, const char *src)char *ret = dest;assert(dest != NULL);assert(src != NULL);while (*dest+ = *src+) ;return ret;google”转成“ gole” (华为公司)3 .写一个函数,去掉一个字符串中重复的字符,比如将” 将重复字符设置为0'void RemoveDuplicate(char *str) (int i, j, k, len;len = strlen(s

温馨提示

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

评论

0/150

提交评论