保研试题答案(七秒记忆)_第1页
保研试题答案(七秒记忆)_第2页
保研试题答案(七秒记忆)_第3页
保研试题答案(七秒记忆)_第4页
保研试题答案(七秒记忆)_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

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

文档简介

1、1、 编程题(9道题,每道20分,共180分)1、 编写一个完整的程序,使之能完成以下功能:从键盘中输入若干个整数,用链表储存这些输入的数,并要求存储的顺序与输入的顺序相反。#include<stdio.h>#include<stdlib.h>typedef struct LNodeint data;struct LNode *next;LNode,*LinkList;int main()LinkList L;LNode *s;int x,n;L = (LinkList )malloc(sizeof(LNode);L->next = NULL;scanf(&quo

2、t;%d",&n);while(n-)scanf("%d",&x);s = (struct LNode *)malloc(sizeof(struct LNode);s->data = x;s->next = L->next;L->next = s;while(L->next)printf("%d ",L->next->data);L = L->next;printf("n");return 0;2、 编写一个函数,把整数序列分成两个部分,使得左边部分都不大于右边

3、部分,不需要排序。 ( 考察的是快速排序的部分)#include<stdio.h>int partion(int arr,int n);int main()int a20,n,i;scanf("%d",&n);for(i = 0;i < n;i +)scanf("%d",&ai);partion(a,n); printf("调整后序列为:n");for(i = 0;i < n;i +)printf("%d ",ai);printf("n");/printf

4、("%dn",partion(a,n);return 0;int partion(int arr,int n)int i = 0,j = n-1;int pivot = arr0;while(i < j)while(i < j && arrj > pivot) j-;arri = arrj;while(i < j && arri < pivot) i+;arrj = arri;arri = pivot;printf("首选数字现在是第%d个,是%dnn",i+1,arri);return i;

5、3、 有两个整数数组A和B,它们分别有m、n个整数。并且都是按非递减序列,现将B数组插入A数组中,使得A数组中各元素不大于B数组中各元素,且还是非递减序列。#include<stdio.h>void insert(int A,int B,int m, int n);int main()int a30,b30;int i,m,n;scanf("%d %d",&m,&n);for(i = 0;i < m;i +)scanf("%d",&ai);for(i = 0;i < n;i +)scanf("%d

6、",&bi);insert(a,b,m,n);return 0;void insert(int a,int b,int m, int n)int i,j,k = m-1;int temp = am - 1;for(j=0;bj<ak;j+,k+)for(i=k;ai>bj;i-)ai+1=ai;ai+1=bj;for(i = 0;i<k+1;i +)printf("%d ",ai);printf("n");for(j = 0;j<n;j+)if(bj>temp)printf("%d ",

7、bj);printf("n");4、 两个递增有序整数数列链表La和Lb,将他们合并后,变成一个新的链表,要求该链表递减排序。(结点node由整型data和节点指针next构成)#include<stdio.h>#include<stdlib.h>typedef struct LNodeint data;struct LNode *next;LNode,*LinkList;LinkList CreateList();LinkList MergeList(LinkList La,LinkList Lb);int main()LinkList La;Li

