2002-吉林大学2002年考研专业课试卷c语言程序设计答案.doc_第1页
2002-吉林大学2002年考研专业课试卷c语言程序设计答案.doc_第2页
2002-吉林大学2002年考研专业课试卷c语言程序设计答案.doc_第3页
2002-吉林大学2002年考研专业课试卷c语言程序设计答案.doc_第4页
2002-吉林大学2002年考研专业课试卷c语言程序设计答案.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

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

文档简介

1/*=*/*函数名称:2002_1.c */ /*程序目的:递归地将一个数插入一个准递增序列,且插入完毕后仍然保持准递增特性 */*Writen by Apechn ,Soft Lab of JLU */*=*/#include struct node /定义链表结点结构,在最前面给出int num;node* next;node* insert(node* head,int n)/题目要求的函数node *p;if (n num) /若n已经到了准递增序列的合适的位置,递归出口p = (node*)malloc(sizeof(node);/新建一个节点用来存放np-num = n;p-next = head;head = p;elseinsert(head-next,n);/否则递归插入return head;2002-1/*=*/*函数名称:2002_2.c */ /*函数目的:求给定序列的最长递增子序列的长度 */*Writen by Apechn,Soft Lab of JLU */*=*/#include const int N = 8;int MaxLeng(int a)int i,len = 1,lmax = 1;for (i = 1;i = ai-1) /如果满足递增子序列的定义,len增一len +;contnue;if (lamx len)lmax = len;len = 1;return lmax;2002-3/*=*/*函数名称:2004_3.c */ /*函数目的:用链表表示集合的相加 */*Writen by Apechn ,Soft Lab of JLU */*=*/#include struct node /定义链表结点结构,在最前面给出int num;node* next;int ismember(int a,node* head)/子函数,判断整数a是不是在以head为头结点的链表中int sign = 0; /如果在,返回1,否则返回0node* p = head;if (p = NULL) /注意集合为空集的情况return sign;while (p != NULL)if (p-num = a)sign = 1;break;p = p-next;return sign;node* SetAdd(node* P,node* Q)/题目要求的函数int n;node *r,*tail,*point1,*poing2;if (P = NULL)return Q;if (Q = NULL)return P;r = P;while (r != NULL) /tail用来记录P链表的尾部tail = r;r = r-next;r = Q;while (ismember(r-num,P)/找到Q中第一个不在P中的元素的位置,记为rr = r-next;point1 = r;poing2 = r-next;while (point2 != NULL) /从r开始遍历链表Qn = point2-num;if(ismember(n,P)point1-next = point2-next;/如果遍历到的元素是P中的元素,那么把它删掉elsepoint1 = point2;/否则继续point2 = point2-next;tail-next = r; /把剩余的元素放到P中return P;2002_4/*=*/*函数名称:2004_4.c */ /*函数目的:用链表表示八进制数以及它们的和 */*Writen by Apechn ,Soft Lab of JLU */*=*/#include struct nodeint num;node* next;node* inverse(node* head) /子函数,逆转链表的所有指针,把原来的尾结点变成头结点node *f,*g,*h;if (head != NULL)f = head;g = NULL;while (f-next != NULL)h = f;f = f-next;h-next = g;g = h;f-next = g;head = f;return head;node* Add(node* P,node* Q) /题目要求的函数node *p,*q,*r,*head = NULL;int carry,temp;if (P = NULL)return Q;if (Q = NULL)return P;p = inverse(P); /逆转两个链表的指针q = inverse(Q);carry = 0; /进位设为0while (p != NULL & q != NULL)/逐为相加两个数,知道其中一个加完为止temp = p-num + q-num +carry;r = new node;r-num = temp % 8;r-next = head;head = r;carry = temp/8;p = p-next;q = q-next;if (q = NULL) /修改一下指针,便于统一计算q = p;while (q != NULL) /把剩余的数加完temp = q-num + carry;r = new node;r-num = temp % 8;r-next = head;head = r;carry = temp/8;q = q-next;return head;2002_5/*=*/*函数名称:2002_5.c */ /*程序目的:将一个函数改写为递归函数 */*Writen by Apechn ,Soft Lab of JLU */*=*/#include #include int m,n;doublef1(double x,double y)L:printf(This is S1 %d times /n,m);m+;printf(This is S2 %d times /n,n);n+;x = x + 1.5;y = y + x;if (y = 100)goto L;return sin(y);double f3(double x,double y)/递归函数printf(

温馨提示

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

评论

0/150

提交评论