C語言ch063字符數(shù)組_第1頁
C語言ch063字符數(shù)組_第2頁
C語言ch063字符數(shù)組_第3頁
C語言ch063字符數(shù)組_第4頁
C語言ch063字符數(shù)組_第5頁
已閱讀5頁,還剩36頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

2023/2/61上一節(jié)我們學到了二維數(shù)組的聲明、初始化、賦值和引用基本的矩陣運算選擇法排序首先從0到n-1個元素中選出關鍵字最小的記錄交換到第0個位置上。然后再從第1到n個元素中選出次小的記錄交換到第1個位置上,依次類推。[3

5281]第1趟

1

[5283]

第2趟

12

[583]

第3趟1

2

3[85]

第4趟1

2

3

5[8]

選擇法排序(程序段)for

(i

=0;i<n-1;i++)//第i趟排序,將

a[i~n-1]中的最小值與a[i]交換{

min_idx=i;

for

(j

=i+1;j<n;j++)//min_idx是a[i~n-1]中最小值下標

if

(a[j]<a[min_idx])

min_idx

=j;

//a[min_idx]<->a[i]

temp=a[min_idx];

a[min_idx]=a[i];

a[i]=temp;}Entern:5Enter5integers:35281Aftersorted:123582023/2/646.1怎樣定義和引用一維數(shù)組6.2怎樣定義和引用二維數(shù)組6.3字符數(shù)組內(nèi)容Contents2023/2/656.3字符數(shù)組6.3.1

怎樣定義字符數(shù)組6.3.2

字符數(shù)組的初始化6.3.3

怎樣引用字符數(shù)組中的元素6.3.4

字符串和字符串結束標志6.3.5字符數(shù)組的輸入輸出6.3.6

善于使用字符串處理函數(shù)6.3.7

字符數(shù)組應用舉例6.3.1怎樣定義字符數(shù)組charc[10];c[0]='I';c[1]='';c[2]='a';c[3]='m';c[4]='';c[5]='h';c[6]='a';c[7]='p';c[8]='p';c[9]='y';2023/2/66Iam

happyc[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]6.3.2字符數(shù)組的初始化charc[10]={'c','','p','r','o','g','r','a','m'};如初值個數(shù)小于數(shù)組長度,剩余元素自動設為'\0

'2023/2/67cprogram\0c[0]c[1]c[2]c[3]c[4]c[5]c[6]c[7]c[8]c[9]6.3.2字符數(shù)組的初始化

chardiamond[5][5]={ {'','','*'}, {'','*','','*'}, {'*','','','','*'}, {'','*','','*'}, {'','','*'} };2023/2/686.3.3怎樣引用字符數(shù)組中的元素例6.6輸出一個已知的字符串。解題思路:定義一個字符數(shù)組,并用"初始化列表"對其賦以初值用循環(huán)逐個輸出此字符數(shù)組中的字符2023/2/692023/2/610charc[15]

=

{'I','','a','m','','a',

'','s','t','u','d','e','n','t','.'};inti;for

(i

=

0;

i

<

15;

i++)

printf("%c",

c[i]);6.3.3怎樣引用字符數(shù)組中的元素字符數(shù)組長度一定要足夠6.3.3怎樣引用字符數(shù)組中的元素例6.7輸出一個菱形圖。解題思路:定義一個字符型的二維數(shù)組,用"初始化列表"進行初始化用嵌套的for循環(huán)輸出字符數(shù)組中的所有元素。2023/2/6112023/2/612chardiamond[][5]={

{'','','*'},

{'','*','','*'},

{'*','','','','*'},

{'','*','','*'},

{'','','*'}};inti,

