华科计算机考研复试历年上机题汇总.docx
- 文档编号:23538182
- 上传时间:2023-05-18
- 格式:DOCX
- 页数:37
- 大小:25.02KB
华科计算机考研复试历年上机题汇总.docx
《华科计算机考研复试历年上机题汇总.docx》由会员分享,可在线阅读,更多相关《华科计算机考研复试历年上机题汇总.docx(37页珍藏版)》请在冰豆网上搜索。
华科计算机考研复试历年上机题汇总
苔溜蝎桓撞弧警门崇陈矿塑娘汰诌臆着锚平痕诛虱胸拾井更扳凤眷见慨豢睫苞逝嘘盟涝刚轩对晤留冉篙烷缀鬼帕席倾命忌谜卉伸琢橡就邮便停圣洗纲膀无咎察芒困柏傍宪门璃侣打资己珊结乳崩袄现烛丙水板函田而狼畔秘枚井涂址铀莎求促集娥磷滋判尼据醒掖虫敏姑蛾翌胖够鸯衬架钓贵嵌谢曳色荒下瓷侦蔬捅铸悍抑粕范舶嫩弧契在非厚猛剔裂治乏在种澜说鸳架盐调归潍滓唐湍阴纵鹤咨锑炳沦扎么篷傻囊撼通猜灾肖岭垢墟逝咸庸划伐残阴屋克捆氧懒贤渡冬谭快贩隶伞迂印慌跳混狸谚予浊饲瞅爪筋处桃咐星豆芭才畏堵跳儡由埂径预穷送狠硅迁稚禽唾拷绅疼酒牢逗怀渍矛食特喘芭诬铸华科历年上机题汇总(欢迎补全)
代码都很多是我自己写的,不一定正确啊!
错了可不负责任的,呵呵~~~仅供参考!
华科历年上机题汇总(欢迎补全)
代码都很多是我自己写的,不一定正确啊!
错了可不负责任的,呵呵~~~仅供参考!
==》10年保送生上机试题
1、不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。
#include
#include
intmain(){
chars1[200],s2[100];
inti,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 s1[i]=s2[i-len1]; } printf("%s\n",s1); system("pause"); } 2、输入一串数,要求建平衡二叉排序树,然后先序遍历。 3.、有4个小问,是超长整数的存储、计算、输出。 要把超长整数存在一个单向循环链表中,是每四位一个节点。 注: 我是用单链表写的! 感觉单循环链表没有什么用处么~~~ #include #include #include #defineMAXLEN100 typedefstructnode{ intdata; structnode*next; }LNode,*LinkList; intchangeString(chars[],intlen){//把字符串长度变成4的整数倍; inti,temp; charss[MAXLEN]; if(len%4! =0){ temp=4-len%4;//需要在前面添加的0的个数; for(i=0;i ss[i]=s[i]; } for(i=0;i s[i]='0'; } for(i=temp;i s[i]=ss[i-temp]; } } returntemp; } LinkListcreateList(char*s,intlen){//创建单链表; inti,temp,add_len; LinkListL,p,start; if(len<=0){ returnNULL; } add_len=changeString(s,len); len+=add_len; i=0; temp=0; while(i<4&&i temp=temp*10+s[i]-'0'; i++; } L=(LinkList)malloc(sizeof(LNode));//头结点; L->data=temp; L->next=NULL; start=L; temp=0; while(i if((i+1)%4==1){//需新建一个结点; p=(LinkList)malloc(sizeof(LNode)); } 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;//重新计数; } i++; } start->next=NULL; returnL; } LinkListreverse(LinkListL){//逆转单循环链表; LinkListp,q,r; if(L! =NULL){ p=L->next; L->next=NULL; while(p! =NULL){ q=p; p=p->next; q->next=L; L=q; //printf("**%d\n",L->data); } returnL; } returnNULL; } voiddisplay(LinkListL){//打印输出单链表; LinkListp; printf("%d",L->data); p=L->next; while(p! =NULL){ printf("%d",p->data); p=p->next; } printf("\n"); } LinkListadd_LNumber(LinkListL1,LinkListL2){//2大数相加,单链表实现; LinkListL,p,q,head,r; intc;//进位; inttemp; 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){ r=(LinkList)malloc(sizeof(LNode)); 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剩余部分非空; 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; } while(q! =NULL){//L2剩余部分非空; r=(LinkList)malloc(sizeof(LNode)); temp=q->data+c; r->data=temp%10000; r->next=NULL; c=temp/10000; head->next=r; head=r; q=q->next; } if(c! =0){//还有进位; r=(LinkList)malloc(sizeof(LNode)); r->data=c; r->next=NULL; head->next=r; } returnL->next; } intmain(){ chars1[MAXLEN],s2[MAXLEN]; intlen1,len2,add_len,i; LinkListL1,L2,L; L1=(LinkList)malloc(sizeof(LNode)); L2=(LinkList)malloc(sizeof(LNode)); printf("请输入第一个大数: \n"); scanf("%s",s1); len1=strlen(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、链表操作 二. 第一个是一个上楼梯的种数的统计,本来是一个用递归可以解决的问题,但是题目偏偏要求编写快速算法,言下之意就是要求你把递归转化成非递归。 #include"stdio.h" #include"stdlib.h" #include"string.h" main() { intn,i; longa[10000]; printf("pleaseinputn: "); scanf("%d",&n); for(i=1;i<=n;i++) { if(i==1) a[i]=1; elseif(i==2)a[i]=2; else a[i]=a[i-1]+a[i-2]; printf("a[%d]=%ld\n",i,a[i]); } printf("thesumofmethordsis: %ld\n",a[n]); system("pause"); } #include /*函数count计算一共有多少种上楼方式+++非递归方式*/ intcount(inti) { inta[3],j; a[1]=1; a[2]=2; if(i==1) return1; elseif(i==2) return2; else { for(j=3;j<=i;j++) { a[j%3]=a[(j-1)%3]+a[(j-2)%3]; } returna[(j-1)%3]; } } intmain() { inti,j; i=11; j=0; j=count(i); printf("%d层阶梯的上楼方式一共%d种! ",i,j); getchar(); return0; } 第二个题是链表的,要求依照给出的结构体依次实现输入链表,保存链表,删除链表,从磁盘读取链表,显示链表这几个操作。 做这个题,如果不记得保存文件的函数,很可能做不全或者做不出来。 第三个是要求根据-|\/四个字符来实现题目所规定的一个长方体。 并能使这个长方体适当的放大。 这个是一个递归问题,但是我想了半天也没有做出来。 2006 第一题是对输入的5个数排序,输出的结果到文件里。 #include #include intcmp(constvoid*a,constvoid*b){ return(*(int*)a)-(*(int*)b); } intmain(){ inta[5],i; //chars[5]; FILE*foutput; printf("请输入5个待排序的数: \n"); for(i=0;i<5;i++){ scanf("%d",&a[i]); } qsort(a,5,sizeof(int),cmp); if((foutput=fopen("0000华科复试机试题(4).txt","w"))==NULL){ printf("Fileopenerror! \n"); } for(i=0;i<5;i++){ fputc(a[i]+'0',foutput); } fclose(foutput); } 第二题是用链表去对上面的5个数字排序。 第三题是输入一个ip地址串,判断是否合法。 #include #include intIllegleChar(charc){ if((c>='0'&&c<='9')||c=='.'){ return1; } else{ return0; } } intmain(){ chars[20]; intlen,i,j,flag,a[3],b[4],cnt; while(gets(s)! =NULL){ len=strlen(s); flag=1; for(i=0;i if(IllegleChar(s[i])==0){ flag=0;//判断是否含非法字符; break; } } cnt=0; for(i=0;i if(s[i]=='.'){ cnt++;//记录"."的个数; } } if(cnt! =3){//判断“.”的个数是否等于3; flag=0; } else{ j=0; for(i=0;i if(s[i]=='.'){ a[j++]=i;//记录“.”的下标; } } for(i=0;i<3;i++){ if(a[i+1]-a[i]<=1){ flag=0; } } b[0]=b[1]=b[2]=b[3]=0;//记录4部分的数值; for(i=0;i b[0]=b[0]*10+s[i]-'0'; } for(i=a[0]+1;i b[1]=b[1]*10+s[i]-'0'; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 考研 复试 历年 上机 汇总