




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章數組1.熟練掌握一維數組、二維數組、字符數組的定義、初始化。2.熟練掌握數組元素的引用方法。3.熟練掌握C程序處理字符串的常用方法。學習目標主要內容一維數組字符數組和字符串二維數組
字符型數組也是一維數組。在定義字符型數組的同時可對其初始化,用{}將初始化數據括起。例如:語句charstr1[]={‘p’,‘r’,‘o’,‘g’,‘r’,‘a’,‘m’};定義了一個有七個元素的字符數組str1[],并用花括號中的字符常量對數組進行初始化。下面的語句實現的是同樣的功能:
charstr1[]={112,114,111,103,114,97,109};所不同的是,花括號中的數據不是字符常量本身,而是字符常量相應的ASC代碼值。設數組str1[]從地址為2000H的內存單元開始存放,由于一個字符型數據占一個字節(jié),所以各數組元素的存儲單元地址從2000H到2006H。
5.2字符型數組與字符串
一.字符型數組
字符型數組str1在內存中的存儲情況:
【例5-4】從鍵盤輸入十個字符,統(tǒng)計字符'g'出現的次數。
#include<stdio.h>
voidmain(){intcounter=0,i;charc[10];printf("Pleaseinputtencharacters\n");for(i=0;i<=9;i++)scanf("%c",&c[i]);for(i=0;i<=9;i++)if(c[i]!='g')continue;elsecounter++;printf("Charatergappears%dtimes.\n",counter);
}C語言不支持字符串變量,而是通過字符數組對字符串進行存儲和處理。字符數組的一個元素對應于字符串中的一個字符,最后用轉義字符“\0”(ASC碼表中的NULL字符)作為字符串的結束符。因此,n個字符的字符串,須占用n+1個字節(jié)的內存空間。二.字符串可以用字符串對字符數組初始化,其格式為:char字符數組名[元素個數]="字符串";或:
char字符數組名[]="字符串";
例如,語句:charstr2[]=“program”;定義了字符數組str2[],并用字符串"program"對其初始化。
2000H'p'2001H'r'2002H'o'2003H'g'2004H'r'2005H'a'2006H'm'2007H'\0'
假定數組str2[]從地址為2000H的內存單元開始存放,str2[]在內存中的存儲情況如下圖所示:
【例5-5】使用scanf()函數和printf()函數輸入并輸出字符串。
#include<stdio.h>
voidmain()
{charstr[]="whatisyourname?";charname[20];printf("%s\n",str);scanf("%s",name);printf("\nMynameis%s.\n",name);
}輸出對象以字符數組名str表示不可將name寫成&name【例5-6】編程實現字符串復制,同時將小寫字母變換成大寫字母。分析:由于在程序中不能將一個字符串賦值給另一個字符數組,所以采用逐個字符賦值的辦法實現字符串復制。注意:字符串結束符“\0”
也是字符串的組成部分。#include<stdio.h>
voidmain()
{chara[20],b[20];inti=0;printf("Pleaseenterastring:\n");scanf("%s",a);dob[i]=(a[i]>='a'&&a[i]<='z')?a[i]-32:a[i];
while(a[i++]!='\0');printf("Copyedstring:%s\n",b);}三.常用的字符串處理函數為了方便對字符串的處理,C語言提供了若干字符串處理函數。在使用這些函數時,應在程序的開始使用預處理命令:
“#include<stdio.h>”
或“#include<string.h>”1.字符串輸入函數gets()gets()函數的作用是:從鍵盤上輸入一個字符串,并把它存放在參數所指示的字符數組中,輸入的字符串以<回車>作為結束。函數gets()的調用格式:
gets(字符數組名)
如果函數調用成功,將返回字符數組的首地址,否則,返回空值NULL。
2.字符串輸出函數puts()
函數puts()的作用是:將參數中提供的字符串輸出到顯示屏。函數puts()的調用格式:
puts(字符數組名或字符串常量)
如果函數調用成功,將返回字符串結束符“\0”,否則,返回一個非0值。
說明:在使用gets()、puts()函數之前,應當使用預處理命令
#include<stdio.h>。3.求字符串長度函數strlen()
函數strlen()的作用是:統(tǒng)計由參數提供的字符串所包含的字符個數(字符串末尾的“\0”
不計在內)。函數strlen()的調用格式:
strlen(字符數組名)
如果函數調用成功,將返回字符個數。
4.字符串連接函數strcat()
函數strcat()的作用是:用于連接二個由參數提供的字符串,將第二個參數提供的字符串連接在第一個參數提供的字符串之后,成為一個新的字符串。函數strcat()的調用格式:
strcat(字符數組1,字符數組2)
如果函數調用成功,將返回字符數組1。
說明:
(1)字符數組1要定義得足夠大以便能容納連接后的新字符串。
(2)字符數組2既可以是字符數組名,也可以是字符串常量。
例如:
charc[30]="China";puts(strcat(c,"isagreatcountry."));5.字符串拷貝函數strcpy()
函數strcpy()的作用是:用于拷貝由參數提供的字符串,將第二個參數提供的字符串拷貝到由第一個參數提供的字符數組中。該數組中原有的字符串將被覆蓋。函數strcpy()的調用格式:
strcpy(字符數組1,字符數組2)
如果函數調用成功,將返回字符數組1。說明:字符數組2既可以是字符數組名,也可以是字符串常量。6.字符串比較函數strcmp()
函數strcmp()的作用是:用于比較二個由參數提供的字符串的大小。比較二個字符串的大小,就是依次比較二個字符串中字符的
ASC代碼值,若二個字符串中各對應位置上的字符都相同,則認為這二個字符串相等。若第一個字符串中某個位置上字符的ASC代碼值大于第二個字符串中對應位置上字符的ASC代碼值,而在此之前二個字符串中對應位置上的字符都相同,則認為第一個字符串大于第二個字符串。反之,則認為第二個字符串大于第一個字符串。
函數strcmp()的調用格式:
strcmp(字符數組1,字符數組2)
如果函數調用成功,返回值如下:為0,當字符數組1等于字符數組2
返回值:為1,當字符數組1大于字符數組2
為–1,當字符數組1小于字符數組2
例如,比較字符串“English”和“England”,按上述規(guī)則,
strcmp(“English”,“England”)的返回值為1,而strcmp("England","English")
的返回值為-1。說明:字符數組1、字符數組2既可以是字符數組名,也可以是字符串常量。【例5-7】預先設定以字符串“123456”為密碼,再從鍵盤輸入一個字符串,若和密碼相符,顯示:Welcome!,否則顯示:Sorry!#include<stdio.h>#include<string.h>voidmain(){charpw[]="123456",c[10];printf("Pleaseinputyourpassword:\n");gets(c);if(strcmp(pw,c)==0)printf("Welcome!\n");elseprintf("Sorry!\n");}
必須使用strcmp()函數
8.將字符串中小寫字母轉換成大寫字母函數strupr()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國壓配圈市場調查研究報告
- 2025年中國十字鎖保險柜市場調查研究報告
- 2025年中國凹槽銑刀市場調查研究報告
- 2025年中國全自動電鍍生產設備市場調查研究報告
- 2025年中國五線電阻屏市場調查研究報告
- 2025年中國專業(yè)攝像頭市場調查研究報告
- 2025年中國七彩片市場調查研究報告
- 2025年中國PACS軟件市場調查研究報告
- 2025年中國2,3-環(huán)氧丁烷市場調查研究報告
- 2025標準自建房屋租賃合同示范文本
- 2024北京西城區(qū)初一(下)期末英語試題和答案
- 2024年廣東廣州黃埔區(qū)穗東街道政府聘員招聘筆試真題
- 寶潔波士頓矩陣案例分析課件
- 【MOOC】電子技術應用實驗2(數字電路綜合實驗)電子科技大學章節(jié)作業(yè)中國大學慕課答案
- DB45T 2306-2021 百香果無病毒健康種苗栽培技術規(guī)程
- 電工電子技術(第3版) 課件 1.7 基爾霍夫定律
- 2024年度食品飲料品牌授權區(qū)域代理銷售合同書3篇
- 關于清理35KV高壓架空線路樹障的安全技術措施
- 人音版音樂七年級上冊《友誼地久天長》課件
- 人體損傷致殘程度分級(2017)全文
- 美國加州租房合同范本(2篇)
評論
0/150
提交評論