版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)8-4 指針與字符數(shù)組【知識(shí)點(diǎn)回顧】1. C語(yǔ)言有字符串常量,無(wú)字符串變量,但往往借助于字符數(shù)組實(shí)現(xiàn)字符串變量的功能。1 字符串常量:形如”hello”。2 用于實(shí)現(xiàn)字符串操作的字符數(shù)組:一定包含有0字符。2. 常用字符串操作函數(shù):1 字符串復(fù)制函數(shù):char * strcpy(char *s1,const char *s2;功能:讀取s2字符串,寫(xiě)入s1,并且返回s1參數(shù)說(shuō)明:參數(shù)s1需要指向某字符數(shù)組,且空間足夠,以保證數(shù)據(jù)的順利寫(xiě)入;參數(shù)s2前的const僅為了說(shuō)明s2的用途僅用于讀取,此操作并不改寫(xiě)參數(shù)2的內(nèi)容2 字符串拼接函數(shù):char * strcat(char *s1,con
2、st char *s2;功能:讀取s2字符串,追加寫(xiě)入s1的末尾,并且返回s1參數(shù)說(shuō)明:參數(shù)s1需要指向某字符數(shù)組,且空間足夠,以保證數(shù)據(jù)的順利寫(xiě)入;參數(shù)s2前的const僅為了說(shuō)明s2的用途僅用于讀取,此操作并不改寫(xiě)參數(shù)2的內(nèi)容3 求字符串長(zhǎng)度函數(shù):size_t strlen(const char *s;功能:返回字符串s中第一個(gè)0之前(不包括0)的字符數(shù)。返回值說(shuō)明:size_t是無(wú)符號(hào)整數(shù)類型,不妨簡(jiǎn)單把返回值作為整數(shù)處理。4 字符串比較函數(shù):int strcmp(const char *s1, const char *s2;功能:逐字符比較字符串s1和s2,如果相同位置的字符相同,繼續(xù)
3、比較下一個(gè),如果不同,則返回不同字符的ASCII碼差值。參數(shù)說(shuō)明:參數(shù)s1需要指向某字符數(shù)組,且空間足夠,以保證數(shù)據(jù)的順利寫(xiě)入;參數(shù)s2前的const僅為了說(shuō)明s2的用途僅用于讀取,此操作并不改寫(xiě)參數(shù)2的內(nèi)容【典型例題】3. 例題1, 4. 例題2, 5. 例題3, 【Q&A】6. Q:字符串和字符有什么區(qū)別?A:字符數(shù)據(jù)沒(méi)有特定的結(jié)束標(biāo)記,僅標(biāo)識(shí)一個(gè)字符,字符串長(zhǎng)度不定,以0作為其結(jié)束標(biāo)識(shí)。7. Q:gets(與scanf(在提取字符串?dāng)?shù)據(jù)輸入的功能上,有什么區(qū)別? A:gets允許提取用戶輸入帶有空格的字符串信息,而scanf則提取用戶輸入的信息,遇到空格時(shí)結(jié)束。8. Q:字符數(shù)組
4、的長(zhǎng)度和字符串長(zhǎng)度有何區(qū)別?如何得到一個(gè)字符串的長(zhǎng)度? A:字符數(shù)組的長(zhǎng)度是在聲明數(shù)組時(shí)確定的,即數(shù)組的長(zhǎng)度(數(shù)組元素個(gè)數(shù)),而字符串的長(zhǎng)度則取決于字符串結(jié)束符0,即從指定位置起,到遇到第一個(gè)0之前的元素個(gè)數(shù)為字符串長(zhǎng)度??梢允褂米址L(zhǎng)度測(cè)算函數(shù)strlen(計(jì)算字符串長(zhǎng)度。9. Q:是否每個(gè)字符數(shù)組都應(yīng)該包含0字符空間? A:不是,因?yàn)椴皇敲總€(gè)字符數(shù)組都作為字符串使用?!緦?shí)驗(yàn)內(nèi)容】1.#include main(char s80; /用于存放用戶輸入的字符串char *p=s;char ch; /用于存放用戶希望刪除的字符int i, j;/*由用戶輸入一個(gè)字符串*/printf(&quo
5、t;Please input a string: "gets(p; /使用字符串輸入函數(shù)接受用戶輸入,送入字符數(shù)組s中/*由用戶輸入一個(gè)字符,送入ch變量*/printf("which character will be deleted? "ch = getchar( ; /使用字符輸入函數(shù)接受用戶字符輸入for(i=0, j=0; pi !='0' i+if(pi != chpj+=pi ;pj = 0 ; puts(p ; /*輸出處理后的字符串*/2.#include #define N 10int main(int lenth(char a
6、;int l,i;char *p,a="ningbodaxue "p=a;printf("%sn",p;l=lenth(a-1 ;printf("%dn",l;while(*(p+l-= ' ' *(p+l='0' ;l-; p=a;printf("%sn",p;l=lenth(a ;printf("%dn",l;int lenth(char aint l=0,i=0;while(ai+!='0'l+;return l;3.編寫(xiě)程序,從鍵盤(pán)輸入一行
7、英文語(yǔ)句,統(tǒng)計(jì)其中含有的單詞數(shù)量。#include main(int chnum=0,word=0,flag=1,linenum=0,sum;char ch,ch1;printf("please enter text to be analyzed:<# to terminate>n"while(ch=getchar(!='#'ch1=ch;if(ch='n'linenum+;flag=1;else if (ch!=' 'if (flagword+;flag=0;elseflag=1;chnum+;printf(&q
8、uot;characters=%d,word=%d,lines=%d,partial line=%dn",chnum+1,word,linenum,ch1='n' ? 0:1;#include #include #define N 10int main(char c;char *p10="zero","one","two","three","four","five","six","seven","ei
9、ght","nine" ;while(c=getchar(!='n'printf("%s," ,pc-48 ;printf("n"10. 4. #include 11. #include 12. 13. int lenth(char a;14. int main(15. 16. int i,j,l,k;17. char temp;18. char a ="acdertgfwyut" ; l= lenth(a;19. for (i=0;i 20. 21. k=i;22. for (j=i+1
10、;j 23. if(aj 24. k=j;25. if(k!=i26. temp=ai;ai=ak;ak=temp;27. 28. printf("%s",a;29. printf("n"30. 31. 32. 33. 34. int lenth(char a35. 36. int l=0,i=0;37. while(ai+!='0'38. l+;39. return l;40. 【課后練習(xí)】41. 選擇題1 下面不正確的字符串賦值或初始化語(yǔ)句是 c 。A char * str; str = ”string”;B char str7=s,
11、 t, r, i, n, g;C char str10; str=”string”;D char str1=”string”, str220; strcpy(str2, str1;2 已知char b5, *p=b; 則正確的賦值語(yǔ)句是 c 。A b=”abcd”; B *b=”abcd”; C p=”abcd”; D *p=”abcd”;3 若已有聲明char s20=”programming”, *ps=s; 則不能引用字母o的表達(dá)式的是 a 。A ps+2 B. s2 C. ps2 D. ps+=2; *ps4 已知: char c8=”beijing”, *s=c; int i; 則下
12、面的輸出語(yǔ)句中錯(cuò)誤的是 b 。A printf(“%sn”, s; B. printf(“%sn”, *s;C. for(i=0; i<7; i+ D. for(i=0; i<7; i+printf(“%c”, ci; printf(“%c”, si;5 已知char s10, *p=s; 則在下列語(yǔ)句中,錯(cuò)誤的語(yǔ)句是 b 。A p=s+5; B. s=p+s; C. s2=p4; D. *p=s0;6 下面判斷正確的是 c 。Achar * a=”china”; 等價(jià)于char *a; *a=”china”;Bchar str10=“china”;等價(jià)于char str10; s
13、tr=“china”;Cchar *s =”china”; 等價(jià)于char *s; s=”china”;Dchar c4=”abc”, d4=”abc”; 等價(jià)于char c4=d4=”abc”;7 下面能夠正確進(jìn)行字符串賦值操作的是: c 。Achar s5=”ABCDE”; Bchar s5=A, B, C, D , E;Cchar *s ; s=”ABCDE”; Dchar *s; scanf(“%s”, s; 1 設(shè)p1和p2是指向同一個(gè)字符串的指針變量,c為字符變量,則以下不能正確執(zhí)行的賦值語(yǔ)句是 。Ac=*p1+*p2; B. p2=cC. p1=p2; D. c=*p1*(*p2
14、; 2 設(shè)有下面的程序段:char s=”china”; char *p; p=s;則下列敘述正確的是 d 。As和p完全相同B數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相等Cs數(shù)組長(zhǎng)度和p所指向的字符串長(zhǎng)度相等D*p與s0相等3 以下正確的程序段是 c 。Achar str20; scanf(“%s”, &str;B. char *p; scanf(“%s”, p;C. char str20; scanf(“%s”, &str2;D. char str20, *p=str; scanf(“%s”, p2;4 以下正確的程序段是 c 。A char str1=”12345”, str2
15、=”abcdef”; strcpy(str1, str2; B char str10, *st=”abcde”; strcat(str, st;C. char str10=” ”, *st=”abcde”; strcat(str, st;D. char *st1=”12345”, *st2=”abcde”; strcat(st1, st2; 5 以下程序段的運(yùn)行結(jié)果是 c 。ALANGUAGE B. language C. LANG D. langUAGE 6 若有語(yǔ)句char s1=”string”, s28, *s3, *s4=”string2”; 則對(duì)庫(kù)函數(shù)strcpy的正確調(diào)用是 d
16、。A strcpy(s1,"string2"B strcpy(s4,"string1"C strcpy(s3,"string1"D strcpy(s2,s1;7 若有聲明語(yǔ)句如下,則不正確的敘述是 d 。char a= “It is mine”;char *p = “It is mine”;A a+1表示的是字符t的地址B p指向另外的字符串時(shí),字符串的長(zhǎng)度不受限制C p變量中存放的地址值可以改變D a中只能存放10個(gè)字符8 已知函數(shù)定義如下,函數(shù)func的功能是 a 。func(char *s1, char *s2while(*s2
17、+ = *s1+;A. 串復(fù)制 B. 求串長(zhǎng) C. 串比較 D. 串反向9 若有聲明char * language=“FORTRAN”, “BASIC”, “PASCAL”, “JAVA”, “C#”;則表達(dá)式language2的值是 b 。A. 一個(gè)字符 B. 一個(gè)地址C一個(gè)字符串 D. 一個(gè)不定值10 若有聲明char * language=“FORTRAN”, “BASIC”, “PASCAL”, “JAVA”, “C#”;則以下描述中錯(cuò)誤的是 a 。A. language+2表示字符串“PASCAL”的首地址B. *language2的值是字母PC language是一個(gè)字符型指針數(shù)組,它包含5個(gè)元素,每個(gè)元素都是一個(gè)指向字符串常量的指針 D. language2 表示字符串“PASCAL”的首地址1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年環(huán)保材料桌子批發(fā)買(mǎi)賣合同范本2篇
- 甜品合伙合同范例
- 債權(quán)合同和買(mǎi)賣合同范例
- 家電定采購(gòu)合同范例
- 門(mén)窗訂購(gòu)簽單合同范例
- 項(xiàng)目介紹合同范例
- 2024三七產(chǎn)品進(jìn)出口貿(mào)易與關(guān)稅優(yōu)惠政策合同3篇
- 私人住建房合同范例
- 合伙做生意 合同范例
- 出售庫(kù)存音箱合同范例
- 金屬冶煉安全知識(shí)培訓(xùn)資料
- 公路工程資料整理
- 牛仔褲項(xiàng)目商業(yè)計(jì)劃書(shū)
- 建立兒童獨(dú)立性的培養(yǎng)
- GB/T 43569-2023首飾和貴金屬貴金屬及其合金的取樣
- 國(guó)開(kāi)電大本科《理工英語(yǔ)4》機(jī)考總題庫(kù)2023年秋期考試版
- ?婦科子宮肌瘤一病一品優(yōu)質(zhì)護(hù)理匯報(bào)
- 人教版數(shù)學(xué)小學(xué)二年級(jí)上冊(cè)無(wú)紙筆測(cè)試題
- 項(xiàng)目總監(jiān)簡(jiǎn)歷模板
- 拉薩硫氧鎂凈化板施工方案
- 《公路隧道設(shè)計(jì)細(xì)則》(D70-2010 )【可編輯】
評(píng)論
0/150
提交評(píng)論