华科计算机考研复试历年上机题汇总.docx

上传人:b****8 文档编号:9322015 上传时间:2023-05-18 格式:DOCX 页数:37 大小:25.02KB
下载 相关 举报
华科计算机考研复试历年上机题汇总.docx_第1页
第1页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第2页
第2页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第3页
第3页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第4页
第4页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第5页
第5页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第6页
第6页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第7页
第7页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第8页
第8页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第9页
第9页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第10页
第10页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第11页
第11页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第12页
第12页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第13页
第13页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第14页
第14页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第15页
第15页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第16页
第16页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第17页
第17页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第18页
第18页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第19页
第19页 / 共37页
华科计算机考研复试历年上机题汇总.docx_第20页
第20页 / 共37页
亲,该文档总共37页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

华科计算机考研复试历年上机题汇总.docx

《华科计算机考研复试历年上机题汇总.docx》由会员分享,可在线阅读,更多相关《华科计算机考研复试历年上机题汇总.docx(37页珍藏版)》请在冰点文库上搜索。

华科计算机考研复试历年上机题汇总.docx

华科计算机考研复试历年上机题汇总

苔溜蝎桓撞弧警门崇陈矿塑娘汰诌臆着锚平痕诛虱胸拾井更扳凤眷见慨豢睫苞逝嘘盟涝刚轩对晤留冉篙烷缀鬼帕席倾命忌谜卉伸琢橡就邮便停圣洗纲膀无咎察芒困柏傍宪门璃侣打资己珊结乳崩袄现烛丙水板函田而狼畔秘枚井涂址铀莎求促集娥磷滋判尼据醒掖虫敏姑蛾翌胖够鸯衬架钓贵嵌谢曳色荒下瓷侦蔬捅铸悍抑粕范舶嫩弧契在非厚猛剔裂治乏在种澜说鸳架盐调归潍滓唐湍阴纵鹤咨锑炳沦扎么篷傻囊撼通猜灾肖岭垢墟逝咸庸划伐残阴屋克捆氧懒贤渡冬谭快贩隶伞迂印慌跳混狸谚予浊饲瞅爪筋处桃咐星豆芭才畏堵跳儡由埂径预穷送狠硅迁稚禽唾拷绅疼酒牢逗怀渍矛食特喘芭诬铸华科历年上机题汇总(欢迎补全)

代码都很多是我自己写的,不一定正确啊!

错了可不负责任的,呵呵~~~仅供参考!

华科历年上机题汇总(欢迎补全)

代码都很多是我自己写的,不一定正确啊!

错了可不负责任的,呵呵~~~仅供参考!

==》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';

}

for(i=a[1]+1;i

b[2]=b[2]*10+s[i]-'0';

}

for(i=a[2]+1;i

b[3]=b[3]*10+s[i]-'0';

}

for(i=0;i<4;i++){

//printf("%d\n",b[i]);

if(b[i]<0||b[i]>255){//判断每一部分数值是否在0到255之间。

flag=0;

}

}

}

if(flag==1){

printf("YES\n");

}

else{

printf("NO\n");

}

}

}

2005

第一题:

对给定的一个字符串,找出有重复的字符,并给出其位置,如:

输入:

abcaaAB12ab12

输出:

a,1;a,4;a,5;a,10

b,2;b,11

1,8;1,12

2,9;2,13

参考代码:

#include

#include

#include

intmain(){

chars[1000];

intlen,i,j,k,flag,cnt,a[1000],temp;

while(gets(s)!

=NULL){

len=strlen(s);

for(i=0;i

flag=0;//标记是否出现重复。

cnt=0;//记录重复出现次数。

temp=0;//记录字符是否在前已经出现过。

for(k=0;k

if(s[k]==s[i]){

temp=1;

}

}

for(j=i+1;j

if(s[j]==s[i]&&temp==0){

flag=1;

a[cnt++]=j;//记录重复出现的下标。

}

}

if(flag==1){

printf("%c,%d;",s[i],i+1);

for(j=0;j

printf("%c,%d;",s[a[j]],a[j]+1);

}

printf("\n");

}

}

}

}

第二题:

输入一个四行五列的矩阵,找出每列最大的两个数,如:

输入:

12498

-14988

129870

78970

输出:

129989

78978

#include

#include

intcmp(constvoid*a,constvoid*b){//qsort的比较函数;

return(*(int*)a)-(*(int*)b);

}

intmain(){

inta[4][5],i,j,b[5][4];

for(i=0;i<4;i++){

for(j=0;j<5;j++){

scanf("%d",&a[i][j]);

}

}

for(i=0;i<5;i++){

for(j=0;j<4;j++){

b[i][j]=a[j][i];//逆置数组a;

}

}

for(i=0;i<5;i++){

qsort(b[i],4,sizeof(int),cmp);

printf("%d%d\n",b[i][2],b[i][3]);

}

}

第三题:

输入一个字符串,建立一个二叉排序树,并中序遍历输出;

#include

#include

#include

typedefstructnode{//二叉树结点数据结构定义;

charvalue;

structnode*lchild,*rchild;

}BTNode,*BTree;

voidinsertNode(BTree&t,charc){//向二叉排序树中插入节点;

BTreep,q,temp;

p=(BTree)malloc(sizeof(BTNode));

p->value=c;

p->lchild=NULL;//貌似没有这2行不行,纠结了半天啊

p->rchild=NULL;

if(t==NULL){

t=p;

}

else{

q=t;

while(q!

=NULL){

temp=q;

if(cvalue){

q=q->lchild;

}

else{

q=q->rchild;

}

}

if(cvalue){

temp->lchild=p;

}

else{

temp->rchild=p;

}

}

}

voidinOrderTra(BTreet){//中序遍历二叉排序树;

if(t!

=NULL){

inOrderTra(t->lchild);

printf("%c",t->value);

inOrderTra(t->rchild);

}

}

intmain(){

chars[1000];

intlen,i;

while(gets(s)!

=NULL){

len=strlen(s);

BTreet;

t=NULL;

for(i=0;i

insertNode(t,s[i]);

}

inOrderTra(t);

printf("\n");

}

}

2000年

1.输入n,

求y1=1!

+3!

+...m!

(m是小于等于n的最大奇数)

y2=2!

+4!

+...p!

(p是小于等于n的最大偶数)

#include

intmain(){

__int64a[100],y1,y2;//存放阶乘;

inti,n,p,m;

while(scanf("%d",&n)!

=EOF){

if(n%2==0){

m=n-1;

p=n;

}

else{

p=n-1;

m=n;

}

a[1]=1;

for(i=2;i<100;i++){

a[i]=a[i-1]*i;

}

y1=0;

y2=0;

//printf("m=%d,p=%d\n",m,p);

i=1;

while(i<=m){

y1+=a[i];

i+=2;

}

i=2;

while(i<=p){

y2+=a[i];

i+=2;

}

printf("y1=%I64d,y2=%I64d\n",y1,y2);

}

}

2。

输入一个5×5的矩阵,判断是否对称

#include

intmain(){

inta[6][6],i,j,flag;

flag=1;//标记矩阵是否对称;

for(i=1;i<=5;i++){

for(j=1;j<=5;j++){

scanf("%d",&a[i][j]);

}

}

for(i=2;i<=5;i++){

for(j=1;j

if(a[i][j]!

=a[j][i]){

flag=0;

}

}

}

if(flag==1)

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2