华科计算机考研复试历年上机题汇总
时间:2025-04-04
时间:2025-04-04
华科历年上机题汇总(欢迎补全) 代码都很多是我自己写的,不一定正确啊!错了可不负责任的,呵呵 ==》10年保送生上机试题
1、不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
#include<stdio.h>
#include<stdlib.h>
int main(){
char s1[200],s2[100];
int i,len1,len2;
scanf("%s %s",s1,s2);
for(i=0;i<200;i++){
if(s1[i]=='\0'){
len1=i;
break;
}
}
for(i=0;i<100;i++){
if(s2[i]=='\0'){
len2=i;
break;
}
}
for(i=len1;i<len1+len2;i++){
s1[i]=s2[i-len1];
}
printf("%s\n",s1);
system("pause");
}
2、输入一串数,要求建平衡二叉排序树,然后先序遍历。
3.、有4个小问,是超长整数的存储、计算、输出。要把超长整数存在一个单向循环链表中,是每四位一个节点。
注:我是用单链表写的!感觉单循环链表没有什么用处么~~~ #include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXLEN 100
typedef struct node{
int data; struct node *next;
}LNode,*LinkList;
int changeString(char s[],int len){//把字符串长度变成4的整数倍;
}
LinkList createList(char *s,int len){//创建单链表;
int i,temp,add_len; LinkList L,p,start; if(len<=0){ } return NULL; int i,temp; char ss[MAXLEN]; if(len%4!=0){ } return temp; temp=4-len%4;//需要在前面添加的0的个数; for(i=0;i<len;i++){ } for(i=0;i<temp;i++){ } for(i=temp;i<temp+len;i++){ } s[i]=ss[i-temp]; s[i]='0'; ss[i]=s[i];
len+=add_len; i=0; temp=0; while(i<4&&i<len){//给头结点赋值; } L=(LinkList)malloc(sizeof(LNode));//头结点; L->data=temp; L->next=NULL; start=L; temp=0; while(i<len){//继续创建单链表; if((i+1)%4==1){//需新建一个结点; } temp=temp*10+s[i]-'0'; if((i+1)%4==0||i==len-1){//一个结点结束; p->data=temp; p->next=NULL; start->next=p;//插入结点; start=p; temp=0;//重新计数; p=(LinkList)malloc(sizeof(LNode)); temp=temp*10+s[i]-'0'; i++;
}
} i++; start->next=NULL; return L;
LinkList reverse(LinkList L){//逆转单循环链表;
} LinkList p,q,r; if(L!=NULL){ } return NULL; p=L->next; L->next=NULL; while(p!=NULL){ } return L; q=p; p=p->next; q->next=L; L=q; //printf("**%d\n",L->data);
void display(LinkList L){//打印输出单链表;
}
LinkList add_LNumber(LinkList L1,LinkList L2){//2大数相加,单链表实现;
LinkList L,p,q,head,r; int c;//进位; int temp; L=(LinkList)malloc(sizeof(LNode)); head=(LinkList)malloc(sizeof(LNode)); head->next=NULL; L=head; p=L1; q=L2; c=0; while(p!=NULL&&q!=NULL){ LinkList p; printf("%d ",L->data); p=L->next; while(p!=NULL){ } printf("\n"); printf("%d ",p->data); p=p->next;
} temp=p->data+q->data+c; r->data=temp%10000; //printf("***%d\n",r->data); r->next=NULL; c=temp/10000; head->next=r; head=r; p=p->next; q=q->next; while(p!=NULL){//L1剩余部分非空; } while(q!=NULL){//L2剩余部分非空; r=(LinkList)malloc(sizeof(LNode)); temp=q->data+c; r=(LinkList)malloc(sizeof(LNode)); temp=p->data+c; r->data=temp%10000; r->next=NULL; c=temp/10000; head->next=r; head=r; p=p->next;
}
} r->next=NULL; c=temp/10000; head->next=r; head=r; q=q->next; if(c!=0){//还有进位; } return L->next; r=(LinkList)malloc(sizeof(LNode)); r->data=c; r->next=NULL; head->next=r;
int main(){
char s1[MAXLEN],s2[MAXLEN]; int len1,len2,add_len,i; LinkList L1,L2,L; L1=(LinkList)malloc(sizeof(LNode)); L2=(LinkList)malloc(sizeof(LNode)); printf("请输入第一个大数:\n"); scanf("%s",s1);
} L1=createList(s1,len1); printf("请输入第二个大数:\n"); scanf("%s",s2); len2=strlen(s2); L2=createList(s2,len2); L1=reverse(L1); L2=reverse(L2); //display(L1); //display(L2); L=add_LNumber(L1,L2); //display(L); L=reverse(L); display(L);
==》09年
09华中科技大学复试有关题目
嵌入式方向笔试是数据库和算法概论
数据库考了查询语言,死锁,等等
算法概论:
1题:好像是螺丝和螺母问题,每个螺丝对应一个螺母,大概有100对吧,找出相应对,最后计算时空复杂度。
还有,关于排列树,好像还有个回溯法。
前面几道简答题
上机题目:
环境:TC,VC++
1.输入一串数,然后,建立链表,排序输出。
2.计算26个字母的输入次数,好像不区分大小写。
3.用一维数组存储学号和成绩,然后,按成绩排序输出。
==》09年系统结构上机试题
09年系统结构上机题1.输入四个数,分别创建四个链表A,B,C,D. 打印四个链表 2.A按升序排列,D按降序排列
3.把B中第一个数插入A中,保持A的升序排列,把C中第一个数插入D中,保持D的降序排列
4.把链表A中每个数的个位数打印出来
5.合并链表A\D,保持升序排列。
华中科技大学复试机试题目 2008年
一.
1、狼过河问题(运用到回溯)
2、统计文件中单词数目
3、N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(递归)
4、链表操作
二.
第一个是一个上楼梯的种数的统计,本来是一 …… 此处隐藏:5426字,全部文档内容请下载后查看。喜欢就下载吧 ……
上一篇:绝望主妇第一季第八集台词
下一篇:寒假前国旗下讲话