C_Lab8-4new_指針與字符數(shù)組_第1頁(yè)
C_Lab8-4new_指針與字符數(shù)組_第2頁(yè)
C_Lab8-4new_指針與字符數(shù)組_第3頁(yè)
C_Lab8-4new_指針與字符數(shù)組_第4頁(yè)
C_Lab8-4new_指針與字符數(shù)組_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論