8、nkList Lb;La = (LinkList)malloc(sizeof(LNode);Lb = (LinkList)malloc(sizeof(LNode);La = CreateList();Lb = CreateList();LinkList L = MergeList(La,Lb);while(L->next) printf("%d ",L->next->data); L = L->next; return 0;LinkList CreateList()/创建链表,头插法LinkList L;LNode *s;int n; L = (Li

9、nkList)malloc(sizeof(LNode);L->next = NULL;while(scanf("%d",&n)!=EOF)s = (struct LNode *)malloc(sizeof(struct LNode);s->data = n;s->next = L->next;L->next = s;return L;LinkList MergeList(LinkList La,LinkList Lb)/头插法LNode *r,*pa = La->next,*pb = Lb->next;La->next

10、 = NULL;while(pa && pb)if(pa->data <= pb->data)r = pa->next;pa->next = La->next;La->next = pa;pa = r;elser = pb->next;pb->next = La->next;La->next = pb;pb = r;if(pa)pb = pa;while(pb)r = pb->next;pb->next = La->next;La->next = pb;pb = r;free(Lb);re

11、turn La; 5、编写一个函数,删除链表中的最小值。(结点node由整型data和节点指针next构成)#include<stdio.h>#include<stdlib.h>typedef struct LNodeint data;struct LNode *next;LNode,*LinkList;LinkList CreateList();LinkList DeleteMin(LinkList L);int main()LinkList L,Head;L = (LinkList)malloc(sizeof(LNode);L = CreateList();Head

12、 = DeleteMin(L);while(Head->next) printf("%d ",Head->next->data); Head = Head->next; return 0;LinkList CreateList()LinkList L;LNode *s;int n; L = (LinkList)malloc(sizeof(LNode);L->next = NULL;while(scanf("%d",&n)!=EOF)s = (struct LNode *)malloc(sizeof(struct LN

13、ode);s->data = n;s->next = L->next;L->next = s;return L;LinkList DeleteMin(LinkList L)LNode *pre = L,*p = pre->next;LNode *minpre = pre,*minp = p;while(p)if(p->data < minp->data)minp = p;minpre = pre;pre = p;p = p->next;minpre->next = minp->next;free(minp);return L;6

14、、 编写函数判断小括号是否匹配。#include<stdio.h>#include<string.h>int main()char a30,b30;int i,j = 0,flag = 0;scanf("%s",a);int n = strlen(a);if(a0 = ')' && n%2 != 0)printf("NO!n");elsefor(i = 0;i < n;i +)if(ai = '(')bj+ = ai;if(ai = ')')j-;if(j=0

15、&& i = n-1)flag = 1;if(flag = 1)printf("YES!n");elseprintf("NO!n");return 0;7、 对多个字符串进行字典排序#include<stdio.h>#include<string.h>void Sort(char *arr,int n);int main()char *str100,p100100;int i,n;scanf("%d",&n);for(i = 0;i < n;i +)scanf("%s&q

16、uot;,pi);stri = pi;Sort(str,n);for(i = 0;i < n;i +)puts(stri);return 0;void Sort(char *arr,int n)int i,j;char *temp;for(i = 1;i < n;i +)for(j = 0;j < n-i;j +)if(strcmp(arrj,arrj+1)>0)temp=arrj;arrj=arrj+1;arrj+1=temp;8、 编写一个函数,使之能完成以下功能:利用递归方法找出一个数组中的最大值和最小值,要求递归调用函数的格式如下:MinMaxValue(arr

17、,n,&max,&min),其中arr是给定的数组,n是数组的个数,max、min分别是最大值和最小值。#include<stdio.h>void MinMaxValue(int arr,int n,int *max,int *min);int main()int a100,n,i;int Max,Min;scanf("%d",&n);for(i=0;i<n;i+)scanf("%d",&ai);MinMaxValue(a,n,&Max,&Min);printf("Max = %

18、dn",Max);printf("Min = %dn",Min);return 0;void MinMaxValue(int arr,int n,int *max,int *min)if(n=1)*max = arr0;*min = arr0;elseint Max = arr0;int Min = arr0;MinMaxValue(arr+1,n-1,max,min);if(*max<Max) *max = Max;if(*min>Min) *min = Min;9、 有两字符数组s和t,求t在s中出现第一次的开始位置,如果没有则输出“No”,有则输

19、出开始位置。法一#include<stdio.h>#include<string.h>int start(char s,char t);int main()char a80,b80;scanf("%s",a);scanf("%s",b);int k = start(a,b);if(k = -1)printf("No!n");elseprintf("%dn",k+1);return 0;int start(char s,char t)int m = strlen(s),i;char *p,*q

20、;for(i = 0;i < m;i +)p = s + i;q = t;while(*p && *q && *p = *q)*p +;*q +;if(*p - *q = *p)return i;return -1;法二:#include<stdio.h>#include<string.h>int start(char s,char t);int main()char a80,b80;scanf("%s",a);scanf("%s",b);int k = start(a,b);if(k = -

21、1)printf("No!n");elseprintf("%dn",k+1);return 0;int start(char s,char t)/*int m = strlen(s),n = strlen(t),i,j=0,k;for(i = 0;i < m;i +) k = 0;k = k+i;while(k<m && j<n) if(sk = tj) k+;j+; else j = 0; continue; if(j = n-1) return i; break; */int m = strlen(s);int n = strlen(t);int i=0,j=0;while(i<

温馨提示

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

评论

0/150

提交评论