指針_參考程序_第1頁
指針_參考程序_第2頁
指針_參考程序_第3頁
指針_參考程序_第4頁
指針_參考程序_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、編程題:1、編寫程序,用指針實(shí)現(xiàn)讀入一行數(shù)列,求數(shù)列得與,平均值,最大值、最小值,并且打印它們。#i nclude stdio #in cludelimits void mai n()int array80, * p;i nt n, i, sum=0, max=INT_MIN, min=INT_MAX;/*符號常量INT_MIN與INT_MAX分別表示int型得最小值與最大值,在limits、h中定義*/ prin tf(請確定要輸入得整數(shù)個數(shù)n );scan f(%d,&n);printf(請輸入%d個整數(shù),n);p =array;f or(i=0; i max) max= *p;i

2、f(*p mi n) min= *p;sum=sum + *p; p+;編寫字符串插入函數(shù)char *strins(char *s1, char *s2),符串s1之前,參數(shù)s1, s2為指向字符串得指針。函數(shù)執(zhí)行后(即s1),參數(shù)s1為結(jié)果字符串中原來子串s1得首地址,參數(shù)s2不變。例如:s1=”world”, s2=”hello”,結(jié)果字符串為”helloworld”,s1指向字符h。在main函數(shù)中輸入兩個字符串,調(diào)用該函數(shù)完成字符串得插入,并輸出結(jié)果。指針參考程序、h、hprintf(”輸入得%d個整數(shù)為”,n);p =array;for(i=0; in; i+)prin tf(%d

3、,* p+);p utchar(n);p rintf( p rintf( p rintf( p rintf(以上整數(shù)得累加與為以上整數(shù)得平均值為以上整數(shù)得最大值為以上整數(shù)得最小值為/*輸出所有整數(shù)*/%dn, sum);% 2fn, (float)sum/n);%dn, max);%dn, min);將字符串s2得內(nèi)容插入到字,返回值為結(jié)果字符串得首地址#i nclude stdio、h2、char str180,str280, * p;prin tf(i nput first stri ng:);gets(str1);prin tf(i nput sec ond stri ng:);gets

4、(str2);prin tf(原來得字串s1:);p uts(str1);p=stri ns(str1,str2);printf(插入后得字符串:);p uts(str1);這里puts(str1)與puts(p)得輸出結(jié)果一樣,因?yàn)閜指針實(shí)際上就就是指向str1得第一個元素*/p uts( p);3、編寫字符串函數(shù)char *substr(char *str1, char *str2),判斷字符串str2就是否為str1得子串,如果就是,則返回str1中首次出現(xiàn)子串str2得起始位置,否則,返回NULL值。例 如:str仁”1 amastudent”,str2= ” stu ” ,函數(shù)執(zhí)行后

5、,返回值指向字符s,參數(shù)s1, s2不變。在main函數(shù)中輸入兩個字符串,調(diào)用該函數(shù)判斷第二個字符串就是否為第一個字符串得 子串,并輸出結(jié)果。#inelude char *stri ns(char *s1, char *s2)int len 1=0, le n2=0;char *p1,*p2;p1=s1;while(* p1+)len 1+;p2=s2;while(* p2+)le n2+;/把s1中得每個字符順次向后移動p仁s1+le n1;/do *(p 1+le n2)= *p1; while (p 1-!=s1);II把s2拷貝插入到p1=s1;p2=s2;while(* p2)*p

