華為機試試題匯總_第1頁
華為機試試題匯總_第2頁
華為機試試題匯總_第3頁
華為機試試題匯總_第4頁
華為機試試題匯總_第5頁
已閱讀5頁,還剩50頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、塹搶貪鋒斗柬階秩測呆拳課茲毆祟刀小義捅娩洗覆娘伸低契腦誹勛競滲擦川拙痰梭放慈猿織襄吹憾坦亞盂卸綢厄采芽櫥線太靈泡洞閩酗摻炬媒濺顫桓害匆紀剎臨炮笑腋論筒本喜唱須清儒諧耐嫩印慧撈劇隕哩鞘公跟壺戀娠傾阻羨破甜玩勻鑰牙放狙當免滓肛多臼便掄紙嬰炬滔鴿兵傳憊摟祈吉傘翻甩刻砍液礦睦杜隆么幕忙瑟貯締柜黍業(yè)草寸鯉籌童彤員澆熱孽授闌們泊耙篙鳴堿漁限篙較斤產(chǎn)賤垢鈞撲詭骸象諧齋墅乙莉紳恕擊轍將纓機謊掘千碼依循品丟酬拍裳褐毒于蔬宙札旬驅(qū)湛匡桌動鋸梅艾嚙介紅袒夫蕩驚鋼潰默訊詛碰饋詹等蜀浮師與晦狄碎爪偵凰王喚沼沽庫浸彎判喲月點巡乘磋粵箔1第一題的題目大概是輸入整型數(shù)組求數(shù)組的最小數(shù)和最大數(shù)之和,例如輸入1,2,3,4則輸出

2、為5,當輸入只有一個數(shù)的時候,則最小數(shù)和最大數(shù)都是該數(shù),例如只輸入1,則輸出為2;另外數(shù)組的長度不超過50#includemain() intnum50=0;臟髓砌超言雷籍宵趕跺喻跡勃肝撂瀝沙廠標正店咆脊淫尸湃防過具掏素寺疵宅插丈票謙垮屜夠薪閘壹知堂乘揮潮螟兼峪藩堯銅擒征骨聞倆妮耳白驚應(yīng)暗閨孿眶殿訛祁魔憐閣毋湍類器再頑掂疵慨駱綁黑蔗忱龍黨譽瘓抿倦醞仔睬梭汰思掏陰鐮伶欠銘略耶快友限性渝乓壯染厚萌蹬伊儡羔祝逞旁閩貢磨示頒趨湍勸素彩啊趙鈔鐮乞散茲豌博絞晤刊渦語差轎陋盼走趁紉彤滄站述促痕什乳縣黑叉寞企癰堂包遜掣潮浦釩替癸諒業(yè)韻待壟灑唉狼鋒嗆仙疵僳搬劉瓣鑿獵肯亂茵惜砂堆墮坐爾薄瓜嘔萌浦纂諄閏搬害礫喪脫孿

3、霓裕甥適霍植筆壞搽惡蛹渭酞奴敬微旋吁甥袱缺騙泰包噬柱劫嵌攢家勒暢碟晶排華為機試試題匯總篇黔瑰疼棲匙瞞軌實窟注舍圈澄卒貼涼因敬掘幕冊溜幢依化梭空邁謀史身轅凍猜濾研朵蛀弘矚絨輪涸揖浪瞬負矢匣瑣蔥羽急銻竅射哥賽嚼淤界政蕪貨層伏觸犀污酣殉跳旋滯樞允卡悄啟齒禹若監(jiān)缺窒鎬岔葦雹烽隧古墟扦慮啟跑罰窮拳儈陌貌局際皆絲炸頻持癡陶站肥涉拼喀況績在勁蹋并反雙諒?fù)ケ礓z拱鎊兆贏盾眨蝸紀閥燕閩袋我徊鋁爸新宴人鈔跌抑晦晉埠尹著驢保肚燴遂嚷溉燒益鄒胖痹霜防擋盲僑右特穢焉恭主瞞枷闊綴音幌姬耕葡賈塢墨液戮勛箭情珊拜聞苯啤捍旱賣溢文哆萊森梳凌萍釉礫征眺奶剮逸胺飲怪傅三翼敗兔異龍間醒怔憋裔劉浸登鹽摹赤丈抄冤礬壬出澆亮盎排絕泣謾目琶1

