




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
华科历年上机题汇总(欢迎补全)代码都很多是我自己写的,不一定正确啊!错了可不负责任的,呵呵仅供参考!=10年保送生上机试题1、不借用任何字符串库函数实现无冗余地接受两个字符串,然后把它们无冗余的连接起来。 #include#includeint main() char s1200,s2100; int i,len1,len2; scanf(%s %s,s1,s2); for(i=0;i200;i+) if(s1i=0) len1=i; break; for(i=0;i100;i+) if(s2i=0) len2=i; break; for(i=len1;ilen1+len2;i+) s1i=s2i-len1; printf(%sn,s1); system(pause); 2、输入一串数,要求建平衡二叉排序树,然后先序遍历。 3.、有4个小问,是超长整数的存储、计算、输出。要把超长整数存在一个单向循环链表中,是每四位一个节点。注:我是用单链表写的!感觉单循环链表没有什么用处么#include#include#include#define MAXLEN 100typedef struct nodeint data;struct node *next;LNode,*LinkList;int changeString(char s,int len)/把字符串长度变成4的整数倍;int i,temp;char ssMAXLEN;if(len%4!=0)temp=4-len%4;/需要在前面添加的0的个数;for(i=0;ilen;i+)ssi=si;for(i=0;itemp;i+)si=0;for(i=temp;itemp+len;i+)si=ssi-temp;return temp;LinkList createList(char *s,int len)/创建单链表;int i,temp,add_len;LinkList L,p,start;if(len=0)return NULL;add_len=changeString(s,len);len+=add_len;i=0;temp=0;while(i4&idata=temp;L-next=NULL;start=L;temp=0;while(idata=temp;p-next=NULL;start-next=p;/插入结点;start=p;temp=0;/重新计数;i+;start-next=NULL;return L;LinkList reverse(LinkList L)/逆转单循环链表;LinkList p,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(*%dn,L-data);return L;return NULL;void display(LinkList L)/打印输出单链表;LinkList p;printf(%d ,L-data);p=L-next;while(p!=NULL)printf(%d ,p-data);p=p-next;printf(n);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)r=(LinkList)malloc(sizeof(LNode);temp=p-data+q-data+c;r-data=temp%10000;/printf(*%dn,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;return L-next;int main()char s1MAXLEN,s2MAXLEN;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);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年系统结构上机题.输入四个数,分别创建四个链表A,B,C,D. 打印四个链表.A按升序排列,D按降序排列.把B中第一个数插入A中,保持A的升序排列,把C中第一个数插入D中,保持D的降序排列.把链表A中每个数的个位数打印出来.合并链表AD,保持升序排列。 华中科技大学复试机试题目2008年一1、狼过河问题(运用到回溯)2、统计文件中单词数目3、N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(递归)4、链表操作二第一个是一个上楼梯的种数的统计,本来是一个用递归可以解决的问题,但是题目偏偏要求编写快速算法,言下之意就是要求你把递归转化成非递归。#includestdio.h#includestdlib.h#includestring.hmain()int n,i;long a10000;printf(please input n :);scanf(%d,&n);for(i=1;i=n;i+)if(i=1)ai=1;else if(i=2)ai=2;elseai=ai-1+ai-2;printf(a%d=%ldn,i,ai);printf(the sum of methords is:%ldn,an);system(pause);#include /*函数count计算一共有多少种上楼方式+非递归方式*/int count(int i) int a3,j; a1=1; a2=2; if(i=1) return 1; else if(i=2) return 2; else for(j=3; j=i; j+) aj%3 = a(j-1)%3 + a(j-2)%3; return a(j-1)%3; int main() int i,j; i=11; j=0; j=count(i); printf(%d层阶梯的上楼方式一共%d种!,i,j); getchar(); return 0; 第二个题是链表的,要求依照给出的结构体依次实现输入链表,保存链表,删除链表,从磁盘读取链表,显示链表这几个操作。做这个题,如果不记得保存文件的函数,很可能做不全或者做不出来。 第三个是要求根据 - | / 四个字符来实现题目所规定的一个长方体。并能使这个长方体适当的放大。这个是一个递归问题,但是我想了半天也没有做出来。2006第一题是 对输入的5个数排序,输出的结果到文件里。#include#includeint cmp(const void *a,const void *b)return (*(int *)a)-(*(int *)b);int main()int a5,i;/char s5;FILE *foutput;printf(请输入5个待排序的数:n);for(i=0;i5;i+)scanf(%d,&ai);qsort(a,5,sizeof(int),cmp);if(foutput=fopen(0000华科复试机试题(4).txt,w)=NULL)printf(File open error!n);for(i=0;i5;i+)fputc(ai+0,foutput);fclose(foutput);第二题是 用链表去对上面的5个数字排序。第三题是 输入一个ip地址串,判断是否合法。#include #include int IllegleChar(char c) if(c=0&c=9)|c=.) return 1; else return 0; int main() char s20; int len,i,j,flag,a3,b4,cnt; while(gets(s)!=NULL) len=strlen(s); flag=1; for(i=0;ilen;i+) if(IllegleChar(si)=0) flag=0;/判断是否含非法字符; break; cnt=0; for(i=0;ilen;i+) if(si=.) cnt+;/记录.的个数; if(cnt!=3)/判断“.”的个数是否等于3; flag=0; else j=0; for(i=0;ilen;i+) if(si=.) aj+=i;/记录“.”的下标; for(i=0;i3;i+) if(ai+1-ai=1) flag=0; b0=b1=b2=b3=0;/记录4部分的数值; for(i=0;ia0;i+) b0=b0*10+si-0; for(i=a0+1;ia1;i+) b1=b1*10+si-0; for(i=a1+1;ia2;i+) b2=b2*10+si-0; for(i=a2+1;ilen;i+) b3=b3*10+si-0; for(i=0;i4;i+) /printf(%dn,bi); if(bi255)/判断每一部分数值是否在0到255之间。 flag=0; if(flag=1) printf(YESn); else printf(NOn); 2005第一题:对给定的一个字符串,找出有重复的字符,并给出其位置,如:输入:abcaaAB12ab12输出:a,1;a,4;a,5;a,10 b,2;b,11 1,8;1,12 2,9;2,13参考代码:#include#include#includeint main() char s1000; int len,i,j,k,flag,cnt,a1000,temp; while(gets(s)!=NULL) len=strlen(s); for(i=0;ilen;i+) flag=0;/标记是否出现重复。 cnt=0;/记录重复出现次数。 temp=0;/记录字符是否在前已经出现过。 for(k=0;ki-1;k+) if(sk=si) temp=1; for(j=i+1;jlen;j+) if(sj=si&temp=0) flag=1; acnt+=j;/记录重复出现的下标。 if(flag=1) printf(%c,%d;,si,i+1); for(j=0;jcnt;j+) printf(%c,%d;,saj,aj+1); printf(n); 第二题:输入一个四行五列的矩阵,找出每列最大的两个数,如:输入: 1 2 4 9 8 -1 4 9 8 8 12 9 8 7 0 7 8 9 7 0输出:12 9 9 8 9 7 8 9 7 8#include#includeint cmp(const void *a,const void *b)/qsort的比较函数;return (*(int *)a)-(*(int *)b);int main()int a45,i,j,b54;for(i=0;i4;i+)for(j=0;j5;j+)scanf(%d,&aij);for(i=0;i5;i+)for(j=0;j4;j+)bij=aji;/逆置数组a;for(i=0;i5;i+)qsort(bi,4,sizeof(int),cmp);printf(%d %dn,bi2,bi3);第三题:输入一个字符串,建立一个二叉排序树,并中序遍历输出;#include#include#includetypedef struct node/二叉树结点数据结构定义;char value;struct node *lchild,*rchild;BTNode,*BTree;void insertNode(BTree &t,char c)/向二叉排序树中插入节点;BTree p,q,temp;p=(BTree)malloc(sizeof(BTNode);p-value=c;p-lchild=NULL;/貌似没有这2行不行,纠结了半天啊! p-rchild=NULL;if(t=NULL)t=p;elseq=t;while(q!=NULL)temp=q;if(cvalue)q=q-lchild;elseq=q-rchild;if(cvalue)temp-lchild=p;elsetemp-rchild=p; void inOrderTra(BTree t)/中序遍历二叉排序树;if(t!=NULL)inOrderTra(t-lchild);printf(%c ,t-value);inOrderTra(t-rchild);int main()char s1000;int len,i;while(gets(s)!=NULL) len=strlen(s); BTree t; t=NULL; for(i=0;ilen;i+) insertNode(t,si); inOrderTra(t); printf(n); 2000年1. 输入n,求y1=1!+3!+.m!(m是小于等于n的最大奇数) y2=2!+4!+.p!(p是小于等于n的最大偶数)#includeint main()_int64 a100,y1,y2;/存放阶乘;int i,n,p,m;while(scanf(%d,&n)!=EOF)if(n%2=0)m=n-1;p=n;elsep=n-1;m=n;a1=1;for(i=2;i100;i+)ai=ai-1*i;y1=0;y2=0;/printf(m=%d,p=%dn,m,p);i=1;while(i=m)y1+=ai;i+=2;i=2;while(i=p)y2+=ai;i+=2;printf(y1=%I64d,y2=%I64dn,y1,y2);2。输入一个55的矩阵,判断是否对称#includeint main()int a66,i,j,flag;flag=1;/标记矩阵是否对称;for(i=1;i=5;i+)for(j=1;j=5;j+)scanf(%d,&aij);for(i=2;i=5;i+)for(j=1;ji;j+)if(aij!=aji)flag=0;if(flag=1)printf(YESn);elseprintf(NOn);3。建立一个升序链表并遍历#include#includetypedef struct node/链表结点数据结构定义;int data;struct node *next;LNode,*LinkList;void insert_node(LinkList &L,int a)/向单链表中插入结点,并保持升序;LinkList t,temp,p;t=(LinkList)malloc(sizeof(LNode);/新建结点;t-data=a;t-next=NULL;if(L=NULL)/是第一个结点;L=t;elsetemp=L;p=L;if(adata)/结点插在表头;t-next=temp;L=t;elsewhile(temp!=NULL&temp-datadatanext;t-next=p-next;/插入结点;p-next=t;/printf(*n);void print(LinkList L)/遍历链表;LinkList temp;if(L!=NULL)temp=L;while(temp!=NULL)printf(%d ,temp-data);temp=temp-next;printf(n);int main()int a;LinkList L;L=NULL;printf(输入链表各结点值,以10000结束!n);while(scanf(%d,&a)!=EOF)if(a=10000)break;insert_node(L,a);print(L);2002年1、 编一个程序,读入用户输入的,以“.”结尾的一行文字,统计一共有多少个单词,并分别输出每个单词含有多少个字符。(凡是以一个或多个空格隔开的部分就为一个单词)2、 #include3、 #include4、 int main()5、 char s1000;6、 int len,a1000=0,i,cnt;7、 gets(s);8、 len=strlen(s);9、 printf(len=%dn,len);10、 cnt=0;/记录单词数;11、 i=0;12、 while(ilen-1&si= )/去掉开头的空格;13、 i+;14、 15、 while(ilen-1)16、 if(si!= )/遇到字符;17、 acnt+=1;18、 i+;19、 20、 else/遇到空格;21、 cnt+;/下一个单词;22、 while(ilen-1&si= )/去掉中间的连续空格;23、 i+;24、 25、 26、 27、 printf(单词个数:%d.n,cnt+1);28、 printf(每个单词所含有的字符数是:n);29、 for(i=0;icnt+1;i+)30、 printf(%d ,ai);31、 32、 2、守形数是这样一种整数,它的平方的低位部分等于它本身。比如25的平方是625,低位部分是25,因此25是一个守形数。编一个程序,找出2-100之间所有的守形数。#include #include int shouxingshu(int n) int num,count,temp,a; a=n; num=n*n;/n的平方 ; count=0;/记录n的位数; while(n0) count+; n=n/10; temp=1; while(count0) temp*=10; count-; if(num%temp=a) return 1; else return 0; int main() int i; for(i=2;i=100;i+) if(shouxingshu(i)=1) printf(%dn,i); /system(pause); 3、编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。例如如下的先序遍历字符串:ABC#DE#G#F#其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。#include#includetypedef struct node/二叉树结点数据结构定义;char data;struct node *lchild,*rchild;BTNode,*BTree;void createBTree(BTree &T)char c;scanf(%c,&c);if(c=#)T=NULL;elseBTree t;t=(BTree)malloc(sizeof(BTNode);t-data=c;t-lchild=NULL;t-rchild=NULL;T=t;createBTree(T-lchild);createBTree(T-rchild);void inOrderTra(BTree T)if(T!=NULL)inOrderTra(T-lchild);printf(%c ,T-data);inOrderTra(T-rchild);int main()BTree T;printf(请输入二叉树的先序遍历序列:n);createBTree(T);printf(中序遍历二叉树序列:n);inOrderTra(T);printf(n);屏幕的格式化输出:给出一幅图形,用程序实现。如下所示。 AA AA AB BA AB BA ABC CBA AA AB BA (输入字符B) AA(输入字符C)#includeint main()char c;int sum,i,j;while(scanf(%c,&c)!=EOF)sum=c-A+1;for(i=0;isum;i+)for(j=0;j2*(sum-1-i);j+)printf( );/输出前边的空格;for(j=0;j=i;j+)printf(%c,A+j);/输出前边一串字符串;for(j=0;j=0;j-)printf(%c,A+j);printf(n);for(i=sum-2;i=0;i-)for(j=0;j2*(sum-1-i);j+)printf( );/输出前边的空格;for(j=0;j=i;j+)printf(%c,A+j);/输出前边一串字符串;for(j=0;j=0;j-)printf(%c,A+j);printf(n);getchar();/接受回车符;2。求最长的子序列和。 比如1+3-2,结果是4; 1+3-2+5,结果是7; -1-2-3,结果是-1. 另外要求运行时间不超过1s,就是要求算法的复杂度要好(25分) 3。已知二叉树的前序和中序序列,要求写出后序序列。(40分) 如果给的前序和中序序列是错误的,就要输出NO ANSWER! #include#include#includetypedef struct node char data; struct node *lchild,*rchild;BTNode,*BTree;BTree createBTree(char *pre,int st1,int en1,char *in,int st2,int en2)BTree boot;boot=(BTree)malloc(sizeof(BTNode);int temp;temp=st2;int len_left;/左子树长度;/printf(*n);if(en2-st2)!=(en1-st1)printf(No Answer!n);/不能构成一棵树; exit(0);if(en1-st10|en2-st20)boot=NULL;return boot;while(tempen2)/注意:没有等号! printf(No Answer!n);/不能构成一棵树; exit(0); boot-data=prest1;len_left=temp-st2;boot-lchild=createBTree(pre,st1+1,st1+len_left,in,st2,temp-1);/构造左子树; boot-rchild=createBTree(pre,st1+len_left+1,en1,in,temp+1,en2);/构造左子树; return boot;void display(BTree T)/后序遍历二叉树;if(T!=NUL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年教师招聘之《小学教师招聘》练习题(一)及参考答案详解【a卷】
- 2025年押题宝典教师招聘之《幼儿教师招聘》题库附参考答案详解(达标题)
- 2025年广东省汇源通校园招聘公共管理类综合类+综合类复习题及答案
- 2025年教师招聘之《小学教师招聘》练习题包带答案详解(满分必刷)
- 2025年教师招聘之《小学教师招聘》综合提升练习题附答案详解【突破训练】
- 教师招聘之《小学教师招聘》练习题库【夺分金卷】附答案详解
- 教师招聘之《小学教师招聘》通关检测卷及答案详解【典优】
- 基于2025年数据的房地产市场成交归因分析:房地产市场区域协同发展策略研究报告
- 教师招聘之《幼儿教师招聘》复习试题及参考答案详解(基础题)
- 2025年教师招聘之《小学教师招聘》题库检测试卷含答案详解【满分必刷】
- 部编版六年级语文上册重点难点解析
- 重庆市南开中学高2026届高三第一次质量检测+化学答案
- 肖婷民法总则教学课件
- 教育培训课程开发与实施指南模板
- 2025保密协议范本:物流行业货物信息保密
- 2025卫星互联网承载网技术白皮书-未来网络发展大会
- 顺丰转正考试题库及答案
- 半导体行业面试问题及答案解析
- 《研学旅行课程设计与实施》全套教学课件
- DB15T 2618-2022 公路工程工地试验室建设与管理规范
- 2025至2030年中国绿色船舶行业发展前景预测及投资方向研究报告
评论
0/150
提交评论