最全華為上機試題及部分答案(共24頁)_第1頁
最全華為上機試題及部分答案(共24頁)_第2頁
最全華為上機試題及部分答案(共24頁)_第3頁
最全華為上機試題及部分答案(共24頁)_第4頁
最全華為上機試題及部分答案(共24頁)_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上2011年華為軟件校園招聘編程測驗1、請上機編寫程序,按題目要求提交文件。詳見考試說明,點擊進入考試說明3、評卷通過在給定用例輸入下,嚴格按照試題要求比較考生實現(xiàn)函數(shù)的輸出與預(yù)設(shè)輸出。兩者相同則得分,不同則不得分。4、評卷人保證測試用例輸入?yún)?shù)的合法性,考生不用考慮輸入?yún)?shù)非法或異常的情況5、評卷人保證測試用例輸入在被測函數(shù)正常合法情況下使用不會導(dǎo)致程序錯誤6、如果考生函數(shù)異常導(dǎo)致程序崩潰或死循環(huán),則自動評卷可能會被人為終止,剩余用例不被執(zhí)行,無法得分7、基于上述閱卷規(guī)則,請考生嚴格按照題目要求功能實現(xiàn)程序,盡量保證實現(xiàn)函數(shù)的穩(wěn)健性,同時建議完成一道題并調(diào)試保證正確性

2、后,再考慮并實現(xiàn)下一題目(17)1,判斷電話號碼是否合法:/要注意情況包含,有可能會同時出現(xiàn)幾種不好的情況,要按照順序輸出錯誤。不能同時輸出好幾種錯誤,應(yīng)該是這樣包含:先判斷長度是否符合,再判斷是否以86打頭,再判斷有無其他字符int fun(char num)char *p=num;int n=strlen(num);if(n=13)if(*p='8'&&*(p+1)='6')while(*p!='0')if(*p>='0'&&*p<='9')p+;else retur

3、n 2;if(*p='0')return 0;else return 3;elsereturn 1;int main()char num="87139a"int k=fun(num);cout<<k<<endl;return 0;(18) 數(shù)組比較(20分) 問題描述: 比較兩個數(shù)組,要求從數(shù)組最后一個元素開始逐個元素向前比較,如果2個數(shù)組長度不等,則只比較較短長度數(shù)組個數(shù)元素。請編程實現(xiàn)上述比較,并返回比較中發(fā)現(xiàn)的不相等元素的個數(shù)比如:數(shù)組1,3,5和數(shù)組77,21,1,3,5按題述要求比較,不相等元素個數(shù)為0數(shù)

4、組1,3,5和數(shù)組77,21,1,3,5,7按題述要求比較,不相等元素個數(shù)為3 要求實現(xiàn)函數(shù): int array_compare(int len1, int array1, int len2, int array2) 示例 1) 輸入:int array1 = 1,3,5,int len1 = 3,int array2 = 77,21,1,3,5,int len2 = 5 函

5、數(shù)返回:02) 輸入:int array1 = 1,3,5,int len1 = 3,int array2 = 77,21,1,3,5,7,int len2 = 6 函數(shù)返回:函數(shù)如下:using namespace std;int f(int len1,int arry1,int len2,int arry2)int k=0;for(int i=len1-1,j=len2-1;i>=0&&j>=0;i-,j-)if(arry1i!=arry2j)

6、k+;return k;int main()int num1=1,3,5;int num2=77,21,1,3,5;int k=f(3,num1,5,num2);cout<<k<<endl;return 0;2. 約瑟夫問題 問題描述: 輸入一個由隨機數(shù)組成的數(shù)列(數(shù)列中每個數(shù)均是大于0的整數(shù),長度已知),和初始計數(shù)值m。從數(shù)列首位置開始計數(shù),計數(shù)到m后,將數(shù)列該位置數(shù)值替換計數(shù)值m,并將數(shù)列該位置數(shù)值出列,然后從下一位置從新開始計數(shù),直到數(shù)列所有數(shù)值出列為止。如果計數(shù)到達數(shù)列尾段,則返回數(shù)列首位置繼續(xù)計數(shù)。請編程實現(xiàn)上述計數(shù)過程,同時輸出數(shù)值出列的