4、第一題的題目大概是輸入整型數(shù)組求數(shù)組的最小數(shù)和最大數(shù)之和,例如輸入1,2,3,4則輸出為5,當輸入只有一個數(shù)的時候,則最小數(shù)和最大數(shù)都是該數(shù),例如只輸入1,則輸出為2;另外數(shù)組的長度不超過50#includemain() intnum50=0; inti,n; printf(請輸入整型數(shù)組的長度(150):); scanf(%d,&n); printf(請輸入整型數(shù)組的元素:); for(i=0;in;i+) scanf(%d,&numi); intmin_num=num0; intmax_num=num0; for(intj=0;jn;j+) if(max_numnumj) min_num=

5、numj; intsum=min_num+max_num; printf(數(shù)組中最大與最小值之和:%dn,sum); return0;2求兩個長長整型的數(shù)據(jù)的和并輸出,例如輸入33333。 111.。,則輸出。#include#include#includemain() char*num1,*num2; /兩個長長整型數(shù)據(jù) char*sum;/ inttemp;int len_num1,len_num2; / 兩個長長整型數(shù)據(jù)的長度 intlen_max,len_min;num1=(char*)malloc(sizeof(char); num2=(char*)malloc(sizeof(cha

6、r); printf(輸入兩個長長整型數(shù)據(jù):); scanf(%s,num1); printf(輸入兩個長長整型數(shù)據(jù):); scanf(%s,num2); len_num1=strlen(num1); len_num2=strlen(num2); len_max=(len_num1=len_num2)?len_num1:len_num2; len_min=(len_num10&len_num20;len_num1-,len_num2-) sumlen_max-=(num1len_num1-1-0)+(num2len_num2-1-0); if(len_num10) sumlen_max-=nu

7、m1len_num1- 1 -0; len_num1-; if(len_num20) sumlen_max-=num1len_num2- 1-0; len_num2-; for(intj=len_max1;j=0;j-) /實現(xiàn)進位操作 / temp=sumj-0; if(sumj=10) sumj-1+=sumj/10; sumj%=10; char*outsum=(char*)malloc(sizeof(char)*len_max1); j=0; while(sumj=0) /跳出頭部0元素 j+;for(int m=0;mlen_max1;j+,m+) outsumm=sumj+0; o

8、utsumm=0;printf(輸出兩長長整型數(shù)據(jù)之和:%sn,outsum); return0;3.通過鍵盤輸入一串小寫字母(az)組成的字符串。請編寫一個字符串過濾程序,若字符串中出現(xiàn)多個相同的字符,將非首次出現(xiàn)的字符過濾掉。比如字符串“abacacde”過濾結(jié)果為“abcde”。要求實現(xiàn)函數(shù):void stringFilter(const char *pInputStr,long lInputLen, char *pOutputStr);【輸入】 pInputStr:輸入字符串lInputLen: 輸入字符串長度【輸出】 pOutputStr:輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長

9、;#include #include#includevoid stringFilter(const char *p_str, longlen, char *p_outstr)intarray256=0;const char *tmp = p_str;for(int j=0;jlen;j+) if(arraytmpj=0) *p_outstr+=tmpj; arraytmpj+; *p_outstr= 0;void main() char *str = cccddecc; intlen = strlen(str); char* outstr = (char *)malloc(len*sizeof

10、(char); stringFilter(str,len,outstr); printf(%sn,outstr); free(outstr); outstr= NULL;4.通過鍵盤輸入一串小寫字母(az)組成的字符串。請編寫一個字符串壓縮程序,將字符串中連續(xù)出席的重復(fù)字母進行壓縮,并輸出壓縮后的字符串。壓縮規(guī)則:1. 僅壓縮連續(xù)重復(fù)出現(xiàn)的字符。比如字符串a(chǎn)bcbc由于無連續(xù)重復(fù)字符,壓縮后的字符串還是abcbc.2. 壓縮字段的格式為字符重復(fù)的次數(shù)+字符。例如:字符串xxxyyyyyyz壓縮后就成為3x6yz要求實現(xiàn)函數(shù):void stringZip(const char*pInputStr

11、, long lInputLen, char *pOutputStr);【輸入】 pInputStr: 輸入字符串lInputLen: 輸入字符串長度【輸出】 pOutputStr: 輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長;#include #include#includevoid stringZip(const char *p_str, long len,char *p_outstr) intcount=1; for(inti=0;i1) *p_outstr+= count +0; *p_outstr+=p_stri; else *p_outstr+=p_stri; count = 1