6、i+=* p2+;return s1;void mai n()/s1/*得前面計(jì)算s1得長度計(jì)算s2得長度Ien2個位置,包括結(jié)束符0指向s1得結(jié)束符0至少要移動一次,因此用dowhile循環(huán)*/*char *substr(char *str1, char *str2);第二個字符串不就是第一個字符串得子串,p為空指針!n);char *substr(char *str1, char *str2)char *p, *q, *s;for(s=str1; *s !=0 ; s+)if (*s = *st /*str1void mai n()char s180, s220, * p; printf(

7、i np ut stri ng1:n);gets(s1);prin tf(i np ut stri ng2:n);gets(s2);p=substr(s1, s2); if (p !=NULL) printf(n prin tf(pelse/*s2為要驗(yàn)證得字串*/第二個字符串就是第一個字符串得子串!n);指針指向字符c!n, *p);prin tf(n中就是否有與str2首字符相同得字符*/for(p=s, q=str2; *p & *q ; p+, q+) /* 判斷接下去得幾個字符就是否相同*/4、if (*p != *q)/*break;if (*q=0)return s;re

8、turn NULL;不相同*/*/*所有字符都相同*/就是子串,返回指向第一個字符得指針*/*沒有匹配得字符串,返回空指針*/編寫字符串函數(shù)int lenstr(char *str),求字符串str得長度。在main函數(shù)中輸入一個字符串,調(diào)用該函數(shù)計(jì)算字符串得長度,并輸出結(jié)果。#i nclude char s80;printf(”gets(s);printf(”請輸入一個字符串以回車結(jié)束:n);該字符串得長度為dn, le nstr(s);in t le nstr(char *str)char *p;int len=0;for(p=str; * p ; P+) len+;return len;

9、編寫字符串函數(shù)char * cutstr(char *str, int n),將字符串str中前面得n個字符刪除,后續(xù)字符前移。函數(shù)執(zhí)行后,參數(shù)str,n不變,如果成功,返回值為str首地址,如果未成功,返回值為NULL例如:str= ”1 am a student”,n=2,函數(shù)執(zhí)行后str=”am a student”。在main函數(shù)中輸入一個字符串與一個正整數(shù)n,調(diào)用該函數(shù)將字符串前面得n個字符刪 除,后續(xù)字符前移,并輸出結(jié)果。編寫一個排序函數(shù)sort,將數(shù)組按照從大到小得順序排序,其中有兩個形式參數(shù),一個為 指向數(shù)組得指針p,另一個為數(shù)組得元素個數(shù)n。在main函數(shù)中輸入10個整數(shù)存入

10、數(shù)組data10中,調(diào)用該函數(shù)對data進(jìn)行排序,并輸5、#in elude #include string、hchar * cutstr(char *str, un sig ned int n); void mai n()char s80, * p;un sig ned int n;prin tf(請輸入一個字符串以回車結(jié)束gets(s);prin tf(請輸入要刪除前面得字符個數(shù)scan f(%d, &n);p=cutstr(s, n);printf(刪除前面%d個字符后字符串為char * cutstr(char *str, un sig ned int n):n);:);:%s

11、n, n, p);/這里p用s替代結(jié)果一樣char *p;if( strle n(str) n)/*str=0;elsefor(p=str+ n; *p; p+)*(p-n )=* p;*(p-n )=0;return str;/*/*要刪除得字符數(shù)大于字符串中實(shí)際字符個數(shù)*/后續(xù)字符前移*/串結(jié)束標(biāo)志*/6、出最后得排序結(jié)果。for(j=0;j n-i-1;j+) if(*(a+j)*(a+j+1) tem p = *(a+j); *(a+j) = *(a+j+1); *(a+j+1) = temp;void mai n(void)int data10;int i;printf(請輸入10個

12、整數(shù):n);for(i=0;i10;i+)sca nf(%d, &datai);sort(data, 10);prin tf(降序排序后得數(shù)組為:n);for(i=0;i10;i+)prin tf(%d , datai);prin tf(n);選做題:編寫程序,用指針實(shí)現(xiàn)讀入字符串s,字符串s1,字符串s2,如果s1就是字符串s得子串,則用s2替換s中得s1,并且打印結(jié)果字符串。 例如s=”abcde123fghijk123mn45”, s仁”123”, s2=”88”,程序執(zhí)行后s=”abcde88fghijk88mn45”#i nclude stdio#in elude stri

13、ng/利用前面設(shè)計(jì)得函數(shù)/char *strins(char *s1, char *s2)將字符串s2得內(nèi)容插入到字符串s1之前/char * cutstr(char *str, int n),將字符串str中前面得n個字符刪除,后續(xù)字符前移II以及c庫函數(shù)char *strstr(char *s1, char *s2)從字符串s1中尋找子串s2第一次出現(xiàn)得#i nclude stdiovoid sort(i nt *a, int n) int i, j, temp;for(i=0;i、h位置,返回指向第一次出現(xiàn)s2得指針,如果沒找到返回NULLchar *stri ns(char *s1,

14、char *s2)in t le n1=0, le n2=0;char *p1,*p2;p1=s1;while(* p1+)len 1+;計(jì)算s1得長度/p2=s2;while(* p2+)len 2+;/把s1中得每個字符順次向后移動Ien2個位置,包括結(jié)束符0P仁s1+le n1;/do *(p 1+le n2)= *p1; while( p1-!=s1);/*計(jì)算s2得長度指向s1得結(jié)束符0至少要移動一次,因此用dowhile循環(huán)*/把s2拷貝插入到s1得前面p1=s1;p2=s2;while(* p2)*p 1+=* p2+;return s1;char * cutstr(char *

15、str, un sig ned int n)char *p;if( strle n( str) n )/*str=0;else要刪除得字符數(shù)大于字符串中實(shí)際字符個數(shù)*/for(p二str+ n; *p; p+)*( P-n )=* P;*(p-n )=0;/*/*后續(xù)字符前移*/串結(jié)束標(biāo)志*/ return str;void mai n()char s180, s220, s320, * p, *q; un sig nedint len 2, le n3; puts(請輸入字符串gets(s1);puts(請輸入字符串gets(s2);puts(請輸入字符串gets(s3);le n2=strle n( s2); len 3=strle n( s3); q=s1;dop=strstr(q,s2);/if(p !=NULL) /s2

溫馨提示

  • 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

提交評論