




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
4.3字符串
字符串常量:"ab123"ab123\0系統(tǒng)自動(dòng)添加
‘\0’(結(jié)束標(biāo)志符)處理字符串的方法有:
字符數(shù)組、CString(string)類和字符指針。4.3.1字符數(shù)組
1.字符數(shù)組如:chars[6];
chars1[2][6];字符數(shù)組若干個(gè)字符字符串a(chǎn)bcdabcd\0字符數(shù)組的初始化
(1)逐個(gè)字符賦初值(2)用字符串為字符數(shù)組初始化chars[10]={'I','','a','m',''.'f','i','n','e'};//s不是字符串chars[10]={"Iamfine"};chars[10]="Iamfine";s是字符串,‘\0’系統(tǒng)自動(dòng)添加(3)字符串?dāng)?shù)組初始化對(duì)二維數(shù)組以字符串形式初始化。chara[4][8]={"COBOL","FORTRAN","PASCAL","C/C++"};注意:對(duì)于二維字符數(shù)組,用兩個(gè)下標(biāo)表示數(shù)組中的一個(gè)字符。
注意不要出現(xiàn)下面的錯(cuò)誤:
chars[10]={“Thisisabook"};chars[10];s="Iamfine";chars[10];s={'I','','a','m',''.'f','i','n','e'};3.字符數(shù)組的輸入/輸出逐個(gè)數(shù)組元素的輸入/輸出
chars1[10];for(i=0;i<10;i++)//一定要輸入10個(gè)字符
cin>>s1[i];//s1中是字符,不是字符串,輸出也必須逐元素進(jìn)行注意:輸入時(shí)各輸入項(xiàng)之間不需加空格分隔
初始化做越界檢查,輸入不做
字符串整體的輸入/輸出
chars1[10],s2[2][5];輸入: 輸出:
cin>>s1; ?
cout<<s1;gets(s1); ?
puts(s1);for(inti=0;i<2;i++) ?
for(i=0;i<2;i++)gets(s2[i]); puts(s2[i]);s1、s2中是字符串,'\0'自動(dòng)添加注意:使用cin>>s1;語(yǔ)句,字符串中不能有空格。函數(shù)gets()和puts()是對(duì)字符串整體輸入/輸出,應(yīng)加#include“stdio.h”命令。
gets(字符數(shù)組名或字符指針變量名); puts(字符數(shù)組名或字符指針變量名); #include"stdio.h"#include"iostream.h"voidmain(){inti;charc[5]={'C','h','i','n','a'};charb[]="China"; for(i=0;i<5;i++) //不能用puts(c);也不能用cout<<c;cout<<c[i];puts(b); //或cout<<b;for(i=0;b[i]!='\0';i++)//正確的,但是壞的,不主張用這種方法
cout<<b[i];}【例4.8】字符串的輸入/輸出
4.字符串處理函數(shù)
使用下面函數(shù)時(shí),應(yīng)加#include“string.h”命令。1.strlen(str)
功能:求str所指向的字符串的長(zhǎng)度。不包括字符串結(jié)束標(biāo)志'\0'。說(shuō)明:str可為字符串常量、字符數(shù)組名或字符指針。2.strlwr(str)
功能:將字符串中的大寫字母轉(zhuǎn)換成小寫字母。說(shuō)明:str為字符串常量、數(shù)組名或字符指針。3.strupr(str)
功能:將字符串中的小寫字母轉(zhuǎn)換成大寫字母。說(shuō)明:str為字符串常量、數(shù)組名或字符指針。4.strcpy(str1,str2)
功能:將str2所指的字符串復(fù)制到str1中。
說(shuō)明:str1和str2為字符數(shù)組名或字符指針,str2還可以是字符串常量。
str1要有足夠大的空間。設(shè):charstr2[10]={“aaa"},str1[10];strcpy(str1,str2);str1={“bb"};str1=str2;5.strcat(str1,str2)
功能:將str2字符串內(nèi)容連接到str1字符串內(nèi)容的后面說(shuō)明:str1要有足夠大的空間。例如:
chars1[20]="abcd";cout<<strcat(s1,“kkk")<<endl;//s1中的內(nèi)容變?yōu)閍bcdkkk6.strcmp(str1,str2)
功能:比較字符串str1和str2的大小。說(shuō)明:從左至右逐個(gè)字符進(jìn)行比較ASCII碼值,直到出現(xiàn)不相同字符或遇到'\0'為止。
str1小于str2 返回-1str1等于str2 返回0 str1大于str2 返回1strcmp(“ABCD”,”BD”);//結(jié)果為:-1#include"stdio.h"#include"string.h"voidmain(){chars[80];while(1){gets(s);if(strcmp(s,"pass"))puts("Invalidpassword.\n");elsebreak;}puts("pass\n");}【例4.9】字符串處理函數(shù)示例
4.4指針和數(shù)組4.4.1指針和一維數(shù)組設(shè)有定義:
inta[6]={10,20,30,40,50,60},*p=a;
下面介紹引用數(shù)組元素的三種方式。
1.下標(biāo)方式 形式:數(shù)組名[下標(biāo)]
2.地址方式
形式:*(地址)
3.指針方式
形式:
*指針變量名假設(shè)有定義floata[10],*p=a;則如下的等價(jià)關(guān)系成立:(1)p<=>a<=>&a[0](2)p+i<=>&a[i](3)*(p+i)<=>*(a+i)<=>a[i]
指針可以作數(shù)組名用即:p[i]<=>a[i]設(shè)有:
p=a;for(i=0;i<10;i++) cin>>a[i];則等價(jià)于:p=a;for(i=0;i<10;i++) cin>>*p++;p=a;for(i=0;i<10;i++,p++) cin>>*p;p=a;for(i=0;i<10;i++) cin>>*(p+i);思考:第三種方法與其它二種區(qū)別何在?分析下列程序:#include<iostream.h>voidmain(){inta[10],i,*p;p=a;for(i=0;i<10;i++)cin>>*p++;;for(i=0;i<10;i++,p++)cout<<*p;}思考:數(shù)組元素能否正確輸出?注意:
①
p與a的區(qū)別p是地址變量,而a是地址常量。②*p++與
(*p)++區(qū)別*p++的++運(yùn)算符作用于指針變量
(*p)++的++運(yùn)算符作用于指針變量所指對(duì)象設(shè)有定義:
inta[6]={10,20,30,40,50,60},*p=a+2;p++、p--、p=p+2a++、a=a+2cout<<*p++;//輸出30cout<<*p;//輸出40cout<<(*p)++;//輸出30
cout<<*p;//輸出314.4.3指針和字符串
可通過(guò)字符指針來(lái)訪問(wèn)字符數(shù)組,二者的區(qū)別:字符數(shù)組字符指針定義chars[6];char*p;初始化chars[]=“china”;char*p=“china”;char*p=s;賦值s[0]=’c’;s[1]=’h’;
//逐個(gè)賦值
cin>>s;gets(s);p=“china”;
//指向字符串常量的首地址
p=newchar[6];或p=s;//應(yīng)使字符指針有確定指向后才能從鍵盤進(jìn)行輸入操作
cin>>p;或gets(p);運(yùn)算字符數(shù)組名s不能進(jìn)行自增或自減運(yùn)算
p是指針變量,可以進(jìn)行自增或自減運(yùn)算
【例4.15】輸入一串字符存儲(chǔ)在字符數(shù)組中,用指針方式逐一顯示字符,并求其長(zhǎng)度。#include"iostream.h"#include"stdio.h"voidmain(){chars[80],*p;gets(s);p=s;//p指向數(shù)組的第一個(gè)元素
cout<<"輸出每個(gè)字符:";while(*p!='\0') cout<<*p++<<"";//指針下移,直到p指向字符串結(jié)束符
cout<<"\n字符串長(zhǎng)度:"<<p-s<<endl;
}4.5程序舉例插入數(shù)據(jù)基本思想:
1)首先要查找待插入數(shù)據(jù)在數(shù)組中的位置k;2)然后從最后一個(gè)元素開始往前直到下標(biāo)為k的元素依次往后移動(dòng)一個(gè)位置;3)第k個(gè)元素的位置空出,將欲插入的數(shù)據(jù)插入?!纠?.17】在有序數(shù)組a中插入數(shù)值xfor(k=0;k<9;k++)if(x<a[k])break;//找到插入的位置下標(biāo)為kfor(i=8;i>=k;i--)a[i+1]=a[i];//從最后元素開始往后移,騰出位置
a[k]=x; 2.刪除數(shù)據(jù)
刪除操作首先也是要找到欲刪除的元素的位置k;然后從k+1到n個(gè)位置開始向前移動(dòng);最后將數(shù)組元素減1。
【例4.18】從數(shù)組中刪除某數(shù)。for(i=0;i<10;i++)if(key==a[i])break;for(j=i;j<10;j++)a[j]=a[j+1];3.二分法查找分析:二分法查找只適合于在已排好序的數(shù)組中進(jìn)行。設(shè)a[low]和a[high]是有序數(shù)組中最小和最大元素,待查找的數(shù)為x。算法描述如下:①開始假設(shè)待查區(qū)間的下界low為0,上界high為N-1。②求待查區(qū)間中間元素的下標(biāo)mid=(low+high)/2,x和a[mid]比較。③若x==a[mid],則查找完畢,結(jié)束程序;若x>a[mid],則繼續(xù)查找的范圍應(yīng)為a[mid]后面的元素,修改查找區(qū)間的下界low=mid+1;若x<a[mid],則繼續(xù)查找的范圍應(yīng)為a[mid]前面的元素,修改查找區(qū)間的上界high=mid-1;④重復(fù)第2、3步,直到找到x;或low>high無(wú)查找區(qū)域,找不到。其中,第3步可用如下程序段實(shí)現(xiàn):請(qǐng)編出完整的程序。if(x==a[mid])break;elseif(x>a[mid])low=mid+1;elsehigh=mid-1;本章難點(diǎn):常見錯(cuò)誤:數(shù)組的指針表示法指向數(shù)組首元素的指針變量與數(shù)組名的本質(zhì)區(qū)別字符數(shù)組處理字符串的要點(diǎn)數(shù)值型數(shù)組與字符數(shù)組的處理區(qū)別引用超界元素用變量定義數(shù)組長(zhǎng)度未控制數(shù)值型數(shù)組的下標(biāo)變化用長(zhǎng)度控制字符數(shù)組的操作引用尚未取得值的元素本章算法小結(jié):1、排序(冒泡、選擇)皆需雙重循環(huán)。外循環(huán)控制遍歷次數(shù),內(nèi)循環(huán)控制某此遍歷過(guò)程中的起終點(diǎn)變化。選擇法:每次遍歷只交換一次元素,交換的為區(qū)間起點(diǎn)和區(qū)間內(nèi)的最小(或最大元素)for(i=0;i<N-1;i++){imin=i;for(j=i+1;j<N;j++)if(a[j]<a[imin])imin=j;t=a[i];a[i]=a[imim];a[imin]=t;}冒泡法:每次遍歷需若干次交換相鄰的元素for(j=0;j<N-1;j++)for(i=0;i<N-1-j;i++)if(a[i]<a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}2、插
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- PLC控制系統(tǒng)的自動(dòng)化送料裝車系統(tǒng)設(shè)計(jì)
- 公共教育餐廳管理辦法
- 高速公路行業(yè)的經(jīng)濟(jì)價(jià)值分析
- 團(tuán)隊(duì)合作薪酬管理辦法
- 數(shù)字時(shí)代青少年網(wǎng)絡(luò)素養(yǎng)教育:文明上網(wǎng)提升機(jī)制的探索
- 粳稻花期性狀的遺傳量化與聚合效應(yīng)分析
- 基于《旅游景區(qū)質(zhì)量等級(jí)的劃分》的4A景區(qū)評(píng)審體系優(yōu)化研究
- 拜占庭藝術(shù)的魅力與傳承
- 民族成人登記管理辦法
- 江蘇牛羊屠宰管理辦法
- PLC基礎(chǔ)知識(shí)課件下載
- 2025年中級(jí)消防設(shè)施操作員(監(jiān)控類)資格理論必背考試題庫(kù)(附答案)
- 2023秸稈類生物質(zhì)能源原料儲(chǔ)存規(guī)范第1部分:存放
- DB11 T 212-2009 園林綠化工程施工及驗(yàn)收規(guī)范
- 感染性腹瀉患者護(hù)理常規(guī)
- 2023年1月國(guó)家開放大學(xué)漢語(yǔ)言文學(xué)本科《古代詩(shī)歌散文專題》期末紙質(zhì)考試試題及答案
- 2025年房東租房合同模板電子版
- 2025年中國(guó)智能城市軌道交通行業(yè)市場(chǎng)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略咨詢報(bào)告
- 車輛檢測(cè)機(jī)構(gòu)整改報(bào)告模板
- DB37-T 2040-2023 金屬礦山尾礦干排安全技術(shù)規(guī)范
- 二零二五年度戶外燒烤場(chǎng)地租賃及食品安全保障服務(wù)協(xié)議3篇
評(píng)論
0/150
提交評(píng)論