版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、#include#defineANum1285#defineANum23500/printf(”%d%cn,(int)a,(char)123);字符查看ASCII表/printf(”%d%dn,(int)我0,(int)我1);/漢字查看ASCII表/構(gòu)造函數(shù)部分/Small_Num求較小函數(shù)求兩個(gè)整型數(shù)據(jù)中較小的一個(gè),返回值為較小的數(shù)intSmall_Num(intNum1,intNum2)if(Num1Num2)returnNum2;elsereturnNum1;/Bige_Num求較大函數(shù)求兩個(gè)整型數(shù)據(jù)中較大的一個(gè),返回值為較大的數(shù)intBige_Num(intNum1,intNum2)
2、if(Num1Num2)returnNum1;elsereturnNum2;/Str_Len求字符串求長函數(shù)求任意長度字符串或指針指向的字符串的字符串長度,返回值為字符數(shù)加1(即字符串長度)intStr_Len(charStr2)inti=0;while(Str2i!=0)/求長原理字符串最后以0結(jié)尾,統(tǒng)計(jì)不為0,直到為0時(shí)即可i+;returni+1;/Arr_Len求字符串?dāng)?shù)組元素個(gè)數(shù)的函數(shù),返回值為字符串?dāng)?shù)intArr_Len(charStr2ANum1)/求元素個(gè)數(shù)要求數(shù)組中不能含有空串,該函數(shù)只統(tǒng)計(jì)到出現(xiàn)空串為止,另外數(shù)組的外層參數(shù)ANum1必須給出且與數(shù)組相同inti=0;whil
3、e(Str2i0!=0)inti=0;while(Str2i0!=0)0,統(tǒng)計(jì)不為0,直到為0時(shí)即可i+;returni-1;/求長原理字符串第一位不為/char-int轉(zhuǎn)換,s為待轉(zhuǎn)換成數(shù)字的數(shù)字字符串,一個(gè)參數(shù)時(shí)將s轉(zhuǎn)換成十進(jìn)制數(shù),Str_Len為數(shù)字位數(shù)intChar_Int(chars)intTotal=0;for(inti=0;iint轉(zhuǎn)換,s為待轉(zhuǎn)換成數(shù)字的數(shù)字字符串,兩個(gè)參數(shù)時(shí)將s轉(zhuǎn)換成Num進(jìn)制數(shù)并以十進(jìn)制輸出,Str_Len為數(shù)字位數(shù)intChar_Int(chars,intNum)intTotal=0;for(inti=0;ichar轉(zhuǎn)換,chars為有足夠長度的字符串,用
4、于存儲數(shù)字生成的字符串char*Int_Char(intn,chars)intTmp_n=n,Length=0;while(Tmp_n=1)長度LengthLength+;Tmp_n/=10;環(huán)for(inti=0;iLength;i+)Tmp_n=n%10;次取余數(shù),存入Tmp_n中n/=10;以便下一次取余數(shù)sLength-1-i=Tmp_n+48;數(shù)字字符所對應(yīng)的數(shù)字(即Tmp_n+48),sLength=0;returns;/求出待轉(zhuǎn)換成字符的數(shù)字的/依次除10直到小于1退出循/對待轉(zhuǎn)換的數(shù)字各位依/求出待轉(zhuǎn)換成字符的數(shù)字的/依次除10直到小于1退出循/對待轉(zhuǎn)換的數(shù)字各位依/對待轉(zhuǎn)換的
5、數(shù)字依次去尾數(shù),/將各位數(shù)字依次轉(zhuǎn)換成對應(yīng)相應(yīng)位置(即sLength-1-i/位數(shù)字字符串設(shè)尾/返回生成的數(shù)字字符串char*Str_Cpy(charStrl,constcharStr2)inti=0;while(Str2i!=0)Strli=Str2i;i+;Strli=0;returnStrl;/Str_Cpy字符串拷貝函數(shù),從源字符串Strl中拷貝前Num個(gè)字符串Str2中,返回值Str2所對應(yīng)的字符串char*Str_Cpy(constcharStrl,intNum,charStr2)inti=0;while(Str1i!=0&iNum)Str2i=Str1i;i+;Str2i=0;r
6、eturnStr2;/Str_Cpy字符串拷貝函數(shù),從Str1第Num1個(gè)字符的位置開始,拷貝Num2個(gè)字符到Str2中,返回值Str2所對應(yīng)的字符串char*Str_Cpy(constcharStr1,intNum1,intNum2,charStr2)inti=0;while(Str1i!=0&iNum2)Str2i=Str1i+Num1-1;i+;Str2i=0;returnStr2;使得Str的長度變?yōu)長en的整數(shù)倍不足部分添加空格char*Str_Chg(charStr,intLen)inti,LenS=Str_Len(Str);if(LenS%Len)!=0)/對字符串進(jìn)行處理使得S
7、tr的長度為Len的整數(shù)倍for(i=LenS-1;iNum;i-)Str1(i-1)+(Str_Len(Str2)-1)=Str1i-1;將字符串1的第i-1個(gè)字符向后移動字符串Str2個(gè)字符數(shù)for(i=0;iNum;i-)/須包含Str_Len求字符串長函數(shù)Str1(i-1)+(Str_Len(Str2)-1)=Str1i-1;將字符串1的第i-1個(gè)字符向后移動字符串Str2個(gè)字符數(shù)for(i=0;iStr_Len(Str2)-1;i+)Str1Num+i=Str2i;returnStr1;/Str_Cmp_Min字符串比較函數(shù)(按字母表的順序)比較兩個(gè)字符串的大小,輸出較小的字符串對應(yīng)
8、的數(shù)字返回值1表示字符串Strl較??;返回值2字符串Strl較??;返回0時(shí)兩個(gè)字符串相同intStr_Cmp_Min(charStr1,charStr2)/需包含構(gòu)造函數(shù)Small_Num、Str_LenintCM_i=Small_Num(Str_Len(Str1),Str_Len(Str2);/取較短的字符串長度進(jìn)行比較,(即比較至字符長度的后一位for(inti=0;iStr2i)return2;i=CM_i-1;if(Str1iStr2i)return1;i=CM_i-1;return0;需為最外層返回才有效/CM_i:CirculateMaxNumberi/如果字符串的第一個(gè)字符相/則
9、跳過上一個(gè)字符/比較字符串的第二個(gè)字符/有返回的值函數(shù)return0必intstr_inc(charstr1,charstr2)inti=0;/CM_i:CirculateMaxNumberi/如果字符串的第一個(gè)字符相/則跳過上一個(gè)字符/比較字符串的第二個(gè)字符/有返回的值函數(shù)return0必intstr_inc(charstr1,charstr2)inti=0;while(str2i!=0)if(str2i!=str1i)return0;if(str2+i=0)return1;return0;/當(dāng)str2未至結(jié)尾時(shí)/當(dāng)兩字符串對應(yīng)字符不相同時(shí),返回0/當(dāng)str2至結(jié)尾時(shí),返回1Str_Inc兩
10、個(gè)參數(shù)的stringinclude函數(shù)用于判斷字符串Strl中是否含有字符串Str2,包含幾個(gè)返回值就為幾,返回CountS2的值intStr_Inc(charStr1,charStr2)/需包含構(gòu)造函數(shù)Str_LenintCountL,CountS2=0;/CountL用于統(tǒng)計(jì)字符串長度是否達(dá)到Str2的長度,CountS2用于計(jì)數(shù)與Str2相同的字符串個(gè)數(shù)for(inti=0;iStr_Len(Str1)-1;i+)intk=i;if(Str1i=Str20)/當(dāng)?shù)谝粋€(gè)字符串相同時(shí)開始進(jìn)一步比較剩下幾位是否相同CountL=1;for(intj=1;jStr_Len(Str2)-1;j+)
11、if(Str1+k=Str2j)CountL+;/對/對CountL進(jìn)行清零操作/當(dāng)剩下幾位也相同時(shí)即含有/統(tǒng)計(jì)個(gè)數(shù)CountL=0;避免CountS2統(tǒng)計(jì)出錯(cuò)if(CountL=Str_Len(Str2)-1)與Str2相同的部分CountS2+;returnCountS2;/Str_Inc_NoDif不區(qū)分大小寫的字符比較函數(shù)兩個(gè)參數(shù)的stringinclude函數(shù)用于判斷字符串Strl中是否含有字符串Str2,包含幾個(gè)返回值就為幾,返回CountS2的值intStr_Inc_NoDif(charStr1,charStr2)/需包含構(gòu)造函數(shù)Str_LencharTmplANuml,Tmp2
12、ANuml;Str_Cpy(Tmpl,Strl);Str_Cpy(Tmp2,Str2);intCountL,CountS2=0;/CountL用于統(tǒng)計(jì)字符串長度是否達(dá)到Str2的長度,CountS2用于計(jì)數(shù)與Str2相同的字符串個(gè)數(shù)for(inti=0;iStr_Len(Tmpl)-l;i+)intk=i,j;if(Tmpli97)Tmpli+=32;/不區(qū)分大小寫時(shí),將大寫全部轉(zhuǎn)換成小寫,進(jìn)行比較if(Tmp2097)Tmp20+=32;if(Tmpli=Tmp20)/當(dāng)?shù)谝粋€(gè)字符串相同時(shí)開始進(jìn)一步比較剩下幾位是否相同CountL=1;for(j=1;jStr_Len(Tmp2)-1;j+)
13、if(Tmp1+k=Tmp2j)if(Tmp1k97)Tmp1k+=32;if(Tmp2j97)Tmp2j+=32;CountL+;/對/對CountL進(jìn)行清零操作/當(dāng)剩下幾位也相同時(shí)即含有/統(tǒng)計(jì)個(gè)數(shù)CountL=0;避免CountS2統(tǒng)計(jì)出錯(cuò)if(CountL=Str_Len(Tmp2)-1)與Str2相同的部分CountS2+;returnCountS2;/Str_Inc三個(gè)參數(shù)的stringIclude函數(shù)用于將字符串Str1中第Num個(gè)Str2是字符的起始位置i作為返回值返回,當(dāng)Strl中不含有Str2時(shí),i的返回值為Strl的字符串長度intStr_Inc(charStr1,intN
14、um,charStr2)/需包含構(gòu)造函數(shù)Str_Leninti,CountL,CountS2=0;/CountL用于統(tǒng)計(jì)字符串長度是否達(dá)到Str2的長度,CountS2用于計(jì)數(shù)與Str2相同的字符串個(gè)數(shù)for(i=0;iStr_Len(Strl)-l;i+)if(Strli=Str20)/當(dāng)?shù)谝粋€(gè)字符串相同時(shí)開始進(jìn)一步比較剩下幾位是否相同intk=i;CountL=l;for(intj=l;jStr_Len(Str2)-l;j+)if(Strl+k=Str2j)CountL+;/對/對CountL進(jìn)行清零操作/當(dāng)剩下幾位也相同時(shí)即含有/統(tǒng)計(jì)個(gè)數(shù)CountL=0;避免CountS2統(tǒng)計(jì)出錯(cuò)if(
15、CountL=Str_Len(Str2)-l)與Str2相同的部分CountS2+;if(CountS2=Num)returni;/返回第Num個(gè)Str2處起始處ireturni;的值returnStr_Len(Str1);/Str_Son,求字符串?dāng)?shù)組最小子字符串函數(shù),數(shù)組的最內(nèi)層下標(biāo)可以省略strlANuml,其余參數(shù)必須補(bǔ)齊且與待處理數(shù)組相同將字符串?dāng)?shù)組strl中的子串存入數(shù)組str2中對應(yīng)的位置voidStr_Son(charstr1ANum1,charstr2ANum1)需包含構(gòu)造函數(shù)Arr_Len、Str_Len、三個(gè)參數(shù)Str_Cpy、三個(gè)參數(shù)的Str_Incinttotal=A
16、rr_Len(str1);/依次選取str1/依次選取str1中的各個(gè)字符串,i依次選取str1i的每一個(gè)子字符串將子字符串拷貝到str2i中將子字符串str2i與str1中每一個(gè)for(intj=0;jStr_Len(str1i)-1;j+)字符串,j循環(huán)intinclude=0;Str_Cpy(str1i,j+1,str2i);for(inti2=0;i2total;i2+)字符串str1i2比較if(i2!=i&Str_Inc(str1i2,1,str2i)=0)/當(dāng)str2i2與str2i不是同一個(gè)字符串,且str1i2開始的位置就含有子字符串str2i時(shí),計(jì)數(shù)變量include自加i
17、nclude+;if(include=0)j=Str_Len(str1i-1);/沒有與子字符串相同時(shí)退出循環(huán)/將字符串str2從str1的第一位開始清除char*str_del(charstr1,charstr2)判斷str2是否為判斷str2是否為str1的子串,若不是直/當(dāng)str2未至結(jié)尾時(shí)/當(dāng)str2未至結(jié)尾str1還未至結(jié)if(str_inc(str1,str2)=0)returnstr1;接返回str1不刪除inti=0,j=0;while(str2i!=0)i+;while(str1i-1!=0)尾時(shí)str1j=str1i;/將str1的后str2位從開始位置str1j=str1
18、i;開始復(fù)制j+;i+;/為/為str2加上結(jié)尾str1j=0;returnstr1;Str_DelStringdelit函數(shù)用于將字符串Strl中的第Num個(gè)Str2字符串刪除char*Str_Del(charStr1,intNum,charStr2)/需包含構(gòu)造函數(shù)Str_Len、Str_Inc、當(dāng)Str1中沒有Str時(shí)最大循環(huán)數(shù)CM_j0,j初值為0且j+,jCM_j不成立,返回Strl的值inti=Str_Inc(Str1,Num,Str2);/通過三個(gè)參數(shù)的stringIclude獲取第Num個(gè)Str2在字符串strl字符串的起始位置iintCM_j=Str_Len(Str1)-(S
19、tr_Len(Str2)-1)-i;/求循環(huán)操作長度for(intj=0;jCM_j;j+)Str1i+=Str1i+(Str_Len(Str2)-1);將Strl中第Num個(gè)Str2后的字符串移至起始位置i覆蓋原有數(shù)據(jù)returnStr1;/輸出Str1注意!在引用函數(shù)Str_Del時(shí),Str1必須有屬于自己的內(nèi)存空間,如:Str_Del(apple,1,pp)時(shí),系統(tǒng)就Str_DelStringdelit函數(shù)用于刪除字符串Str1中的所有Str2char*Str_Del(charStr1,charStr2)/需包含構(gòu)造函數(shù)Str_Len、兩參數(shù)的Str_Inc、三參數(shù)的Str_Delint
20、count=Str_Inc(Str1,Str2);統(tǒng)計(jì)開始時(shí)Str2含有多少個(gè)Str1while(count-!=0)Str_Del(Str1,1,Str2);returnStr1;Str_Rep四個(gè)參數(shù)的StringRplace函數(shù)用一個(gè)字符串Str3去取代字符串Str1中的第Num個(gè)字符串Str2char*Str_Rep(charStr1,charStr2,intNum,charStr3)/需包含構(gòu)造函數(shù)Str_Inc、Str_Del、Str_Add/取代時(shí)Str1須有自己的內(nèi)存空間才能寫入,還需有足夠容納取代后總字符的生數(shù)組越界可能會導(dǎo)致部分信息丟失/空間否則會發(fā)inti=Str_Inc
21、(Str1,Num,Str2);Str2在Str1的起始位置Str_Del(Str1,Num,Str2);個(gè)Str2Str_Add(Str1,i,Str3);Str1的i處returnStr1;/用i記住第Num個(gè)/刪除Str1中第Num/用i記住第Num個(gè)/刪除Str1中第Num將字符串Str3添加到char*Str_Rep(charStrl,charStr2,charStr3)/需包含構(gòu)造函數(shù)Str_Inc、Str_Del、Str_Add、四個(gè)參數(shù)的Str_Repintcount=Str_Inc(Str1,Str2);統(tǒng)計(jì)開始時(shí)Str2含有多少個(gè)Strlwhile(count-!=0)St
22、r_Rep(Str1,Str2,1,Str3);returnStr1;/引用qsort排序intCmp(constvoid*ele1,constvoid*ele2)return(strcmp(char*)ele1,(char*)ele2);/引用strcmp字符串比較函數(shù),在頭文件string.h中voidmain()charArr49=bnanan,apple,orange,humburge;qsort(Arr,4,9,Cmp);/引用qsort排序函數(shù),在頭文件stdlib.h中for(inti=0;i4;i+)printf(%s,Arri);/Arr_Sort字符數(shù)組排序函數(shù),對數(shù)組內(nèi)的
23、字符串進(jìn)行排序若想實(shí)現(xiàn),去重后輸出,可使用選擇輸出,/即排序后的后一個(gè)與前一個(gè)不同時(shí)輸出if(Str_Cmp_Min(ATmpi,ATmpi-1)!=0)printf(%s,ATmpi);/需包含構(gòu)造函數(shù)Arr_Len/需包含構(gòu)造函數(shù)Arr_Len、/Tmp為排序交換提供字當(dāng)后一個(gè)字符串ATmpj小于voidArr_Sort(charATmpANum1)Str_Cmp_Min、兩參數(shù)的Str_CpyintCM_i=Arr_Len(ATmp);for(inti=0;iCM_i-1;i+)charTmpANum1;符串緩存空間for(intj=i+1;jCM_i;j+)if(Str_Cmp_Min
24、(ATmpi,ATmpj)=2)前一個(gè)字符串ATmpi時(shí),將兩字符串進(jìn)行交換Str_Cpy(Tmp,ATmpi);Str_Cpy(ATmpi,ATmpj);Str_Cpy(ATmpj,Tmp);/Str_Sort對字符串內(nèi)字符排序函數(shù),對Strl按從小到大進(jìn)行排序后輸出char*Str_Sort(charStr1)/需包含Str_Len函數(shù)charTmp;for(inti=0;iStr_Len(Strl)-2;i+)for(intj=i+l;jStrlj)Tmp=Strli;Strli=Strlj;Strlj=Tmp;returnStrl;/Str_Sort對字符串內(nèi)字符排序函數(shù),對Strl排
25、序后存儲到Str2中,Strl保持不變,返回值Str2char*Str_Sort(charStr1,charStr2)需包含Str_Cpy、Str_Len兩個(gè)構(gòu)造函數(shù)Str_Cpy(Str2,Str1);charTmp;for(inti=0;iStr_Len(Str2)-2;i+)for(intj=i+1;jStr2j)Tmp=Str2i;Str2i=Str2j;Str2j=Tmp;returnStr2;/Str_Sort對字符串內(nèi)字符排序函數(shù),對Strl中字符按Num里給的字符順序進(jìn)行排序,Len為Num數(shù)組的元素個(gè)數(shù),最后不足Len長度的原樣拷貝,最后兩位原樣拷貝char*Str_Sort
26、(charStr,intNum,intLen)/需包含Str_Len、Str_Cpy兩個(gè)構(gòu)造函數(shù)intj,i,CMi=Str_Len(Str)-2;因?yàn)樵谑褂胓ets獲取一整行字符串時(shí)最后一位是字符結(jié)尾0,倒數(shù)第二位是換行符也要排除在字符長度之外不能參與字符排序交換charTmpANuml;/ANuml需給定for(i=0;i(CMi/Len)*Len;i+)/選取Str的Len的整數(shù)倍進(jìn)行交換if(i%Len=0)j=0;Tmpi=Str(i/Len)*Len+(Numj+-l);for(i;iCMi+l;i+)/選取Str的Len的余數(shù)部分原樣拷貝,多加一位將倒數(shù)第二位的換行符也拷貝上if
27、(i%Len=0)j=0;Tmpi=Stri;Tmpi=0;/為字符串添加結(jié)尾Str_Cpy(Str,Tmp);returnStr;/Get_Num字符串自動生成列序函數(shù),根據(jù)輸入的字符串大小數(shù)序依次取出對應(yīng)的列號存放到Num數(shù)組中,如:Get_Num(95423,Num),可得列序Num=4,5,3,2,1int*Get_Num(charStr,intNum)/需包含Str_Len、Str_Sort兩個(gè)構(gòu)造函數(shù)文本加密時(shí)使用,使用此列序加密文本intcountk,countj;對Tmp里的字符按從小到大排序?qū)mp里的字符按從小到大排序/Tmp中某一個(gè)字符與Str中的某個(gè)字符/countj用
28、于計(jì)數(shù)Str中第幾個(gè)字符Str_Sort(Str,Tmp);for(inti=0;iStr_Len(Str)-1;i+)countj=0;for(intj=0;jStr_Len(Str)-1;j+)if(Tmpi=Strj)相同時(shí)countj+;與Tmpi相同,故每次i循環(huán)計(jì)數(shù)前時(shí)清為0Numi=j+1;intk=i;countk=1;while(Tmpk-=Tmpk-1)countk+;/countk用于計(jì)數(shù)Tmp中多少個(gè)相同的字符,故每次計(jì)數(shù)前清為1if(countj=countk)j=Str_Len(Str)-1;當(dāng)Tmp中第幾個(gè)相同的字符與Str中第幾個(gè)相同的字符對應(yīng)時(shí)退出循環(huán)retu
29、rnNum;/Get_Num數(shù)組自動生成列序函數(shù),根據(jù)輸入數(shù)組中數(shù)據(jù)的大小數(shù)序依次取出對應(yīng)的列號存放到Num數(shù)組中,如:Get_Num(1,5,4,2,3,Num),可得列序Num=1,4,5,3,2/數(shù)組Num1中元素需從1開始連續(xù)且不相同,Len1為數(shù)組Num1中元素個(gè)數(shù)int*Get_Num(intNum1,intNum2,intLen1)/用于對給定的列序數(shù)組再次求列序,文本解密時(shí)使用,使用此列序還原文本for(inti=0;iLen1;i+)for(intj=0;jLen1;j+)if(Num1j=i+1)Num2i=j+1;returnNum2;/Line_Lock字符串列序鎖函數(shù)
30、,對str中的字符按key中字符密碼換序加密/key中存放任意字符密碼,對符合列排序大小關(guān)系的密碼均可解密char*Line_Lock(charstr,charkey)/需包含函數(shù)兩參數(shù)的Get_Nu、三參數(shù)的Str_SortintkeyTmpANum1;Get_Num(key,keyTmp);Str_Sort(str,keyTmp,Str_Len(key)-1);returnstr;/Line_Key字符串列序匙函數(shù),對str中的字符按key中字符密碼換序解密/key中存放任意字符密碼,對符合列排序大小關(guān)系的密碼均可解密char*Line_Key(charstr,charkey)需包含函數(shù)兩
31、參數(shù)的Get_Num、三參數(shù)的Get_Num、三參數(shù)的Str_SortintkeyTmp1ANum1,keyTmp2ANum1;Get_Num(key,keyTmp1);Get_Num(keyTmp1,keyTmp2,Str_Len(key)-1);Str_Sort(str,keyTmp2,Str_Len(key)-1);returnstr;/需包含函數(shù)兩參數(shù)的Str_LenAph_Lock字符串字母鎖函數(shù),對str中的字符按key中字符密碼換序加密/需包含函數(shù)兩參數(shù)的Str_Lenchar*Aph_Lock(charstr,charkey)for(inti=0;i=A&stri=a&stri
32、z)stri=t-26;則-26,使其依然屬于azelsestri=t;if(stri=0)stri=9;if(stri0)stri+=y;returnstr;字符O對應(yīng)整數(shù)48,若加字符后大于zAph_key字符串字母鎖函數(shù),對str中的字符按key中字符密碼換序加密/key中存放任意字符密碼char*Aph_Key(charstr,charkey)for(inti=O;i=A&stri=Z)是大寫字母t=stri-(keyk+-47);if(t=a&stri=z)大寫字母t=stri-(keyk+-47);if(ta)stri=t+26;則+26,使其依然屬于azelsestri=t;if
33、(striyear2)y1=year2;m1=mouth2;d1=day2;y2=year1;m2=mouth1;d2=day1;sign=-1;elsey1=year1;m1=mouth1;d1=day1;y2=year2;m2=mouth2;d2=day2;/信息輸入要求提示if(ml12)printf(n年沒有d月n,ml);if(dldsm1-1)printf(n%d月沒有d天n,ml,dl);if(m2l2)printf(n一年沒有d月n,m2);if(d2dsm2-l)printf(n%d月沒有d天n,m2,d2);/scanf(%d%d%d%d%d%d,&yl,&ml,&dl,&
34、y2,&m2,&d2);if(yl%400=0)|(yl%4=0&yl%l00!=0)dsl=29;/判斷第一年是否是閏年/判斷是否為同一年/判斷是否為同一年/若是則統(tǒng)計(jì)ml到m2-l/去除ml多加的,加上m2未加的/判斷不是同一年,即yl小于y2時(shí)sum+=dsj-l;/先計(jì)算yl到年if(yl=y2)for(intj=ml;jm2;j+)sum+=dsj-l;sum=sum-dl+d2;elsefor(intj=ml;j=l2;j+)底的天數(shù)sum-=dl;yl+;if(y1!=y2)/判斷此時(shí)的y1是否到了y2的那一年if(y1%400=0|(y1%4=0&y1%100!=0)sum+=
35、366;/若不是判斷是否為閏年/若是閏年,一年是366天elsesum+=365;/若不是閏年,一年是365天y1+;/直到y(tǒng)1為y2的那一年時(shí)結(jié)束循環(huán)/計(jì)算最后一年從年頭開始到m2d-2的天數(shù)if(y1%400=0|(y1%4=0&y1%100!=0)ds1=29;elseds1=28;for(j=1;j=0)i=i%7;returnDatedayi;elsei=-i%7;returnDateday7-i;intgetnum(intN)獲取給定數(shù)字N的位數(shù),10位數(shù)以下inti=0;intS=1;while(Sfor(i=0;in;i+)Mi=N%10;N=N/10;將N轉(zhuǎn)換成最大組合數(shù)/動
36、態(tài)分配一個(gè)長度為n的整形數(shù)組空間,須將整數(shù)N由個(gè)位向高位依次存入Mi中for(i=0;ivn-1;i+)對Mi中的數(shù)據(jù)按從大到小排序for(j=i+1;jn;j+)if(MiMj)t=Mi;Mi=Mj;Mj=t;t=0;for(i=0;in;i+)t=t*10+Mi;returnt;/求出最大排列的數(shù)/返回最大排列的數(shù)值intnumMin(intN)int*M,i,j,t,n=getnum(N);M=(int*)malloc(n*sizeof(int);for(i=0;in;i+)Mi=N%10;N=N/10;for(i=0;in-1;i+)for(j=i+1;jMj)t=Mi;Mi=Mj;M
37、j=t;/求出最小排列的數(shù)/求出最小排列的數(shù)/返回最小排列的數(shù)值for(i=0;in;i+)t=t*10+Mi;returnt;/*intciclNum(intN)/*intciclNum(intN)intt=N,Max;do/求是否存在循環(huán)數(shù)/最大排列數(shù)與最小排列數(shù)之差/最大排列數(shù)與最小排列數(shù)之差printf(%d-%d=%dn,Max,Max-t,t);if(t=N)return0;/若差值t與N再次相同時(shí),退出循環(huán)while(numMax(t)!=Max);/當(dāng)差值的最大排列數(shù),與前一個(gè)最大數(shù)不相同時(shí)一直循環(huán)下去returnMax;*/intciclNum(intN)intciclNum
38、(intN)intt=N,Max,s=0;do/求是否存在循環(huán)數(shù)if(t=N)return0;if(s=100)returnMax;/若差值tif(t=N)return0;if(s=100)returnMax;/若差值t與N再次相同時(shí),退出循環(huán)/設(shè)置一個(gè)循環(huán)斷點(diǎn),以免出現(xiàn)無限循環(huán)/最大排列數(shù)與最小排列數(shù)之差printf(%d-%d=%dn,Max,Max-t,t);/當(dāng)差值的最大排列數(shù),與前一個(gè)最大數(shù)不相Max=numMax(t);t=Max-numMin(t);s+;while(numMax(t)!=Max);同時(shí)一直循環(huán)下去returnMax;/此時(shí)可以求出由A中的元素組成str的方法有N
39、種,以N所代表的元素為返回值voidFunction(charA4,charstr,int&N)printf(nnprintf(nn此文本有%d條字符串,共%dKBnn,TotalStrO,TotalSizeO/1024+1);printf(nnprintf(nn此文本有%d條字符串,共%dKBnn,TotalStrO,TotalSizeO/1024+1);TotalStrO=i;TotalStrO=i;TotalStrO=i;TotalStrO=i;TotalStrO=i;TotalStrO=i;inti;charsTmp30=;for(i=0;i9;i+)inti;charsTmp30=;
40、for(i=0;i9;i+)strcpy(sTmp,str);if(str_inc(sTmp,Ai)=1)str_del(sTmp,Ai);if(sTmp0=0)N+;elseFunction(A,sTmp,N);return;/式中9為A中元素的個(gè)數(shù)當(dāng)Ai為sTmp的子串時(shí)/將Ai從sTmp中刪除當(dāng)變成空串時(shí),N計(jì)數(shù)加一/當(dāng)不是空串時(shí),遞歸調(diào)用/222.項(xiàng)目主體部分/222.1./文本換行起始位置/除main函數(shù)公共部分,以及幾個(gè)構(gòu)造函數(shù)Str_Len部分,可直接引用inti=0,lineNum=1,TotalSizeO=0,TotalStrO=0;charTmp500;printf(nnn
41、nnn請輸入每行字符串個(gè)數(shù),以便按要求輸出Enter鍵確認(rèn)。nnnnnnnnnnnnnnnnnnnntt);scanf(%d,&lineNum);while(fscanf(fpSrc,%s,Tmp)!=EOF)i+;printf(%s,Tmp);fprintf(fpDest,%s,Tmp);if(i%lineNum)=0)printf(n);fprintf(fpDest,n);TotalSizeO+=Str_Len(Tmp);/文本換行結(jié)尾位置/222.2./自定義連接符字符串合并起始位置/除main函數(shù)公共部分,以及幾個(gè)構(gòu)造函數(shù)Str_Len部分,可直接引用inti=0,lineNum=1,
42、TotalSizeO=0,TotalStrO=0;charTmp501,Scanf_Str501;printf(nnnnnn請輸入需要連成一體的字符串個(gè)數(shù)Enter鍵確認(rèn)。nnnnnnnnnnnnnnnnnnnntt);scanf(%d,&lineNum);printf(nn請輸入500字節(jié)的自定義連接符nnEnter鍵確認(rèn)。nnnnnnnnnnnnnnntt);scanf(%s,&Scanf_Str);while(fscanf(fpSrc,%s,Tmp)!=EOF)i+;printf(%s,Tmp);fprintf(fpDest,%s,Tmp);if(i%lineNum)=0)printf(
43、);fprintf(fpDest,);elseprintf(%s,Scanf_Str);fprintf(fpDest,%s,Scanf_Str);TotalSizeO+=Str_Len(Tmp);printf(nnprintf(nn此文本有%d條字符串,共%dKBnn,TotalStrO,TotalSizeO/1024+1);printf(nnprintf(nn此文本有%d條字符串,共%dKBnn,TotalStrO,TotalSizeO/1024+1);Str_Cpy(ATmpi,Tmp);/Str_Cpy(ATmpi,Tmp);/將緩存數(shù)據(jù)存入字符串Str_Cpy(ATmpi,Tmp);/
44、Str_Cpy(ATmpi,Tmp);/將緩存數(shù)據(jù)存入字符串TotalStrO=i;TotalStrO=i;/字符串合并結(jié)尾位置/222.3./文本排序去重主體起始位置/除main函數(shù)公共部分,以及幾個(gè)構(gòu)造函數(shù)Str_Cpy、Str_Len、Str_Cmp_Min部分,可直接引用inti=0,j,ChocNum1=1,ChocNum2=1,TotalStrO=0,TotalStrP=0,TotalSize=0,CM_i=0;charATmpANum2ANum1,TmpANum1;/定義字符串Tmp用于臨時(shí)存儲經(jīng)fscanf函數(shù)從源文件中獲取的字符串printf(nnnnnnnnnnnnnnnn
45、nnnnnnnnnn請選擇:1.整行排序2.全文排序Enter鍵確認(rèn)nnnt);scanf(%d,&ChocNum1);111.將文件內(nèi)容存入臨時(shí)數(shù)組ATmp,并統(tǒng)計(jì)字符串?dāng)?shù)TotalStrO,也是臨時(shí)數(shù)組排序最大位置,順便計(jì)算出總字節(jié)數(shù)TotalSizeif(ChocNum1!=2)/數(shù)據(jù)整行存入字符串緩存/數(shù)據(jù)整行存入字符串緩存/將緩存數(shù)據(jù)存入字符串/數(shù)據(jù)按字符串存入緩存while(fgets(Tmp,ANum1-1,fpSrc)Str_Cpy(ATmpi,Tmp);數(shù)組TotalSize+=Str_Len(ATmpi);i+;TotalStrO=i;elsewhile(fscanf(fp
46、Src,%s,Tmp)!=EOF)TotalStrO=i;TotalStrO=i;數(shù)組TotalSize+=Str_Len(ATmpi);i+;TotalStrO=i;/2.開始對數(shù)組內(nèi)的字符串按從小到大排序相同的數(shù)據(jù)會被排列在一起CM_i=TotalStrO;for(i=0;iCM_i-1;i+)charTmpANum1;/Tmp為排序交換提供字符串緩存空間for(j=i+1;jCM_i;j+)if(Str_Cmp_Min(ATmpi,ATmpj)=2)/當(dāng)后一個(gè)字符串ATmpj小于前一個(gè)字符串ATmpi時(shí),將兩字符串進(jìn)行交換Str_Cpy(Tmp,ATmpi);Str_Cpy(ATmpi,
47、ATmpj);Str_Cpy(ATmpj,Tmp);/3.選擇輸出排序后文本時(shí)進(jìn)行即去重printf(nnnnnnnnnnnnnnnnnnnnnnnnnn是否進(jìn)行去重排序:1.是2.否Enter鍵確認(rèn)nnnt);scanf(%d,&ChocNum2);if(ChocNum2=2)for(i=0;iCM_i;i+)fprintf(fpDest,%s,ATmpi);/將字符串寫入源文件中printf(%s,ATmpi);/寫入源文件同時(shí)屏幕輸出TotalStrP+;if(ChocNum1!=2)fprintf(fpDest,n,ATmpi);/將換寫入源文件中printf(n,ATmpi);/寫入源文件同時(shí)屏幕輸出if(ChocNum1!=1)fprintf(fpDest,n,ATmpi);/將換行符寫入源文件中printf(n,ATmpi);/寫入源文件同時(shí)屏幕輸出TotalStrP+;elsefor(i=0;iCM_i;i+)if(Str_Cmp_M
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 池河鎮(zhèn)七年級歷史下冊 第二單元 遼宋夏金元時(shí)期:民族關(guān)系發(fā)展和社會變化 第7課 遼、西夏與北宋的建立教案1 新人教版
- 八年級地理上冊 3.1自然資源的基本特征教案 (新版)新人教版
- 2024-2025學(xué)年高中物理 第二章 交變電流 第07節(jié) 遠(yuǎn)距離輸電教案 粵教版選修3-2
- 2024-2025學(xué)年高中物理 第七章 機(jī)械能守恒定律 4 重力勢能(1)教案 新人教版必修2
- 江蘇省海安縣實(shí)驗(yàn)中學(xué)高中體育 耐久跑教案2 蘇教版
- 八年級英語上冊 Unit 3 Families Celebrate Together Lesson 15 A Present for Li Ming教案 (新版)冀教版
- 2024-2025學(xué)年高中生物下學(xué)期《基因指導(dǎo)蛋白質(zhì)的合成》教學(xué)設(shè)計(jì)
- 運(yùn)輸車貸款購銷合同(2篇)
- 病毒預(yù)防+課件
- 第13課《唐詩五首·野望》八年級語文上冊精講同步課堂(統(tǒng)編版)
- 蘇教版六年級上冊數(shù)學(xué)期中考試試題帶答案
- 醫(yī)院培訓(xùn)課件:《醫(yī)療質(zhì)量安全核心制度要點(diǎn)解讀》
- 心血管內(nèi)科專病數(shù)據(jù)庫建設(shè)及研究
- DL-T-5161.5-2018電氣裝置安裝工程質(zhì)量檢驗(yàn)及評定規(guī)程第5部分:電纜線路施工質(zhì)量檢驗(yàn)
- 產(chǎn)后康復(fù)-腹直肌分離
- 《光伏發(fā)電工程工程量清單計(jì)價(jià)規(guī)范》
- 最美老師評選述職報(bào)告
- 人工智能在統(tǒng)計(jì)中的應(yīng)用
- 幼兒園:中班社會《桌子底下的動物園》
- GB/T 40734-2021焊縫無損檢測相控陣超聲檢測驗(yàn)收等級
- 《有創(chuàng)動脈血壓監(jiān)測》PPT課件
評論
0/150
提交評論