7、順比如: 輸入的隨機數(shù)列為:3,1,2,4,初始計數(shù)值m=7,從數(shù)列首位置開始計數(shù)(數(shù)值3所在位置)第一輪計數(shù)出列數(shù)字為2,計數(shù)值更新m=2,出列后數(shù)列為3,1,4,從數(shù)值4所在位置從新開始計數(shù)第二輪計數(shù)出列數(shù)字為3,計數(shù)值更新m=3,出列后數(shù)列為1,4,從數(shù)值1所在位置開始計數(shù)第三輪計數(shù)出列數(shù)字為1,計數(shù)值更新m=1,出列后數(shù)列為4,從數(shù)值4所在位置開始計數(shù)最后一輪計數(shù)出列數(shù)字為4,計數(shù)過程完成。輸出數(shù)值出列順序為:2,3,1,4。 要求實現(xiàn)函數(shù): void array_iterate(int len, int input_array,

8、60;int m, int output_array)【輸入】 int len:輸入數(shù)列的長度;int intput_array:輸入的初始數(shù)列int m:初始計數(shù)值【輸出】 int output_array:輸出的數(shù)值出列順序 示例 輸入:int input_array = 3,1,2,4,int len = 4, m=7輸出:output_array = 2,3,1,4函數(shù)如下:void fun(int len,int a

9、1,int len2,int a2)int n=0,i=-1,k=1,m=len2;while(1)for(int j=0;j<m;)i=(i+1)%len; /注意這個是%,不要寫成/if(a1i!=0)j+; m=a1i;a2n+=a1i;a1i=0; if(k=len)break; k+; 3. 簡單四則運算 問題描述: 輸入一個只包含個位數(shù)字的簡單四則運算表達式字符串,計算該表達式的值注: 1、表達式只含 +, -, *, / 四則運算符,不含括號2、表達式數(shù)值只包含個位整數(shù)(0-9),且不會出現(xiàn)0作

10、為除數(shù)的情況3、要考慮加減乘除按通常四則運算規(guī)定的計算優(yōu)先級4、除法用整數(shù)除法,即僅保留除法運算結(jié)果的整數(shù)部分。比如8/3=2。輸入表達式保證無0作為除數(shù)情況發(fā)生5、輸入字符串一定是符合題意合法的表達式,其中只包括數(shù)字字符和四則運算符字符,除此之外不含其它任何字符,不會出現(xiàn)計算溢出情況 要求實現(xiàn)函數(shù):int calculate(int len,char *expStr)【輸入】 int len: 字符串長度;char *expStr: 表達式字符串;【輸出】 無【返回】 計算結(jié)果 示例 1) 輸入:char

11、0;*expStr = “1+4*5-8/3” 函數(shù)返回:192) 輸入:char *expStr = “8/3*3” 函數(shù)返回:6 簡化版的四則運算:沒有括號,只有加減乘除四種運算int fun(char a,int len) /字符數(shù)組和字符數(shù)組的長度int num20;char str20;int k1=0,k2=0;int data=0;for(int i=0;i<len;i+) /主要運算 if(ai>='0'&&ai<='9') numk1+=ai-'0

12、9;if(ai='-'|ai='+')strk2+=ai;if(ai='*') numk1-1=numk1-1*(ai+1-'0');i+;/遇見*,就運算,結(jié)果保存在數(shù)組中if(ai='/') numk1-1=numk1-1/(ai+1-'0');i+;int temp=num0;int j=0; /兩個數(shù)組只剩下數(shù)組和加減運算符while(j<k2) /順序運算if(strj='-')temp=temp-numj+1;else if(strj='+')tem

