程序設(shè)計(jì)基礎(chǔ)之字符串_第1頁(yè)
程序設(shè)計(jì)基礎(chǔ)之字符串_第2頁(yè)
程序設(shè)計(jì)基礎(chǔ)之字符串_第3頁(yè)
程序設(shè)計(jì)基礎(chǔ)之字符串_第4頁(yè)
程序設(shè)計(jì)基礎(chǔ)之字符串_第5頁(yè)
已閱讀5頁(yè),還剩32頁(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)介

程序設(shè)計(jì)基礎(chǔ)C語(yǔ)言程序設(shè)計(jì)2016.12第

11講字符串上一節(jié)內(nèi)容回顧intx[]={4,3,2,1},q;int*p=&x[1];q=(*--p)++;q的值為多少,*p的值為多少?q=4,x[0]=5,*p=5上一節(jié)內(nèi)容回顧inta[4][4];int(*p)[4]=a;

for(i=0;i<2;i++)

for(j=0;j<4;j++)

scanf("%d",(a+i)+j);以下均是合法的地址:*(a+i)+j&a[i][j]a[i]+j*(p+i)+j上一節(jié)內(nèi)容回顧

下面程序的輸出結(jié)果是?inta[3]={1,2,3};intb[3];int*p,*q,i;for(p=a+2,q=b;p>=a;p--,q++)q=p;for(i=0;i<3;i++)printf(“%d”,*q++);*q=*p;q=b;字符串本講

要點(diǎn)字符數(shù)組指向字符串的指針變量字符串處理函數(shù)程序舉例字符串字符字符常量用單引號(hào)括起來(lái)的字符在ASCII表中對(duì)應(yīng)的整數(shù)值‘z’代表的是字符z在ASCII表中對(duì)應(yīng)的整數(shù)值122字符變量實(shí)際上是單字節(jié)整型變量,一般存儲(chǔ)一個(gè)整數(shù)表示其在ASCII表中對(duì)應(yīng)的字符字符串字符串作為一個(gè)整體的字符序列可以包含字母,數(shù)字和特殊字符(*,/,$等)字符串常量用雙引號(hào)括起來(lái)例如:"Hello"字符串在C語(yǔ)言中,字符串是以空字符(’\0’)結(jié)束的字符數(shù)組字符串與字符數(shù)組有區(qū)別字符串必須以’\0’結(jié)尾字符串從字符數(shù)組的第一個(gè)元素開始,到第一個(gè)’\0’結(jié)束字符串的長(zhǎng)度和內(nèi)容都不包括’\0’charname[20];BillGates\0?????????字符串給字符數(shù)組的全部元素賦初值chara[5]={‘C’,’h’,’i’,’n’,’a’};a[0]a[1]a[2]a[3]a[4]‘C’‘h’‘i’‘n’‘a(chǎn)’這個(gè)字符數(shù)組沒(méi)有以‘\0’結(jié)尾,不是字符串字符串給字符數(shù)組的部分元素賦初值chara[5]={‘C’,’h’,’i’};a[0]a[1]a[2]a[3]a[4]‘C’‘h’‘i’‘\0’‘\0’缺省的初值為‘\0’字符串給全部元素賦初值時(shí),可以不指定長(zhǎng)度chara[]={‘C’,’h’,’i’,’n’,’a’};a[0]a[1]a[2]a[3]a[4]‘C’‘h’‘i’‘n’‘a(chǎn)’依然不是字符串字符串chara[]=“China”;用字符串常量給字符數(shù)組賦初值也可以不指定數(shù)組長(zhǎng)度chara[6]=“China”;a[0]a[1]a[2]a[3]a[4]a[5]‘C’‘h’‘i’‘n’‘a(chǎn)’‘\0’來(lái)自字符串常量的結(jié)束字符‘\0’。字符串字符串的輸入輸出有以下方式:逐個(gè)字符輸入輸出%c作為整體一次輸入輸出%s用字符串輸入輸出函數(shù)getsputs字符串用%c逐個(gè)字符的輸入輸出#include<stdio.h>#defineMAX5voidmain(){intn;charc[MAX];for(n=0;n<MAX;n++)scanf("%c",&c[n]);for(n=0;n<MAX;n++)printf("%c",c[n]);}字符串用%s實(shí)現(xiàn)字符串作為整體一次性的輸入輸出#include<stdio.h>#defineMAX5voidmain(){charc[MAX];scanf("%s",c);printf("Showc:\n");printf("%s",c);}輸入和輸出項(xiàng)都是數(shù)組名在輸入時(shí),空格、制表符和換行符都被作為字符串的分隔符,不被讀入在輸出時(shí),一旦遇到‘\0’就結(jié)束字符串用標(biāo)準(zhǔn)庫(kù)提供的輸入輸出函數(shù)#include<stdio.h>#defineMAX5voidmain(){charc[MAX];

gets(c);printf("Showc:\n");