j;for(i=0;

i<5;

i++){

for(j=0;

j<5;

j++)

putchar(diamond[i][j]);

printf("\n");}字符串常量(stringliteral)用一對雙引號括起來的字符序列,隱含結束符'\0'"Happy"6個字符'H''a''p''p''y''\0'2023/2/613有效字符字符串結束符字符串的長度:有效字符的個數(shù),不包括'\0'字符串的表示C語言中,用字符數(shù)組存儲字符串以'\0'結尾的字符數(shù)組'\0'代表ASCII碼為0的字符,僅僅是一個結束標志charc[10]=“Ritchie”;Q:如果這個字符數(shù)組用來表示字符串,則最多能存放多少個字符的字符串?9個,因為還要留一個位置給'\0'注意:字符數(shù)組長度和字符串長度的區(qū)別2023/2/6146.3.4字符數(shù)組的初始化charc[10]={"China"};也可簡寫成charc[10]="China";從c[5]開始,元素值均為'\0'2023/2/615China\0\0\0\0\0初始化時數(shù)組長度可省略charc[]="Iamhappy";相當于charc[11]="Iamhappy";2023/2/616單選題下列對字符串的定義中,錯誤的是哪一個?A)charstr[10]="CLanguage";B)charstr[]="CLanguage";C)char*str="CLanguage";D)charstr[]={'C','','L','a','n','g','u','a','g','e',0};下列能正確定義字符串的語句是(

)。A)charstr[]={'\064'};B)charstr="kx43";C)charstr=";D)charstr[]="\0";2023/2/617DA6.3.5字符數(shù)組的輸入char

s[10];

scanf("%s",

s);China↙數(shù)組名s前沒有&,因為數(shù)組名對應數(shù)組首地址輸入遇到空白字符(空格、tab、回車)結束,把空白字符之前的字符賦值給字符數(shù)組,系統(tǒng)自動在空白字符之前的最后一個字符后面加一個'\0'輸入:howareyous:輸入的字符串應短于已定義的字符數(shù)組的長度若等于或大于,不檢查邊界,會引起不確定的行為,演示2023/2/618how\0?

?????6.3.5字符數(shù)組的輸出char

s[10]={"China"};printf("%s",s);如果一個字符數(shù)組中包含多個'\0',則遇第一個'\0'時輸出就結束輸出的字符中不包括結束符'\0'2023/2/619ctype.h字符測試函數(shù)intisalpha(intch);ch是英文字母返回1,否則返回0intisalnum(intch);檢查ch是否是字母或數(shù)字…字符映射函數(shù)inttoupper(intch);inttolower(intch);2023/2/6206.3.6善于使用字符串處理函數(shù)在C函數(shù)庫中提供了一些用來專門處理字符串的函數(shù)stdio.hputsgetsstring.hstrcatstrcpy和strncpystrcmpstrlenstrlwrstrupr21puts(字符數(shù)組名)作用是將一個字符串輸出到終端,遇到'\0'時輸出結束 char

str[20]="China"; puts(str);

輸出China2023/2/6221.puts函數(shù)----輸出字符串chars[10];scanf("%s",s);printf("%s",s);2023/2/623若輸入:howareyou則輸出?2.gets函數(shù)----輸入字符串gets(字符數(shù)組名)作用是輸入一個字符序列到字符數(shù)組,直到遇到一個換行符‘\n’,并自動在最后一個字符后添加一個'\0‘輸入錯誤或到文件尾時,返回NULL,即0。而scanf返回的是EOF,即-1。charstr[20];

gets(str);howareyou↙2023/2/624/*name1.c--readsaname*/#include<stdio.h>#defineMAX81intmain(void){

charname[MAX];/*allotspace*/printf("Hi,what'syourname?\n");gets(name);/*placestringintonamearray*/printf("Nicename,%s.\n",name);

return0;}2023/2/6253.strcat函數(shù)----字符串連接strcat(字符數(shù)組1,字符串2)把字符串2拷貝到數(shù)組1的后面,結果放在字符數(shù)組1中,(覆蓋dest結尾處的'\0')并添加'\0'例

charstr1[30]="hello";

charstr2[]="world";

strcat(str1,str2);

strcat(str1,“!”);printf("%s",str1);

