華科計算機考研復(fù)試歷年上機題匯總.doc_第1頁
華科計算機考研復(fù)試歷年上機題匯總.doc_第2頁
華科計算機考研復(fù)試歷年上機題匯總.doc_第3頁
華科計算機考研復(fù)試歷年上機題匯總.doc_第4頁
華科計算機考研復(fù)試歷年上機題匯總.doc_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

華科歷年上機題匯總(歡迎補全)代碼都很多是我自己寫的,不一定正確??!錯了可不負(fù)責(zé)任的,呵呵僅供參考!=10年保送生上機試題1、不借用任何字符串庫函數(shù)實現(xiàn)無冗余地接受兩個字符串,然后把它們無冗余的連接起來。 #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、輸入一串?dāng)?shù),要求建平衡二叉排序樹,然后先序遍歷。 3.、有4個小問,是超長整數(shù)的存儲、計算、輸出。要把超長整數(shù)存在一個單向循環(huán)鏈表中,是每四位一個節(jié)點。注:我是用單鏈表寫的!感覺單循環(huán)鏈表沒有什么用處么#include#include#include#define MAXLEN 100typedef struct nodeint data;struct node *next;LNode,*LinkList;int changeString(char s,int len)/把字符串長度變成4的整數(shù)倍;int i,temp;char ssMAXLEN;if(len%4!=0)temp=4-len%4;/需要在前面添加的0的個數(shù);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)/創(chuàng)建單鏈表;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;/插入結(jié)點;start=p;temp=0;/重新計數(shù);i+;start-next=NULL;return L;LinkList reverse(LinkList L)/逆轉(zhuǎn)單循環(huán)鏈表;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大數(shù)相加,單鏈表實現(xiàn);LinkList L,p,q,head,r;int c;/進(jìn)位;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)/還有進(jìn)位;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(請輸入第一個大數(shù):n);scanf(%s,s1);len1=strlen(s1);L1=createList(s1,len1);printf(請輸入第二個大數(shù):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華中科技大學(xué)復(fù)試有關(guān)題目嵌入式方向筆試是數(shù)據(jù)庫和算法概論數(shù)據(jù)庫考了查詢語言,死鎖,等等算法概論:1題:好像是螺絲和螺母問題,每個螺絲對應(yīng)一個螺母,大概有100對吧,找出相應(yīng)對,最后計算時空復(fù)雜度。還有,關(guān)于排列樹,好像還有個回溯法。前面幾道簡答題上機題目:環(huán)境:TC,VC+1.輸入一串?dāng)?shù),然后,建立鏈表,排序輸出。2.計算26個字母的輸入次數(shù),好像不區(qū)分大小寫。3.用一維數(shù)組存儲學(xué)號和成績,然后,按成績排序輸出。=09年系統(tǒng)結(jié)構(gòu)上機試題09年系統(tǒng)結(jié)構(gòu)上機題.輸入四個數(shù),分別創(chuàng)建四個鏈表A,B,C,D. 打印四個鏈表.A按升序排列,D按降序排列.把B中第一個數(shù)插入A中,保持A的升序排列,把C中第一個數(shù)插入D中,保持D的降序排列.把鏈表A中每個數(shù)的個位數(shù)打印出來.合并鏈表AD,保持升序排列。 華中科技大學(xué)復(fù)試機試題目2008年一1、狼過河問題(運用到回溯)2、統(tǒng)計文件中單詞數(shù)目3、N階樓梯上樓問題:一次可以走兩階或一階,問有多少種上樓方式。(遞歸)4、鏈表操作二第一個是一個上樓梯的種數(shù)的統(tǒng)計,本來是一個用遞歸可以解決的問題,但是題目偏偏要求編寫快速算法,言下之意就是要求你把遞歸轉(zhuǎn)化成非遞歸。#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 /*函數(shù)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; 第二個題是鏈表的,要求依照給出的結(jié)構(gòu)體依次實現(xiàn)輸入鏈表,保存鏈表,刪除鏈表,從磁盤讀取鏈表,顯示鏈表這幾個操作。做這個題,如果不記得保存文件的函數(shù),很可能做不全或者做不出來。 第三個是要求根據(jù) - | / 四個字符來實現(xiàn)題目所規(guī)定的一個長方體。并能使這個長方體適當(dāng)?shù)姆糯?。這個是一個遞歸問題,但是我想了半天也沒有做出來。2006第一題是 對輸入的5個數(shù)排序,輸出的結(jié)果到文件里。#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個待排序的數(shù):n);for(i=0;i5;i+)scanf(%d,&ai);qsort(a,5,sizeof(int),cmp);if(foutput=fopen(0000華科復(fù)試機試題(4).txt,w)=NULL)printf(File open error!n);for(i=0;i5;i+)fputc(ai+0,foutput);fclose(foutput);第二題是 用鏈表去對上面的5個數(shù)字排序。第三題是 輸入一個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+;/記錄.的個數(shù); if(cnt!=3)/判斷“.”的個數(shù)是否等于3; flag=0; else j=0; for(i=0;ilen;i+) if(si=.) aj+=i;/記錄“.”的下標(biāo); for(i=0;i3;i+) if(ai+1-ai=1) flag=0; b0=b1=b2=b3=0;/記錄4部分的數(shù)值; 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)/判斷每一部分?jǐn)?shù)值是否在0到255之間。 flag=0; if(flag=1) printf(YESn); else printf(NOn); 2005第一題:對給定的一個字符串,找出有重復(fù)的字符,并給出其位置,如:輸入: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;/標(biāo)記是否出現(xiàn)重復(fù)。 cnt=0;/記錄重復(fù)出現(xiàn)次數(shù)。 temp=0;/記錄字符是否在前已經(jīng)出現(xiàn)過。 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;/記錄重復(fù)出現(xiàn)的下標(biāo)。 if(flag=1) printf(%c,%d;,si,i+1); for(j=0;jcnt;j+) printf(%c,%d;,saj,aj+1); printf(n); 第二題:輸入一個四行五列的矩陣,找出每列最大的兩個數(shù),如:輸入: 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的比較函數(shù);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;/逆置數(shù)組a;for(i=0;i5;i+)qsort(bi,4,sizeof(int),cmp);printf(%d %dn,bi2,bi3);第三題:輸入一個字符串,建立一個二叉排序樹,并中序遍歷輸出;#include#include#includetypedef struct node/二叉樹結(jié)點數(shù)據(jù)結(jié)構(gòu)定義;char value;struct node *lchild,*rchild;BTNode,*BTree;void insertNode(BTree &t,char c)/向二叉排序樹中插入節(jié)點;BTree p,q,temp;p=(BTree)malloc(sizeof(BTNode);p-value=c;p-lchild=NULL;/貌似沒有這2行不行,糾結(jié)了半天??! 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的最大奇數(shù)) y2=2!+4!+.p!(p是小于等于n的最大偶數(shù))#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;/標(biāo)記矩陣是否對稱;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/鏈表結(jié)點數(shù)據(jù)結(jié)構(gòu)定義;int data;struct node *next;LNode,*LinkList;void insert_node(LinkList &L,int a)/向單鏈表中插入結(jié)點,并保持升序;LinkList t,temp,p;t=(LinkList)malloc(sizeof(LNode);/新建結(jié)點;t-data=a;t-next=NULL;if(L=NULL)/是第一個結(jié)點;L=t;elsetemp=L;p=L;if(adata)/結(jié)點插在表頭;t-next=temp;L=t;elsewhile(temp!=NULL&temp-datadatanext;t-next=p-next;/插入結(jié)點;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(輸入鏈表各結(jié)點值,以10000結(jié)束!n);while(scanf(%d,&a)!=EOF)if(a=10000)break;insert_node(L,a);print(L);2002年1、 編一個程序,讀入用戶輸入的,以“.”結(jié)尾的一行文字,統(tǒng)計一共有多少個單詞,并分別輸出每個單詞含有多少個字符。(凡是以一個或多個空格隔開的部分就為一個單詞)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;/記錄單詞數(shù);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= )/去掉中間的連續(xù)空格;23、 i+;24、 25、 26、 27、 printf(單詞個數(shù):%d.n,cnt+1);28、 printf(每個單詞所含有的字符數(shù)是:n);29、 for(i=0;icnt+1;i+)30、 printf(%d ,ai);31、 32、 2、守形數(shù)是這樣一種整數(shù),它的平方的低位部分等于它本身。比如25的平方是625,低位部分是25,因此25是一個守形數(shù)。編一個程序,找出2-100之間所有的守形數(shù)。#include #include int shouxingshu(int n) int num,count,temp,a; a=n; num=n*n;/n的平方 ; count=0;/記錄n的位數(shù); 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、編一個程序,讀入用戶輸入的一串先序遍歷字符串,根據(jù)此字符串建立一個二叉樹(以指針方式存儲)。例如如下的先序遍歷字符串:ABC#DE#G#F#其中“#”表示的是空格,空格字符代表空樹。建立起此二叉樹以后,再對二叉樹進(jìn)行中序遍歷,輸出遍歷結(jié)果。#include#includetypedef struct node/二叉樹結(jié)點數(shù)據(jù)結(jié)構(gòu)定義;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);屏幕的格式化輸出:給出一幅圖形,用程序?qū)崿F(xià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,結(jié)果是4; 1+3-2+5,結(jié)果是7; -1-2-3,結(jié)果是-1. 另外要求運行時間不超過1s,就是要求算法的復(fù)雜度要好(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);/不能構(gòu)成一棵樹; exit(0);if(en1-st10|en2-st20)boot=NULL;return boot;while(tempen2)/注意:沒有等號! printf(No Answer!n);/不能構(gòu)成一棵樹; exit(0); boot-data=prest1;len_left=temp-st2;boot-lchild=createBTree(pre,st1+1,st1+len_left,in,st2,temp-1);/構(gòu)造左子樹; boot-rchild=createBTree(pre,st1+len_left+1,en1,in,temp+1,en2);/構(gòu)造左子樹; return boot;void display(BTree T)/后序遍歷二叉樹;if(T!=NUL

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論