puts(c);}用gets()輸入時(shí),換行符被作為數(shù)據(jù)的分隔符,不被讀入但是,空格和制表符可以被讀入puts()在輸出字符串后自動(dòng)換行,即加一個(gè)’\n’字符串例.輸入一行字符,單詞之間用空格隔開,統(tǒng)計(jì)其中有多少個(gè)單詞Iamfrom…\0算法:逐一檢測(cè)字符,遇到第一個(gè)非空格字符即為一個(gè)單詞的開始,再次遇到空格就表示最新的單詞結(jié)束定義一個(gè)標(biāo)記變量記住當(dāng)前字符的前一個(gè)字符(最近檢測(cè)的)是否是空格字符串i=0word=0c=s[i]!=‘\0’c==‘’word=0i++word==0word=1num++NYNYNY定義標(biāo)記變量word0期待新單詞出現(xiàn)1正在檢測(cè)單詞期待單詞的結(jié)束字符串#include<stdio.h>voidmain(){charc,s[81];inti,num,word;printf("Inputasentence:\n");

gets(s);num=word=i=0;printf("Thereare%dwordsinthissentence.\n",num);}????while((c=s[i])!='\0'){if(c=='')word=0;elseif(word==0){word=1;num++;}i++;}字符串字符串處理庫(kù)字符串處理庫(kù):<string.h>字符串處理函數(shù)strcat(string1,string2)字符串連接,結(jié)果存在1中strcpy(string1,string2)字符串拷貝from2to1strcmp(string1,string2)字符串比較,相等返回0strlen(string)字符串長(zhǎng)(不包括‘\0’)strlwr(string)將字母全小寫strupr(string)將字母全大寫字符串例.任意輸入兩個(gè)字符串,將它們連接成一個(gè)字符串,不使用strcat函數(shù)abc\0xyz\0abcxyz\0字符串#include<stdio.h>voidmain(){charstr1[81],str2[81],str[161];inti,j;gets(str1);gets(str2);for(i=0;str1[i]!='\0';i++)str[i]=str1[i];for(j=0;str2[j]!='\0';i++,j++)str[i]=str2[j];

str[i]='\0';printf("\nNow,yougetanewstring:\n%s\n",str);}指針與字符串字符串char*p;p=″WuhanChina″;printf

(”%s”,p);chars[80];s=″WuhanChina″;printf

(”%s”,s);字符串用字符指針指向一個(gè)字符串

可以不定義字符數(shù)組,而定義一個(gè)字符指針。用字符指針指向字符串中的字符。#include<stdio.h>voidmain(){char*p=″WuhanChina″;

printf

(”%s”,p);}p為字符串指針變量,存放的是首字符的地址,不是整個(gè)字符串通過(guò)移動(dòng)指針變量,可獲得字符串的其他字符字符串對(duì)字符串中字符的存取,可以用下標(biāo)方法,也可以用指針?lè)椒ㄗ址?將字符串a復(fù)制為字符串b

#include<stdio.h>voidmain(){chara[]=″Iamaboy.″,b[20];

inti;

for(i=0;*(a+i)?。健鋅0′;i++)

*(b+i)=*(a+i);*(b+i)=′\0′;//字符串的結(jié)束標(biāo)記for(i=0;b[i]?。健鋅0′;i++)

printf(″%c″,b[i]);}字符串{chara[]=″Iamaboy.″,b[20],*p1,*p2;

inti;

p1=a;p2=b;

for(;*p1!=′\0′;p1++,p2++)*p2=*p1;*p2=′\0′;printf(″stringais:%s\n″,a);

printf(″stringb

is:″);for(i=0;b[i]!=′\0′;i++)

printf(″%c″,b[i]);}必須保證使指針變量p1和p2同步移動(dòng)字符串對(duì)使用字符指針變量和字符數(shù)組的討論雖然用字符數(shù)組和字符指針變量都能實(shí)現(xiàn)字符串的存儲(chǔ)和運(yùn)算,但它們二者之間是有區(qū)別的,不應(yīng)混為一談,主要有以下幾點(diǎn):字符串(1)字符數(shù)組由若干個(gè)元素組成,每個(gè)元素中放一個(gè)字符,而字符指針變量中存放的是地址(字符串第1個(gè)字符的地址),決不是將字符串放到字符指針變量中。字符串(2)指針變量的值是可以改變的,如:例.改變指針變量的值#include<stdio.h>voidmain(){char*a=″IloveChina!″;

a=a+7;

printf(″%s″,a);}程序舉例字符串例.輸入一字符串,內(nèi)有若干個(gè)字符,要求程序?qū)⒆址兴蟹菙?shù)字和字母刪除#include<stdio.h>voidmain(){charstr[81],*p,str2[81],*q;gets(str);for(p=str,q=str2;*p!=‘\0’;p++)if(???)

????;

*q=‘\0’;puts(str2);}if(*p>=‘0’&&*p<=‘9’)

溫馨提示

  • 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)論