13、p=temp+numj+1;j+;return temp;int main() har a="3*3+7+4/3"int k=fun(a,9);cout<<k<<endl;return 0;函數(shù)實現(xiàn)2:中序表達式轉(zhuǎn)換為后序表達式,使用算法實現(xiàn)int isp(char c) int p;switch(c)case '*':case '/':p=1;break;case '+':case '-': p=0;break;return p;char* transf(int len,char a,

14、char b)int k=0;stack<char> s1;for(int i=0;i<len;i+) if(ai>='0'&&ai<='9')bk+=ai; else if(s1.empty()s1.push(ai); else while(isp(ai)<=isp(s1.top() bk+=s1.top();s1.pop();s1.push(ai);while(s1.empty()bk+=s1.top();s1.pop();bk='0'return b;void fun(char c,sta

15、ck s2) char p1,p2;if(!s2.empty()p1=s2.top();s2.pop();else pos=false;cout<<"kongzhan"<<endl;if(!s2.empty()p2=s2.top();s2.top();else pos=false;cout<<"kongzhan"<<endl;if(pos=true)switch(c)case '+':s2.push(p1+p2);break;case '-':s2.push(p2-p1);b

16、reak;case '*':s2.push(p1*p2);break;case '/':s2.push(p2/p1);break;void eval(char a) stack<char> s2;for(int i=len;i<len;i+)switch(ai)case '+':case '-':case '*':case '/':fun(ai,&s2);break;default:s2.push(ai-'0');break;int main() char

17、a="1+4*5-8/3"int len=strlen(a);char b20;char *q=transf(9,a,b);cout<<q<<endl;return 0;第五題:一副牌中發(fā)五張撲克牌給你:讓你判斷數(shù)字的組成:有以下幾種情況:1:四條:即四張一樣數(shù)值的牌(牌均不論花色) 2:三條帶一對3:三條帶兩張不相同數(shù)值的牌 4:兩對 5:順子  包括 10,J,Q,K,A6:什么都不是 7:只有一對 思路:將數(shù)組排序,統(tǒng)計相同的數(shù)字的個數(shù),再分情況討論void sort(int a)int temp;for(int

18、i=0;i<5;i+) for(int j=0;j<5;j+)if(ai>aj)temp=ai;ai=aj;aj=temp;void test(int a)int *b=new int5;int k=1;for(int i=0;i<5;i+) bi=ai;for(int j=0;j<4;j+)if(aj=aj+1)k+;if(k=4)if(b1=b3)cout<<"四條"<<endl;elsecout<<"三條帶一對"<<endl;if(k=3)if(b1!=b2|b2!=b3

19、)cout<<"三條帶兩個不同的牌"<<endl;elsecout<<"兩對"<<endl;if(k=2)cout<<"一對"<<endl;if(k=1)if(b4-b0=4&&b4-b1=3&&b4-b2=2&&b4-b3=1)cout<<"順子<<endl;elsecout<<"什么都不是"<<endl; int main() int

20、a=1,2,4,4,4;test(a);return 0;(19)第二題:求兩個數(shù)組的和差就是去掉兩個數(shù)組中相同的元素然后將兩個數(shù)組中的元素存放在一個新的數(shù)組中 ,按大小順序排序思路:將數(shù)組A和數(shù)組B分別進行排序,然后將A與B進行比較,重復(fù)的跳過去,不重復(fù)的賦給數(shù)組C,依次輸出。 while(i < la && j < lb) if(aai < bbj) csub = aai; +sub; +i; else if(aai > bbj) csub = bbj; +sub; +j; else if(aai = bbj) +i; +j; for(;

21、i < la; +i) csub = aai; +sub; for(; j < lb; +j) csub = bbj; +sub;四:逆序單鏈表node *reverse(node *head)node *p1,*p2,*p3;p1=head;p2=head->next;while(p2)p3=p2->next;p2->next=p1;p1=p2;p2=p3;head->next=NULL;head=p1;return head;(33)2. 將一個字符串的元音字母復(fù)制到另一個字符串,并排序(30分)問題描述:有一字符串,里面可能包含英文字母(大寫、小寫)、

22、數(shù)字、特殊字符,現(xiàn)在需要實現(xiàn)一函數(shù),將此字符串中的元音字母挑選出來,存入另一個字符串中,并對字符串中的字母進行從小到大的排序(小寫的元音字母在前,大寫的元音字母在后,依次有序)。說明:1、 元音字母是a,e,i,o,u,A,E,I,O,U。 2、 篩選出來的元音字母,不需要剔重;最終輸出的字符串,小寫元音字母排在前面,大寫元音字母排在后面,依次有序。要求實現(xiàn)函數(shù):void sortVowel (char* input, char* output);using namespace std;void fun(char a,char s) /提取元音字母,放入數(shù)組int i=0,n=0;while(

23、ai!='0')if(ai='a'|ai='e'|ai='i'|ai='o'|ai='u')sn+=ai;else if(ai='A'|ai='E'|ai='I'|ai='O'|ai='U')sn+=ai;i+;char temp; /將數(shù)組排序for(int i=0;i<n-1;i+)for(int j=0;j<n-i-1;j+)if(sj>sj+1)temp=sj;sj=sj+1;sj+1=temp

24、;int k=0; /定位大寫字母的最后位置while(sk>='A'&&sk<='Z')k+; for(int j=0;j<n;j+) /輸出原字符串 cout<<sj<<' ' cout<<endl;char *p=new char20; /將字符串變換位置,輸出。char *q=p; for(int i=k;i<n;i+)*p=si;p+;for(int j=0;j<k;j+)*p=sj;p+;*p='0'cout<<q<&l

25、t;endl;int main() char str="HaJsdStOoAOeINaPQaWEiAIiO"char s20;fun(str,s);return 0;(32)3. 身份證號碼合法性判斷我國公民的身份證號碼特點如下:1、 長度為18位;2、 第117位只能為數(shù)字;3、 第18位可以是數(shù)字或者小寫英文字母x。4、 身份證號碼的第714位表示持有人生日的年、月、日信息。例如: 0111或 x。請實現(xiàn)身份證號碼合法性判斷的函數(shù)。除滿足以上要求外,需要對持有人生日的年、月、日信息進行校驗。年份大于等于1900年,小于等于2100年。需要考慮閏年、大小月的情況。所謂閏年

26、,能被4整除且不能被100整除 或 能被400整除的年份,閏年的2月份為29天,非閏年的2月份為28天。其他情況的合法性校驗,考生不用考慮。函數(shù)返回值:1) 如果身份證號合法,返回0;2) 如果身份證號長度不合法,返回1;3) 如果身份證號第117位含有非數(shù)字的字符,返回2;4) 如果身份證號第18位既不是數(shù)字也不是英文小寫字母x,返回3;5) 如果身份證號的年信息非法,返回4;6) 如果身份證號的月信息非法,返回5;7) 如果身份證號的日信息非法,返回6(請注意閏年的情況);要求實現(xiàn)函數(shù):int verifyIDCard(char* input)示例1) 輸入:” ”,函數(shù)返回值:1;2)

