版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第5章數(shù)組1.熟練掌握一維數(shù)組、二維數(shù)組、字符數(shù)組的定義、初始化。2.熟練掌握數(shù)組元素的引用方法。3.熟練掌握C程序處理字符串的常用方法。學(xué)習(xí)目標(biāo)主要內(nèi)容一維數(shù)組字符數(shù)組和字符串二維數(shù)組
字符型數(shù)組也是一維數(shù)組。在定義字符型數(shù)組的同時(shí)可對(duì)其初始化,用{}將初始化數(shù)據(jù)括起。例如:語句charstr1[]={‘p’,‘r’,‘o’,‘g’,‘r’,‘a(chǎn)’,‘m’};定義了一個(gè)有七個(gè)元素的字符數(shù)組str1[],并用花括號(hào)中的字符常量對(duì)數(shù)組進(jìn)行初始化。下面的語句實(shí)現(xiàn)的是同樣的功能:
charstr1[]={112,114,111,103,114,97,109};所不同的是,花括號(hào)中的數(shù)據(jù)不是字符常量本身,而是字符常量相應(yīng)的ASC代碼值。設(shè)數(shù)組str1[]從地址為2000H的內(nèi)存單元開始存放,由于一個(gè)字符型數(shù)據(jù)占一個(gè)字節(jié),所以各數(shù)組元素的存儲(chǔ)單元地址從2000H到2006H。
5.2字符型數(shù)組與字符串
一.字符型數(shù)組
字符型數(shù)組str1在內(nèi)存中的存儲(chǔ)情況:
【例5-4】從鍵盤輸入十個(gè)字符,統(tǒng)計(jì)字符'g'出現(xiàn)的次數(shù)。
#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語言不支持字符串變量,而是通過字符數(shù)組對(duì)字符串進(jìn)行存儲(chǔ)和處理。字符數(shù)組的一個(gè)元素對(duì)應(yīng)于字符串中的一個(gè)字符,最后用轉(zhuǎn)義字符“\0”(ASC碼表中的NULL字符)作為字符串的結(jié)束符。因此,n個(gè)字符的字符串,須占用n+1個(gè)字節(jié)的內(nèi)存空間。二.字符串可以用字符串對(duì)字符數(shù)組初始化,其格式為:char字符數(shù)組名[元素個(gè)數(shù)]="字符串";或:
char字符數(shù)組名[]="字符串";
例如,語句:charstr2[]=“program”;定義了字符數(shù)組str2[],并用字符串"program"對(duì)其初始化。
2000H'p'2001H'r'2002H'o'2003H'g'2004H'r'2005H'a'2006H'm'2007H'\0'
假定數(shù)組str2[]從地址為2000H的內(nèi)存單元開始存放,str2[]在內(nèi)存中的存儲(chǔ)情況如下圖所示:
【例5-5】使用scanf()函數(shù)和printf()函數(shù)輸入并輸出字符串。
#include<stdio.h>
voidmain()
{charstr[]="whatisyourname?";charname[20];printf("%s\n",str);scanf("%s",name);printf("\nMynameis%s.\n",name);
}輸出對(duì)象以字符數(shù)組名str表示不可將name寫成&name【例5-6】編程實(shí)現(xiàn)字符串復(fù)制,同時(shí)將小寫字母變換成大寫字母。分析:由于在程序中不能將一個(gè)字符串賦值給另一個(gè)字符數(shù)組,所以采用逐個(gè)字符賦值的辦法實(shí)現(xiàn)字符串復(fù)制。注意:字符串結(jié)束符“\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);}三.常用的字符串處理函數(shù)為了方便對(duì)字符串的處理,C語言提供了若干字符串處理函數(shù)。在使用這些函數(shù)時(shí),應(yīng)在程序的開始使用預(yù)處理命令:
“#include<stdio.h>”
或“#include<string.h>”1.字符串輸入函數(shù)gets()gets()函數(shù)的作用是:從鍵盤上輸入一個(gè)字符串,并把它存放在參數(shù)所指示的字符數(shù)組中,輸入的字符串以<回車>作為結(jié)束。函數(shù)gets()的調(diào)用格式:
gets(字符數(shù)組名)
如果函數(shù)調(diào)用成功,將返回字符數(shù)組的首地址,否則,返回空值NULL。
2.字符串輸出函數(shù)puts()
函數(shù)puts()的作用是:將參數(shù)中提供的字符串輸出到顯示屏。函數(shù)puts()的調(diào)用格式:
puts(字符數(shù)組名或字符串常量)
如果函數(shù)調(diào)用成功,將返回字符串結(jié)束符“\0”,否則,返回一個(gè)非0值。
說明:在使用gets()、puts()函數(shù)之前,應(yīng)當(dāng)使用預(yù)處理命令
#include<stdio.h>。3.求字符串長度函數(shù)strlen()
函數(shù)strlen()的作用是:統(tǒng)計(jì)由參數(shù)提供的字符串所包含的字符個(gè)數(shù)(字符串末尾的“\0”
不計(jì)在內(nèi))。函數(shù)strlen()的調(diào)用格式:
strlen(字符數(shù)組名)
如果函數(shù)調(diào)用成功,將返回字符個(gè)數(shù)。
4.字符串連接函數(shù)strcat()
函數(shù)strcat()的作用是:用于連接二個(gè)由參數(shù)提供的字符串,將第二個(gè)參數(shù)提供的字符串連接在第一個(gè)參數(shù)提供的字符串之后,成為一個(gè)新的字符串。函數(shù)strcat()的調(diào)用格式:
strcat(字符數(shù)組1,字符數(shù)組2)
如果函數(shù)調(diào)用成功,將返回字符數(shù)組1。
說明:
(1)字符數(shù)組1要定義得足夠大以便能容納連接后的新字符串。
(2)字符數(shù)組2既可以是字符數(shù)組名,也可以是字符串常量。
例如:
charc[30]="China";puts(strcat(c,"isagreatcountry."));5.字符串拷貝函數(shù)strcpy()
函數(shù)strcpy()的作用是:用于拷貝由參數(shù)提供的字符串,將第二個(gè)參數(shù)提供的字符串拷貝到由第一個(gè)參數(shù)提供的字符數(shù)組中。該數(shù)組中原有的字符串將被覆蓋。函數(shù)strcpy()的調(diào)用格式:
strcpy(字符數(shù)組1,字符數(shù)組2)
如果函數(shù)調(diào)用成功,將返回字符數(shù)組1。說明:字符數(shù)組2既可以是字符數(shù)組名,也可以是字符串常量。6.字符串比較函數(shù)strcmp()
函數(shù)strcmp()的作用是:用于比較二個(gè)由參數(shù)提供的字符串的大小。比較二個(gè)字符串的大小,就是依次比較二個(gè)字符串中字符的
ASC代碼值,若二個(gè)字符串中各對(duì)應(yīng)位置上的字符都相同,則認(rèn)為這二個(gè)字符串相等。若第一個(gè)字符串中某個(gè)位置上字符的ASC代碼值大于第二個(gè)字符串中對(duì)應(yīng)位置上字符的ASC代碼值,而在此之前二個(gè)字符串中對(duì)應(yīng)位置上的字符都相同,則認(rèn)為第一個(gè)字符串大于第二個(gè)字符串。反之,則認(rèn)為第二個(gè)字符串大于第一個(gè)字符串。
函數(shù)strcmp()的調(diào)用格式:
strcmp(字符數(shù)組1,字符數(shù)組2)
如果函數(shù)調(diào)用成功,返回值如下:為0,當(dāng)字符數(shù)組1等于字符數(shù)組2
返回值:為1,當(dāng)字符數(shù)組1大于字符數(shù)組2
為–1,當(dāng)字符數(shù)組1小于字符數(shù)組2
例如,比較字符串“English”和“England”,按上述規(guī)則,
strcmp(“English”,“England”)的返回值為1,而strcmp("England","English")
的返回值為-1。說明:字符數(shù)組1、字符數(shù)組2既可以是字符數(shù)組名,也可以是字符串常量。【例5-7】預(yù)先設(shè)定以字符串“123456”為密碼,再從鍵盤輸入一個(gè)字符串,若和密碼相符,顯示: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()函數(shù)
8.將字符串中小寫字母轉(zhuǎn)換成大寫字母函數(shù)strupr()
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電氣課程設(shè)計(jì)報(bào)告論文
- 零售貸款合同三篇
- 道路工程師工作總結(jié)
- 婦產(chǎn)科護(hù)士工作總結(jié)
- 門診部醫(yī)生團(tuán)隊(duì)近期工作總結(jié)
- 2023-2024學(xué)年重慶市七校聯(lián)盟高一(下)期中語文試卷
- 教材選用與內(nèi)容審定計(jì)劃
- 包裝設(shè)計(jì)師的主要職責(zé)
- 醫(yī)療行業(yè)顧問工作概述
- 【八年級(jí)下冊(cè)地理粵教版】7.4 北京市 同步練習(xí)
- 兒科佝僂病中醫(yī)診療規(guī)范診療指南2023版
- 2023建筑業(yè)10項(xiàng)新技術(shù)
- 2023-2024學(xué)年二年級(jí)數(shù)學(xué)上冊(cè)期末樂考 非紙筆測試B方案 人教版
- 維修工作流程圖
- Y2-90S-4-三相異步電動(dòng)機(jī)的制作-課程設(shè)計(jì)報(bào)告
- 中式烹調(diào)工藝與實(shí)訓(xùn)(第三版) 課件 第10、11章 烹飪美學(xué)、菜肴創(chuàng)新
- 物業(yè)投訴處理培訓(xùn)課件
- 《春秋》導(dǎo)讀學(xué)習(xí)通章節(jié)答案期末考試題庫2023年
- 1.1、供應(yīng)商管理控制流程與風(fēng)險(xiǎn)控制流程圖
- 初二年級(jí)勞動(dòng)課教案6篇
- 箱變遷移工程施工方案
評(píng)論
0/150
提交評(píng)論