陣列的使用
//----對一維陣列的輸入
int a[5],i;
//陣列必須先定義後使用,且在定義時,必須指定陣列的長度。比如這裡不能這樣 int a.
for(i=0;i<5;i++)
scanf("%d",&a[i]);
//這裡i<5是給他限定輸入資料個數的範圍,也就是當輸入這麼多資料後,系統不再接收資料
//由於陣列元素儲存型別為int,所以在輸入乙個資料後,想要輸入下乙個資料,可以進行空格或者換行等非整形變數操作,但當char時未必。
/*****************************************
任意輸入一段字元,輸出各個大寫字母的個數
********************************************/
#include
#include
#include
int str[26];
int main()
for(i=0;i<26;i++)
printf("\n");
system("pause");
return
0;}
//----對二維陣列的輸入
int a[2][3],i,j;
for(i=0;i<2;i++) //一維陣列的注釋同樣類似於二維陣列
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
2.字串
字串:是一種以』\0』結尾的字元陣列,』\0』作用是標識字元的結束。
//eg:下面三種表示方式是等價的,其陣列長度均為6
char
str="china";
char
str=;
char
str=;
//但不等價於
char
str=; //陣列長度為5
補充:1:字元實際上就是整形資料,但只佔1位元組記憶體單元,用於儲存該字元所對應的ascii碼值。
其包括:1)常用字元,即直接輸入的用單引號括起來表示的。如』a』,』b』,』+』;
2)轉義字元,以\開頭具有特定含義的。如\absnrtv;\ddd(d是1~3位八進位制字元),\xhh(h是1~2位十六進製制字元),它們均為ascii碼。
2.字串:由雙引號括起來的字串行,且以』\0』為結束標誌。
字串存放形式如下:
3.字串跟字元陣列不是一回事!我們講的只是把字串放在字元陣列中!
這裡的字串是」china」,而字元陣列為str。
亦可以直接定義陣列長度:
char
str[10]="china"; //陣列長度為10,未指定單元字元為nul,其ascii碼值為0
//等價於
char
str[10]=
字元陣列記憶體映像表示如下:
下面簡要說明 字串操作常用函式
1.字串的輸入
1)gets :接收鍵盤的輸入,將輸入的字串存放在字元陣列中,指導遇到回車符時返回,其中回車符』\n』轉換成字串結束標誌』\0』來儲存。
呼叫格式:gets(字元陣列變數名);
eg :
char
str[10];
gets(str);
2)scanf :讀取輸入字元(忽略之前的空格)並儲存到字元陣列中,遇到空格或者回車符輸入操作停止。且會自動在字串後面加』\0』.
eg:
char
str[10];
scanf("%s",str); //這裡的str即是陣列首位址,故不能寫成&str.
//str在輸入字串時使用%s格式控制符.
利用scanf可連續輸入多個字串
char str1[10],str2[20],str3[30];
scanf("%s%s%s",str1,str2,str3);
一般為避免輸入的字串長度超過陣列的大小,可用%ns,n表示域寬限制。如果沒有遇到空格或者回車符,則在讀入n個字元後停止。
eg:
char
str[10];
scanf("%9s",str);
//最多可讀入9個非空格字元,且str最後乙個資料單元新增字串結束標誌'\0'.
2.字串的輸出
1)puts;與gets功能相反
2)printf;使用%s格式控制符,且與%s對應的位址引數字串某一字元的位址,printf將餘下的字元全部輸出,其中』\0』不會被輸出。
eg:
char name="john smith";
printf("the name is:%s\n",name);
printf("the last name is:%s\n",&name[5]);
輸出結果:
is:john smith
the last
name
is:smith
3.字串的長度(以下三個字串操作要包含的.h檔案為string.h)
eg:
char str="0123\0456789";
printf("%d",strlen(str)); //輸出結果為9,\045看做轉義字元
printf("%d",strlen(&str[5])); //輸出結果為4
注:若沒有』\0』,則上面輸出結果為10,5.
4.字串的複製
呼叫格式:strcpy(陣列1變數名,陣列2變數名);
功能:將字串2複製到字串1中去(陣列1的大小必須足夠大以便能存放2的所有字元,包括』\0』)
5.字串的比較
呼叫格式:strcmp(字串1,字串2);
功能:字串的大小不能用」>」「
若1>2,則返回乙個正整數,若1<2,則返回乙個負整數,若=,則返回0.
6.字串的連線
呼叫格式:strcat(陣列1變數名,陣列2變數名);
功能:將字串2連線到字串1的後面,包括結尾符』\0』.要保證字元陣列1的長度足夠大.
C語言之陣列 字串
陣列 一 陣列的定義和賦值 int ages 5 每個元素佔4個位元組,整個陣列的大小為4 元素個數5 int ages 定義陣列可以不宣告長度,後邊大括號裡的元素個數決定陣列的長度 int ages a a 65,所以這個陣列的長度為65 ages 0 29 為某乙個元素賦值或替換 二 陣列的遍歷...
C語言之字串,陣列
注意char a abcdef 與char a abcdef 的區別 1 字串存放的記憶體區域不同 前者存放在常量區,不可修改,後則存放在棧中,可以修改 2 變數a存放的內容不同 前者存放的是乙個位址,而後者存放的是字串 abcdef 因此使用sizeof它們的結果是不同的,分別是4和7 c 是靜態...
C語言之字串
字元就是符號 圖案,在計算機中以整數形式儲存,當需要顯示時會根據ascii表中的對應關係,顯示相應的符號或圖案。字元型別 char 的資料 如字元a,a,0,等 在記憶體中以對應的ascii碼存放,不同字元所對應的ascii碼見下表。計算機用乙個位元組 8個二進位制位 儲存乙個字元,例如,字元a的a...