已閱讀5頁,還剩20頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
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 return 2;if(*p=0)return 0;else return 3;elsereturn 1;int main()char num=87139a3887671;int k=fun(num);coutk=0&j=0;i-,j-)if(arry1i!=arry2j)k+;return k;int main()int num1=1,3,5;int num2=77,21,1,3,5;int k=f(3,num1,5,num2);coutkendl;return 0;3.約瑟夫問題 問題描述:輸入一個由隨機(jī)數(shù)組成的數(shù)列(數(shù)列中每個數(shù)均是大于0的整數(shù),長度已知),和初始計數(shù)值m。從數(shù)列首位置開始計數(shù),計數(shù)到m后,將數(shù)列該位置數(shù)值替換計數(shù)值m,并將數(shù)列該位置數(shù)值出列,然后從下一位置從新開始計數(shù),直到數(shù)列所有數(shù)值出列為止。如果計數(shù)到達(dá)數(shù)列尾段,則返回數(shù)列首位置繼續(xù)計數(shù)。請編程實現(xiàn)上述計數(shù)過程,同時輸出數(shù)值出列的順比如: 輸入的隨機(jī)數(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ù):voidarray_iterate(intlen,intinput_array,intm,intoutput_array)【輸入】 intlen:輸入數(shù)列的長度;intintput_array:輸入的初始數(shù)列intm:初始計數(shù)值【輸出】 intoutput_array:輸出的數(shù)值出列順序 示例輸入:intinput_array=3,1,2,4,intlen=4,m=7輸出:output_array=2,3,1,4函數(shù)如下:void fun(int len,int a1,int len2,int a2)int n=0,i=-1,k=1,m=len2;while(1)for(int j=0;jm;)i=(i+1)%len; /注意這個是%,不要寫成/if(a1i!=0)j+; m=a1i;a2n+=a1i;a1i=0; if(k=len)break; k+;4.簡單四則運算 問題描述:輸入一個只包含個位數(shù)字的簡單四則運算表達(dá)式字符串,計算該表達(dá)式的值注: 1、表達(dá)式只含+,-,*,/四則運算符,不含括號2、表達(dá)式數(shù)值只包含個位整數(shù)(0-9),且不會出現(xiàn)0作為除數(shù)的情況3、要考慮加減乘除按通常四則運算規(guī)定的計算優(yōu)先級4、除法用整數(shù)除法,即僅保留除法運算結(jié)果的整數(shù)部分。比如8/3=2。輸入表達(dá)式保證無0作為除數(shù)情況發(fā)生5、輸入字符串一定是符合題意合法的表達(dá)式,其中只包括數(shù)字字符和四則運算符字符,除此之外不含其它任何字符,不會出現(xiàn)計算溢出情況 要求實現(xiàn)函數(shù):intcalculate(intlen,char*expStr)【輸入】 intlen:字符串長度;char*expStr:表達(dá)式字符串;【輸出】 無【返回】 計算結(jié)果 示例1) 輸入:char*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=0&ai=9) numk1+=ai-0;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(jk2) /順序運算if(strj=-)temp=temp-numj+1;else if(strj=+)temp=temp+numj+1;j+;return temp;int main() har a=3*3+7+4/3;int k=fun(a,9);coutkendl;return 0;函數(shù)實現(xiàn)2:中序表達(dá)式轉(zhuǎn)換為后序表達(dá)式,使用算法實現(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,char b)int k=0;stack s1;for(int i=0;i=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,stack s2) char p1,p2;if(!s2.empty()p1=s2.top();s2.pop();else pos=false;coutkongzhanendl;if(!s2.empty()p2=s2.top();s2.top();else pos=false;coutkongzhanendl;if(pos=true)switch(c)case +:s2.push(p1+p2);break;case -:s2.push(p2-p1);break;case *:s2.push(p1*p2);break;case /:s2.push(p2/p1);break;void eval(char a) stack s2;for(int i=len;ilen;i+)switch(ai)case +:case -:case *:case /:fun(ai,&s2);break;default:s2.push(ai-0);break;int main() char a=1+4*5-8/3;int len=strlen(a);char b20;char *q=transf(9,a,b);coutqendl;return 0;5、一副牌中發(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 i=0;i5;i+) for(int j=0;jaj)temp=ai;ai=aj;aj=temp;void test(int a)int *b=new int5;int k=1;for(int i=0;i5;i+) bi=ai;for(int j=0;j4;j+)if(aj=aj+1)k+;if(k=4)if(b1=b3)cout四條endl;elsecout三條帶一對endl;if(k=3)if(b1!=b2|b2!=b3)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 a=1,2,4,4,4;test(a);return 0;6、求兩個數(shù)組的和差就是去掉兩個數(shù)組中相同的元素然后將兩個數(shù)組中的元素存放在一個新的數(shù)組中,按大小順序排序思路:將數(shù)組A和數(shù)組B分別進(jìn)行排序,然后將A與B進(jìn)行比較,重復(fù)的跳過去,不重復(fù)的賦給數(shù)組C,依次輸出。 while(i la & j lb) if(aai bbj) csub = bbj; +sub; +j; else if(aai = bbj) +i; +j; for(; i la; +i) csub = aai; +sub; for(; j next;while(p2)p3=p2-next;p2-next=p1;p1=p2;p2=p3;head-next=NULL;head=p1;return head;8、 將一個字符串的元音字母復(fù)制到另一個字符串,并排序(30分)問題描述:有一字符串,里面可能包含英文字母(大寫、小寫)、數(shù)字、特殊字符,現(xiàn)在需要實現(xiàn)一函數(shù),將此字符串中的元音字母挑選出來,存入另一個字符串中,并對字符串中的字母進(jìn)行從小到大的排序(小寫的元音字母在前,大寫的元音字母在后,依次有序)。說明: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(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;in-1;i+)for(int j=0;jsj+1)temp=sj;sj=sj+1;sj+1=temp;int k=0; /定位大寫字母的最后位置while(sk=A&sk=Z)k+; for(int j=0;jn;j+) /輸出原字符串 coutsj ; coutendl;char *p=new char20; /將字符串變換位置,輸出。char *q=p; for(int i=k;in;i+)*p=si;p+;for(int j=0;jk;j+)*p=sj;p+;*p=0;coutqendl;int main() char str=HaJsdStOoAOeINaPQaWEiAIiO;char s20;fun(str,s);return 0;9、身份證號碼合法性判斷我國公民的身份證號碼特點如下:1、 長度為18位;2、 第117位只能為數(shù)字;3、 第18位可以是數(shù)字或者小寫英文字母x。4、 身份證號碼的第714位表示持有人生日的年、月、日信息。例如:511002 19880808 0111或511002 19880808011x。請實現(xiàn)身份證號碼合法性判斷的函數(shù)。除滿足以上要求外,需要對持有人生日的年、月、日信息進(jìn)行校驗。年份大于等于1900年,小于等于2100年。需要考慮閏年、大小月的情況。所謂閏年,能被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) 輸入:”511002 111222”,函數(shù)返回值:1;2) 輸入:”511002 abc123456789”,函數(shù)返回值:2;3) 輸入:”511002 19880808123a”,函數(shù)返回值:3;4) 輸入:”511002 188808081234”,函數(shù)返回值:4;5) 輸入:”511002 198813081234”,函數(shù)返回值:5;6) 輸入:”511002 198808321234”,函數(shù)返回值:6;7) 輸入:”511002 1989 0229 1234”,函數(shù)返回值:7;8) 輸入:”511002 198808081234”,函數(shù)返回值:0;int fun(char *str)int year=0,month=0,day=0;if(strlen(str)-1)18) /1 for(int i=0;i=0&stri=0&str17=9)/3for(int i=6;i1900&year2100)/4 for(int i=10;i0&month=12)/5 for(int i=12;i14;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&day29) return 0;else if(year%4!=4&month!=2&day31)return 0;else return 6; else return 6; elsereturn 5;else return 4; else return 3; else return 1;int main()char a=340621198608377817;int k=fun(a);coutkendl;return 0;10、比較一個數(shù)組的元素 是否為回文數(shù)組判斷是否是回文數(shù)組:bool fun(char a)int n=strlen(a);int i=0,j=n-1;while(ij)if(ai!=aj)return false;i+;j-;return true;11、求兩個數(shù)組的和差:就是去掉兩個數(shù)組中相同的元素 然后將兩個數(shù)組中的元素存放在一個新的數(shù)組中 且數(shù)組A中元素要在B數(shù)組元素之前思路:利用循環(huán)比較,將相同的數(shù)字的標(biāo)記為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;ilen1;i+)for(int j=0;jlen2;j+)if(ai=sj)ai=0;sj=0;int t30;int k=0,i=0,j=0;while(ilen1)if(ai!=0)tk+=ai;i+;while(jlen2)if(sj!=0)tk+=sj;j+;for(int i=0;ik;i+)coutti ;return 0;12、字符串計算1、選秀節(jié)目打分,分為專家評委和大眾評委,score數(shù)組里面存儲每個評委打的分?jǐn)?shù),judge_type里存儲與score數(shù)組對應(yīng)的評委類別,judge_type=1,表示專家評委,judge_type=2,表示大眾評委,n表示評委總數(shù)。打分規(guī)則如下:專家評委和大眾評委的分?jǐn)?shù)先分別取一個平均分(平均分取整),然后,總分=專家評委平均分*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;in;i+)if(judge_typei=1)sum1=sum1+scorei;m+;if(judge_typei=2)sum2=sum2+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);coutpendl;return 0;13、給定一個數(shù)組input,如果數(shù)組長度n為奇數(shù),則將數(shù)組中最大的元素放到output數(shù)組最中間的位置,如果數(shù)組長度n為偶數(shù),則將數(shù)組中最大的元素放到output數(shù)組中間兩個位置偏右的那個位置上,然后再按從大到小的順序,依次在第一個位置的兩邊,按照一左一右的順序,依次存放剩下的數(shù)。例如:input=3,6,1,9,7output=3,7,9,6,1;input=3,6,1,9,7,8output=1,6,8,9,7,3函數(shù)接口voidsort(intinput,intn,intoutput)using namespace std;void sort(int input,int n,int output)int i=0,j=n-1;int temp;for(int i=0;in-1;i+)for(int j=0;jinputj+1)temp=inputj;inputj=inputj+1;inputj+1=temp;int k=0;i=0;j=n-1;while(ij)outputi+=inputk+;outputj-=inputk+;coutoutput3endl;int main() int input=3,6,1,9,7,8;int output20;sort(input,6,output);return 0;14、操作系統(tǒng)任務(wù)調(diào)度問題。操作系統(tǒng)任務(wù)分為系統(tǒng)任務(wù)和用戶任務(wù)兩種。其中,系統(tǒng)任務(wù)的優(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ù)組中的下標(biāo)),并且優(yōu)先級高的任務(wù)排在前面,數(shù)組元素為-1表示結(jié)束。task=0,30,155,1,80,300,170,40,99system_task=0,3,1,7,-1user_task=4,8,2,6,-1函數(shù)接口:void scheduler(int task, int n,int system_task, int user_task) int *p = new intn; int i,j,temp; int k1=0,k2=0; for(i = 0;in;i+) pi = i;for(i = 0;in-1 ;i+) for(j=0;j*(task+pj+1) temp = pj;pj = pj+1;pj+1 = temp; /此處是排下標(biāo) for(j=0;jn;j+) if(*(task+pj)=50 & *(task+pj)k) /創(chuàng)建單鏈表s=new node1;s-data=k;p-next=s;p=s;head=head-next; /開始的的時候head是表頭節(jié)點,現(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)coutk;if(k!=0)s=new node1;s-data=k;p-next=s;p=s;elsecoutOK!next;p-next=NULL;return 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=head)head=p-next;delete p;elses-next=p-next;delete p;elsecout未找到要刪除的節(jié)點data=num;while(p-datanext!=NULL)s=p;p=p-next;if(numdata)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;in;i+) p=head;for(int j=0;jdatap-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;in;i+) p=head;for(int j=0;jnext!=NULL)if(p-datap-next-data)temp=p-data;p-data=p-next-data;p-next-data=temp;p=p-next;coutnew sort is:endl;return head;int main()node *p1; p1=creat();sort(p1);print(p1);coutdata=num;p-next=top;top=p;void pop(node &top)node *p=top;int n=top-data;top=top-next;coutni;j-) if(sjsj-1) b=1; temp=sj; sj=sj-1; sj-1=temp; for(j=i;jsj+1) b=1;temp=sj;sj=sj+1;sj+1=temp; i+;18、掃描數(shù)組,求出最大的增量長度:int main() int a=7,2,3,4,5,6,8;int n=7;int max=1,len=1;for(int i=1;i=ai-1) len+; continue; /跳出本次循環(huán),繼續(xù)以下的部分if(maxlen)max=len;len=1;coutmaxendl;return 0;19、掃描整數(shù)序列,求出最大長度子序列:思路:定義兩個游標(biāo)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=sizeof(s)/sizeof(int);int i,k,j,a,b,num,max=0;for( i=0;i=i;j-) num=0;for( k=i;k=j;k+)num=num+sk; if(maxnum) max=num; a=i; b=j; for(int m=a;m=b;m+)coutsm ;return 0; 20、直接插入排序:void insertsort(int a,int n)int x,j;for(int i=1;i=0&xaj;j-)aj+1=aj; aj+1=x;21、提取字符串中的數(shù)字:在字符串a(chǎn)b00cd+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=0&*p0)stri=num%10+0;num=num/10;i+;i-;while(i=0)tempj+=stri-;tempj=0;couttempN; /定義輸入的行數(shù) getchar(); /輸入的N行字符 for(int i=0;iN;i+) while(1) /記住控制方法 ch=getchar(); /這是單個字符 if(ch=a)num+; if(ch=n)break; coutnum=0&j=0) resultn+=(pi-0)+(qj-0)+k)%10+0; k=(pi-0)+(qj-0)/10; i-;j-; while(i=0) resultn+=(pi-0)+k)%10+0; k=(pi-0)+k)/10; i-; while(j0) resultn+=(qj-0)+k)%10+0; k=(qj-0)+k)/10; i-; if(k=1) resultn+=1; /如果是兩個負(fù)數(shù)相加 ,加上resultn+=-
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025【合同范本】運輸公司合同范本
- 2025勞動合同中英對照
- 2025學(xué)校游泳池承包合同范文
- 2025雙因素理論在醫(yī)院合同制護(hù)士隊伍建設(shè)中的應(yīng)用
- 2025器械配置買賣合同書
- 跨領(lǐng)域?qū)W習(xí)的心態(tài)調(diào)整與興趣培養(yǎng)
- 二零二五年度建筑工程承攬合同與綠色施工技術(shù)培訓(xùn)協(xié)議4篇
- 二零二五年度船舶船員勞務(wù)合同(遠(yuǎn)洋航行專項)3篇
- 工業(yè)安全安全生產(chǎn)托管服務(wù)合同范本解析考核試卷
- 個人勞務(wù)合同協(xié)議書
- 廣東省茂名市電白區(qū)2024-2025學(xué)年七年級上學(xué)期期末質(zhì)量監(jiān)測生物學(xué)試卷(含答案)
- 2024版?zhèn)€人私有房屋購買合同
- 2024爆炸物運輸安全保障協(xié)議版B版
- 2025年度軍人軍事秘密保護(hù)保密協(xié)議與信息安全風(fēng)險評估合同3篇
- 《食品與食品》課件
- 讀書分享會《白夜行》
- 光伏工程施工組織設(shè)計
- DB4101-T 121-2024 類家庭社會工作服務(wù)規(guī)范
- 化學(xué)纖維的鑒別與測試方法考核試卷
- 2024-2025學(xué)年全國中學(xué)生天文知識競賽考試題庫(含答案)
- 自動駕駛汽車道路交通安全性探討研究論文
評論
0/150
提交評論