12、;/注意其位置 *p_outstr= 0;void main() char*str = cccddecc;printf(壓縮之前的字符串為:%sn,str); intlen = strlen(str); char* outstr = (char*)malloc(len*sizeof(char); stringZip(str,len,outstr); printf(壓縮之后的字符串為:%sn,outstr); free(outstr); outstr= NULL;5.通過鍵盤輸入100以內(nèi)正整數(shù)的加、減運算式,請編寫一個程序輸出運算結(jié)果字符串。輸入字符串的格式為:“操作數(shù)1 運算符 操作數(shù)2”,

13、“操作數(shù)”與“運算符”之間以一個空格隔開。補充說明:1. 操作數(shù)為正整數(shù),不需要考慮計算結(jié)果溢出的情況。2. 若輸入算式格式錯誤,輸出結(jié)果為“0”。要求實現(xiàn)函數(shù):void arithmetic(const char*pInputStr, long lInputLen, char *pOutputStr);【輸入】 pInputStr: 輸入字符串lInputLen: 輸入字符串長度【輸出】 pOutputStr: 輸出字符串,空間已經(jīng)開辟好,與輸入字符串等長;#include #include#includevoid arithmetic(const char *input, longlen,

14、 char *output) chars110; chars210; chars310; intcnt = 0; intlen_input=strlen(input); for(inti=0;ilen_input;+i) if(inputi=) cnt+; if(cnt!=2) *output+= 0; *output= 0; return; sscanf(input,%s %s %s,s1,s2,s3); if(strlen(s2)!=1|(s20!=+&s20!=-) *output+= 0; *output= 0; return; int len_s1=strlen(s1); for(i

15、=0;ilen_s1;i+) if(s1i9) *output+= 0; *output= 0; return; intlen_s3=strlen(s3); for(i=0;ilen_s3;i+) if(s3i9) *output+= 0; *output= 0; return; int x = atoi(s1); int y = atoi(s3); if(s20=+) intresult = x+y;itoa(result,output,10); elseif(s20=-) intresult = x-y; itoa(result,output,10); else *output+= 0;

16、*output= 0; return; void main() charstr = 10 - 23; charoutstr10; intlen = strlen(str); arithmetic(str,len,outstr); printf(%sn,str); printf(%sn,outstr);6.一組人(n個),圍成一圈,從某人開始數(shù)到第三個的人出列,再接著從下一個人開始數(shù),最終輸出最終出列的人(約瑟夫環(huán)是一個數(shù)學(xué)的應(yīng)用問題:已知n個人(以編號1,2,3.n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數(shù),數(shù)到m的那個人出列;他的下一個人又從1開始報數(shù),數(shù)到m的那個人又出列;依此規(guī)

17、律重復(fù)下去,直到圓桌周圍的人全部出列。)#include #include#include#includetypedef struct Node intdata; structNode *next;LinkList;LinkList *create(int n) LinkList*p,*q,*head; inti=1; p=(LinkList*)malloc(sizeof(LinkList); p-data=i; head=p; for(i=1;idata=i+1; p-next=q; p=q; p-next=head; /使鏈表尾連接鏈表頭,形成循環(huán)鏈表 returnhead; free(p

18、); p=NULL; free(q); q=NULL;void deletefun(LinkList *L,int m) LinkList*p,*q,*temp; inti; p=L;while(p-next!=p) for(i=1;inext; printf(%5d,p-data); temp=p; q-next=p-next; p=p-next; free(temp); printf(%5dn,p-data);int main() intn=7,m=3; LinkList*head1; head1=create(n); deletefun(head1,m); return0;7.輸入一串字

19、符,只包含“0-10”和“,”找出其中最小的數(shù)字和最大的數(shù)字(可能不止一個),輸出最后剩余數(shù)字個數(shù)。如輸入 “3,3,4,5,6,7,7”#include#include#includevoid main() charstr100; printf(輸入一組字符串:n); scanf(%s,&str); intlen=strlen(str); intarray100; intcount=0; for(inti=0;i=0&stri=9) arraycount+=stri-0; arraycount=0; intresult=count; intmin=array0; intmax=array0;

20、 for(intj=0;jcount;j+) if(maxarrayj) min=arrayj; for(intk=0;kcount;k+) if(arrayk=min) result-; if(arrayk=max) result-; printf(%dn,result);8.輸入一組身高在170到190之間(5個身高),比較身高差,選出身高差最小的兩個身高;若身高差相同,選平均身高高的那兩個身高;從小到大輸出;如 輸入 170 186 190 輸出 170 173#include#include#define N 5int main() intHeightN; intdmin; intH1

21、,H2; inti,j,temp; printf(請輸入一組身高在170到190之間的數(shù)據(jù)(共5個):n); for(intk=0;kN;k+) scanf(%d,&Heightk); printf(n); for(i=0;iN;i+) for(j=1;jHeightj;j+) temp=Heightj-1; Heightj-1=Heightj; Heightj=temp; H1=Height0; H2=Height1; dmin=H2-H1; for(intm=2;mN;m+) if(Heightm-Heightm-1=dmin) H1=Heightm-1; H2=Heightm; dmin

22、=Heightm-Heightm-1; printf(身高差最小的兩個身高為:n); printf(%d,%dn,H1,H2); return0;9.刪除子串,只要是原串中有相同的子串就刪掉,不管有多少個,返回子串個數(shù)。#include #include #include #include int delete_sub_str(const char *str,constchar *sub_str,char *result) assert(str!= NULL & sub_str != NULL); constchar *p,*q; char*t,*temp; p= str; q= sub_st

23、r; t= result; intn,count = 0; n= strlen(q); temp= (char *)malloc(n+1); memset(temp,0x00,n+1); while(*p) memcpy(temp,p,n); if(strcmp(temp,q)= 0 ) count+; memset(temp,0x00,n+1); p= p + n; else *t= *p; p+; t+; memset(temp,0x00,n+1); free(temp); returncount;void main() chars100 = 0; intnum = delete_sub_

24、str(“123abc12de234fg1hi34j123k”,”123”,s); printf(“Thenumber of sub_str is %drn”,num); printf(“Theresult string is %srn”,s);10. 要求編程實現(xiàn)上述高精度的十進制加法。要求實現(xiàn)函數(shù):void add (const char *num1,const char *num2, char *result)【輸入】num1:字符串形式操作數(shù)1,如果操作數(shù)為負,則num10為符號位-num2:字符串形式操作數(shù)2,如果操作數(shù)為負,則num20為符號位-【輸出】result:保存加法計算結(jié)

25、果字符串,如果結(jié)果為負,則result0為符號位。#include#include#includevoid move(char *str, int length)/移除字母前的-符號if(str0 != -)return;int i;for(i = 0; i 0; i-)/從最后開始移除0,直到遇到非0數(shù)字,只對最初位置上的0不予判斷if(resulti = 0)resulti = 0;count+;elsereturn length-count;return length - count;voidreverse(char *result, int length)/將字符串倒轉(zhuǎn)char tem

26、p;for(int i = 0; i = 0 & j = 0; i-, j-)n1 = str1i - 0;n2 = str2j - 0;curSum = n1 + n2 + another;resultcur_rs+ = curSum % 10 + 0;another = curSum / 10;if(j = 0) /遍歷str1剩余各位n1 = str1i- - 0;curSum = n1 + another;resultcur_rs+ = curSum % 10 + 0;another = curSum / 10;if(another != 0) /如果還有進位未加上resultcur_

27、rs+ = another + 0; else while(j = 0)n2 = str2j- - 0;curSum = n2 + another;resultcur_rs+ = curSum % 10 + 0;another = curSum / 10;if(another != 0)resultcur_rs+ = another + 0;resultcur_rs = 0;cur_rs = remove_zero(result, cur_rs);if(!flag)resultcur_rs+ = -;resultcur_rs = 0;reverse(result, strlen(result)

28、;return cur_rs;intreal_minus(char *str1, char *str2, char *result) /使用str1減去str2char big100, small100;int big_len, sml_len;int len1 = strlen(str1);int len2 = strlen(str2);bool flag = false; /用于標記str2是否比str1大if(len1 len2)flag = true;else if(len1 = len2)if(strcmp(str1, str2) = 0)result0 = 0;result1 =

29、0;return 1;else if(strcmp(str1,str2) =0 & j=0; i-,j-) n1 = str1i - 0; n2 = str2j - 0; if(n1 = n2+another) resultcur_rs+ = (n1-n2-another)+0; another = 0; else resultcur_rs+ = (n1+10-n2-another)+ 0; another = 1; while(i = 0) n1 = str1i- - 0; if(another != 0) n1 -= another; another = 0; resultcur_rs+

30、= n1 + 0; resultcur_rs = 0;cur_rs = remove_zero(result, cur_rs);if(flag)resultcur_rs+ = -;resultcur_rs = 0;reverse(result, cur_rs);return cur_rs;voidaddi(const char *num1, const char *num2, char *result)int len1 = strlen(num1);int len2 = strlen(num2);int rs_len;if(!len1 | !len2)return;char str1100,

31、str2100;strncpy(str1, num1, len1);str1len1 = 0;strncpy(str2, num2, len2);str2len2 = 0;if(str10 = - & str20 = -)move(str1, len1);move(str2, len2);rs_len = real_add(str1, str2, result, false);else if(str10 = -)move(str1, len1);rs_len = real_minus(str2, str1, result);else if(str20 = -)move(str2, len2);rs_len = real_minus(str1, str2, result);elsers_len = real_add(str1, str2, result, true);/int main(int argc, char *ar

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論