27、輸入:” abc”,函數(shù)返回值:2;3) 輸入:” a”,函數(shù)返回值:3;4) 輸入:” 4”,函數(shù)返回值:4;5) 輸入:” 4”,函數(shù)返回值:5;6) 輸入:” 4”,函數(shù)返回值:6;7) 輸入:” 1989 0229 1234”,函數(shù)返回值:7;8) 輸入:” 4”,函數(shù)返回值:0;int fun(char *str)int year=0,month=0,day=0;if(strlen(str)-1)<18) /1 for(int i=0;i<18;i+) if(stri>='0'&&stri<='9') /2; e

28、lse return 2; if(str17='x'|(str17>='0'&&str17<='9')/3for(int i=6;i<10;i+) year=year*10+stri-'0'if(year>1900&&year<2100)/4 for(int i=10;i<12;i+) month=month*10+stri-'0'if(month>0&&month<=12)/5 for(int i=12;i<14

29、;i+) day=day*10+stri-'0' if(day<=31)/6 if(year%4!=0&&month=2&&day<=28)return 0;else if(year%4=0&&month=2&&day<29) return 0;else if(year%4!=4&&month!=2&&day<31)return 0;else return 6; else return 6; elsereturn 5;else return 4; else r

30、eturn 3; else return 1;int main()char a=""int k=fun(a);cout<<k<<endl;return 0;第二題:比較一個數(shù)組的元素 是否為回文數(shù)組判斷是否是回文數(shù)組:bool fun(char a)int n=strlen(a);int i=0,j=n-1;while(i<j)if(ai!=aj)return false;i+;j-;return true;(19)第三題:求兩個數(shù)組的和差:就是去掉兩個數(shù)組中相同的元素 然后將兩個數(shù)組中的元素存放在一個新的數(shù)組中 且數(shù)組A中元素要在B數(shù)組元素之

31、前思路:利用循環(huán)比較,將相同的數(shù)字的標記為0,再賦給數(shù)組Cint main() int a=1,3,5,7,9,12,13;int s=1,3,5,6,7,8,9;int len1=sizeof(a)/sizeof(int);int len2=sizeof(s)/sizeof(int);for(int i=0;i<len1;i+)for(int j=0;j<len2;j+)if(ai=sj)ai=0;sj=0;int t30;int k=0,i=0,j=0;while(i<len1)if(ai!=0)tk+=ai;i+;while(j<len2)if(sj!=0)tk+

32、=sj;j+;for(int i=0;i<k;i+)cout<<ti<<' 'return 0;(31)字符串計算1、選秀節(jié)目打分,分為專家評委和大眾評委,score 數(shù)組里面存儲每個評委打的分數(shù),judge_type 里存儲與 score 數(shù)組對應(yīng)的評委類別,judge_type = 1,表示專家評委,judge_type = 2,表示大眾評委,n表示評委總數(shù)。打分規(guī)則如下:專家評委和大眾評委的分數(shù)先分別取一個平均分(平均分取整),然后,總分 = 

33、專家評委平均分  * 0.6 + 大眾評委 * 0.4,總分取整。如果沒有大眾評委,則 總分 = 專家評委平均分,總分取整。函數(shù)最終返回選手得分。int cal_score(int score, int judge_type, int n)int sum1=0,sum2=0,avg1=0,avg2=0;int m=0,k=0;for(int i=0;i<n;i+)if(judge_typei=1)sum1=sum1+scorei;m+;if(judge_typei=2)sum2=sum2+

34、scorei;k+;avg1=sum1/m;avg2=sum2/k;return (int)(avg1*0.6+avg2*0.4);int main() int input=3,6,1,9,7,8;int output=1,1,2,1,2,2;int n=sizeof(input)/sizeof(int);int p=cal_score(input,output,n);cout<<p<<endl;return 0;2、(28)給定一個數(shù)組input ,如果數(shù)組長度n為奇數(shù),則將數(shù)組中最大的元素放到 output 數(shù)組最中間的位置,如果數(shù)組長

35、度n為偶數(shù),則將數(shù)組中最大的元素放到 output 數(shù)組中間兩個位置偏右的那個位置上,然后再按從大到小的順序,依次在第一個位置的兩邊,按照一左一右的順序,依次存放剩下的數(shù)。例如:input = 3, 6, 1, 9, 7   output = 3, 7, 9, 6, 1; input = 3, 6, 1, 9, 7, 8  &#

36、160; output = 1, 6, 8, 9, 7, 3函數(shù)接口   void sort(int input, int n, int output)using namespace std;void sort(int input,int n,int output)int i=0,j=n-1;int temp;for(int i=0;i<n-1;i+)for(int j=0;j<n-i-1;j+) if(input

37、j>inputj+1)temp=inputj;inputj=inputj+1;inputj+1=temp;int k=0;i=0;j=n-1;while(i<j)outputi+=inputk+;outputj-=inputk+;cout<<output3<<endl;int main() int input=3,6,1,9,7,8;int output20;sort(input,6,output);return 0;3、(27)操作系統(tǒng)任務(wù)調(diào)度問題。操作系統(tǒng)任務(wù)分為系統(tǒng)任務(wù)和用戶任務(wù)兩種。其中,系統(tǒng)任務(wù)的優(yōu)先級 < 50,用戶任務(wù)

38、的優(yōu)先級 >= 50且 <= 255。優(yōu)先級大于255的為非法任務(wù),應(yīng)予以剔除?,F(xiàn)有一任務(wù)隊列task,長度為n,task中的元素值表示任務(wù)的優(yōu)先級,數(shù)值越小,優(yōu)先級越高。函數(shù)scheduler實現(xiàn)如下功能,將task 中的任務(wù)按照系統(tǒng)任務(wù)、用戶任務(wù)依次存放到 system_task 數(shù)組和 user_task 數(shù)組中(數(shù)組中元素的值是任務(wù)在task 數(shù)組中的下標),并且優(yōu)先級高的任務(wù)排在前面,數(shù)組元素為-1表示結(jié)束。task = 0, 30, 

39、;155, 1, 80, 300, 170, 40, 99    system_task = 0, 3, 1, 7, -1    user_task = 4, 8, 2, 6, -1函數(shù)接口:void scheduler(int task, int n,int system_task, int user_task) int *p = ne

40、w intn; int i,j,temp; int k1=0,k2=0; for(i = 0;i<n;i+) pi = i;for(i = 0;i<n-1 ;i+) for(j=0;j<n-i-1;j+) if(*(task+pj)>*(task+pj+1) temp = pj;pj = pj+1;pj+1 = temp; /此處是排下標 for(j=0;j<n;j+) if(*(task+pj)<50) system_taskk1+ = pj; if(*(task+pj)>=50 && *(task+pj)<=255) user

41、_taskk2+ = pj; system_taskk1 = -1; user_taskk2 = -1; (20)地區(qū)2:單鏈表的操作:排序,插入,刪除,逆序,創(chuàng)建。struct nodeint data;struct node* next;node *creat() node *head,*p,*s;head=new node1;p=head; /p只是定義,并沒有分配空間,int k;while(cin>>k) /創(chuàng)建單鏈表s=new node1;s->data=k;p->next=s;p=s;head=head->next; /開始的的時候head是表頭節(jié)點

42、,現(xiàn)在是第一個節(jié)點p->next=NULL;return head;node *creat()node *head,*p,*s;head=new node1;p=head;int k,cyc=1;while(cyc)cout<<"enter a data:"cin>>k;if(k!=0)s=new node1;s->data=k;p->next=s;p=s;elsecout<<"OK!"<<endl;cyc=0;head=head->next;p->next=NULL;retu

43、rn head;node *reverse(node *head)node *p1,*p2,*p3;p1=head;p2=head->next;while(p2)p3=p2->next;p2->next=p1;p1=p2;p2=p3;head->next=NULL;head=p1;return head;node *del(node *head,int num)node *p,*s;p=head;while(p->data!=num&&p->next!=NULL)s=p;p=p->next;if(p->data=num)if(p=

44、head)head=p->next;delete p;elses->next=p->next;delete p;elsecout<<"未找到要刪除的節(jié)點"<<endl;return head;node *insert(node *head,int num)/要插入和刪除的時候要考慮判斷特殊位置點node *p,*s,*t;p=head;t=new node1;t->data=num;while(p->data<num&&p->next!=NULL)s=p;p=p->next;if(num

45、<=p->data)if(p=head)t->next=p;head=s;else t->next=p;s->next=t;else /把插入點定位在了鏈尾p->next=t;t->next=NULL;return head; node *sort(node* head) node *p; int temp; int n=sizeof(head)/sizeof(node); if(head=NULL&&head->next=NULL)return head; p=head; for(int i=0;i<n;i+) p=hea

46、d;for(int j=0;j<n-i;j+)if(p->data>p->next->data) temp=p->data;p->data=p->next->data;p->next->data=temp; return head; node *sort(node *head)node *p;int temp;int n;n=length(head);if(head=NULL&&head->next=NULL)return head;for(int i=0;i<n;i+) p=head;for(int

47、 j=0;j<n;j+)if(p->next!=NULL)if(p->data>p->next->data)temp=p->data;p->data=p->next->data;p->next->data=temp;p=p->next;cout<<"new sort is:"<<endl;return head;int main()node *p1; p1=creat();sort(p1);print(p1);cout<<endl; return 0;棧的基本操

48、作:struct listint data;struct node *next;*node;void initstack(node &top)top=NULL;void push(node &top,int num)node *p;p=new node;p->data=num;p->next=top;top=p;void pop(node &top)node *p=top;int n=top->data;top=top->next;cout<<n<<endl;delete p;int Isempty(node &t

49、op)return top=NULL;(26)改進后的冒泡排序:oid maopao(int *s,int n)int i=1,j,b=1;int temp;while(b)b=0;for(j=n-i-1;j>i;j-) if(sj<sj-1) b=1; temp=sj; sj=sj-1; sj-1=temp; for(j=i;j<n-1;j+) if(sj>sj+1) b=1;temp=sj;sj=sj+1;sj+1=temp; i+;(25)掃描數(shù)組,求出最大的增量長度:int main() int a=7,2,3,4,5,6,8;int n=7;int max=1

50、,len=1;for(int i=1;i<n;i+) if(ai>=ai-1) len+; continue; /跳出本次循環(huán),繼續(xù)以下的部分if(max<len)max=len;len=1;cout<<max<<endl;return 0;(24)掃描整數(shù)序列,求出最大長度子序列:思路:定義兩個游標i j分別在數(shù)組的左右,從兩邊收縮,計算i j之間數(shù)組的總和,然后比較,求出最大的記錄,并將此時的i j 記錄下來。int main() int s=1,20,-3,49,59,10,30,20,-41,90,-2,-30,60.-29;int n=siz

51、eof(s)/sizeof(int);int i,k,j,a,b,num,max=0;for( i=0;i<n;i+) for( j=n-1;j>=i;j-) num=0;for( k=i;k<=j;k+)num=num+sk; if(max<num) max=num; a=i; b=j; for(int m=a;m<=b;m+)cout<<sm<<' 'return 0; (31)直接插入排序:void insertsort(int a,int n)int x,j;for(int i=1;i<n;i+)x=ai;fo

52、r( j=i-1;j>=0&&x>aj;j-)aj+1=aj; aj+1=x;(30)提取字符串中的數(shù)字:在字符串"ab00cd+123fght456-253.005fgh"中提取的字符是0,123,456,253,5。void fun( char str, int outArray)char *p=str;int count=0,value=0;while(*p!='0')if(*p>='0'&&*p<='9') value=0; while(*p>='0

53、'&&*p<='9') value=value*10+(*p-'0'); p+; outArraycount+=value; p+;(23)數(shù)字轉(zhuǎn)換成字符串:int main()char str20,temp20;int i=0,j=0;int num=;while(num>0)stri=num%10+'0'num=num/10;i+;i-;while(i>=0)tempj+=stri-;tempj='0'cout<<temp<<endl;return 0;(29)

54、如下輸入方法:第一行輸入要輸入字符的行數(shù)N,接下輸入N行字符,統(tǒng)計字符中特定字符的個數(shù)。方法如下:int main() char ch; int N,num=0;cin>>N; /定義輸入的行數(shù) getchar(); /輸入的N行字符 for(int i=0;i<N;i+) while(1) /記住控制方法 ch=getchar(); /這是單個字符 if(ch='a')num+; if(ch='n')break; cout<<num<<endl;return 0;大數(shù)的運算:void fun(char *num1,char *num2,char *result) int i=strlen(num1)-1,j=strlen(num2)-1;char *p=num1;char *q=num

溫馨提示

  • 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

提交評論