輸出:helloworld!2023/2/626str1要足夠大4.strcpy-字符串復制strcpy(字符數(shù)組1,字符串2)將串2(包括串后的一個'\0')復制到數(shù)組1中charstr1[10],str2[]="China";strcpy(str1,str2);//strcpy(str1,“China”);第二個參數(shù)是串常量也可2023/2/627China\0\0\0\0\0str1str1要足夠大charstr1[10],str2[]="China";str1="China";錯誤str1=str2;錯誤2023/2/628字符串復制必須用strcpystrcpy_s2023/2/629msdn上的函數(shù)原型說明errno_tstrcpy_s(

char*strDestination,//目標串size_t

numberOfElements,//目標串的緩沖區(qū)大小,一般設置為目標串的大小

constchar*strSource//源串);4.strncpy函數(shù)-字符串復制strncpy(str1,str2,intn);將str2中前n個字符復制到str1的前n個字符strncpy(str1,str2,2);將str2中前2個字符復制到str1中,取代str1中原有的前2個字符注意不會自動復制‘\0’,有時需要手動添加charstr1[10],str2[]="China";strncpy(str1,str2,5);str1[5]='\0';2023/2/6305.strcmp函數(shù)----字符串比較strcmp(字符串1,字符串2)比較規(guī)則將兩個串自左至右逐個字符比較,如遇到\0,即全部字符相同,認為兩個字符串相等如果出現(xiàn)不同的字符,則以第一對不同字符的字典序(ASCII碼數(shù)值大?。┍容^結果為準ASCII碼值越大,我們認為字符越大串1>串2返回值>0,相等返回0,否組返回值<0strcmp("China","Korea");strcmp(str1,str2);strcmp(str1,"Beijing");2023/2/6315.strcmp函數(shù)----字符串比較比較的結果由函數(shù)返回值帶回如果字符串1=字符串2,則函數(shù)值為0如果字符串1>字符串2,則函數(shù)值為一個正整數(shù)如果字符串1<字符串2,則函數(shù)值為一個負整數(shù)"A"<"B""a">"A""computer">"compare""these">"that""1A">"$20""CHINA">"CANADA""DOG"<"cat""Tsinghua">"TSINGHUA"2023/2/632#include<stdio.h>#include<string.h>intmain(){

charkey[]="apple";

charbuffer[80];

do{

printf("Guessmyfavoritefruit?");

fflush(stdout);

scanf("%s",buffer);

}while(strcmp(key,buffer)!=0);

puts("Correctanswer!");

return0;}335.strcmp函數(shù)----字符串比較if(str1>str2)printf("yes");錯誤if(strcmp(str1,str2)>0)printf("yes");正確2023/2/6346.strlen函數(shù)----字符串長度strlen(字符數(shù)組)函數(shù)的返回值為字符串中的實際長度,不包括'\0'charstr[10]="China";printf("%d",strlen(str));輸出結果是5也可以直接測試字符串常量的長度strlen("China");2023/2/6357.strlwr函數(shù)----轉換為小寫strlwr(字符串)作用是將字符串中大寫字母換成小寫字母2023/2/6368.strupr函數(shù)----轉換為大寫strupr(字符串)作用是將字符串中小寫字母換成大寫字母2023/2/637例6.8輸入一行字符,統(tǒng)計其中有多少個單詞,單詞之間用空格分隔開。解題思路:問題的關鍵是怎樣確定"出現(xiàn)一個新單詞了"如果當前字符為非空格,而它前一字符是空格,則表示"新的單詞開始了",此時使num累加12023/2/638分析出所有四種情況當前字符上一字符numisspace空格空格不變1空格非空格不變1非空格空格num++0非空格非空格不變02023/2/639Q:isspace和num的初值?1,0Q:如何判斷當前字符是否空格?string[i]=='

'Q:如何判斷上一字符是否空格?isspace

==1charstring[81];inti;intnum=0;//單詞個數(shù)intisspace=1;//前一字符是否空格。0表示不是空格,1表示是空格。gets(string);for(i=0;string[i]!='\0';++i){

//前一字符空格,當前字符不是空格if(string[i]!=‘’&&1==isspace)

++num;if(string[i]!='')

isspace=0;

else

iss

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論