电大C语言程序设计笔试答案讲解.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
改错题 p=malloc(sizeof(int)*10); q=malloc(sizeof(int)*20); p=q; free(p); free(q); Free(q) 错了,因为p=q后,就指向同一块地址了。 内存泄露(p分配了空间没释放) ==============我的 一:由于malloc函数返回值为void *,所以还是应该强制转换为(int *),虽然我在运行时没有错,但一般都要指定指针类型。 二:由于p=q,两个指针指向同一个地址,free(p)之后,则该内存空间被释放,则q此时就没有具体指向一个地址,free(q)就会出错。 一般我们常说的内存泄露是指堆内存泄露,堆内存是指程序从对中分配的,大小任意的(内存块的大小可以再程序运行期确定),使用完后必须先释放内存。 和去年一样 void swap(char *a,char *b) {char *temp; *temp=*a;*a=*b;*b=*temp;} 函数类型大小写错误。 2. 交换形参指针地址不能修改实参的值。 正确修改法:见下 (解释)实参是str1和str2的地址 ,函数里改变了*p,*q的值,也就是str1和str2中存放的字符串的地址做了改变。所以str1里存放的str2所指字符串的地址 for(num=N;arr[num]!=item;num--); printf(%d,num); 问异常情况 结果可能是输出一个负值,因为item是个变量,分配了存储空间, arr[-2]也是可以输出的,因为arr只是个地址,经过测试会找到item,printf他的地址 =========我的 首先如果item在数组中,则不会出错,可以输出所在的位置。如果不在,则num最后会变为负值,由于C语言没有自动对数组进行下标检查,则会产生数组下标越界,而且会继续运行,出现死循环。如果编译器检查,则会产生数组下标越界出错。 简答题 if(b) s1 else s2; 请问是什么结构,并用伪代码写出来(注明条件跳转和强制跳转) 选择结构。 Begin If b!=0 条件跳转 Do S1; 否则 Do S2; 局部变量,静态局部变量,静态全局变量的存储位置 局部变量: 栈区 局部静态变量:静态区 全局变量: 静态区的常量区 全局静态变量:静态区 网上的资料,科普下: 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后由系统释放 4、文字常量区 —常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。 1、栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。 2、堆,就是那些由new分配的内存块,他们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 3、自由存储区,就是那些由malloc等分配的内存块,他和堆是十分相似的,不过它是用free来结束自己的生命的。 4、全局/静态存储区,全局变量和静态变量被分配到同一块内存中,在以前的c语言中,全局变量又分为初始化的和未初始化的,在c++里面没有这个区分了,他们共同占用同一块内存区。 5、常量存储区,这是一块比较特殊的存储区,他们里面存放的是常量,不允许修改。 求链表最大的数,并插入链表尾部(代码参照填空题第一题选择排序法,半分钟能鲁完) 复习下冒泡排序 ======我的(不要此法,不太符合题意,正确见法二) #includestdio.h 2 #includestdlib.h 3 4 typedef struct node{ 5 6 int data; 7 struct node *next; 8 }LNode,*PLNode; 9 10 11 void MoveMax(LNode *L) 12 { 13 LNode *pa,*pb,*pre; //==pre指向pb的前一个节点,最后指向最后一个节点 14 in

文档评论(0)

boss + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档