字元陣列及經典例題
阿新 • • 發佈:2018-12-03
字元陣列
首先定義字元陣列的方式與其他陣列不同,有兩種定義方法。
1、char a[]=“第一種定義方法” ;
不定義陣列長度 , 陣列中可以包括 漢字 字母 數字 等;
2、char a[]={‘d’,‘e’,‘z’};
第二種定義方法:陣列中不能有漢字,只能包括除漢字外的字元。
而且更應該注意的是漢字和字元佔用的長度問題,有較大區別,在下面將共同提及。
陣列中常用的函式
gets(s) | 接收一個字串 | 輸入abc,則s=“abc” |
puts(s) | 輸出字串 | s=“abc”,輸出puts(s), 結果:abc |
strlwr(s) | 將陣列s中的小寫字母轉化為大寫 | s=“abc”,輸出strlws(s),結果:ABC |
strupr(s) | 將陣列s中的大寫字母轉化為小寫 | s=“ABC”,輸出strlws(s),結果:abc |
在我們學了陣列函式之後就可以利用起來;
比如說:測量陣列的實際長度
#include<stdio.h> int main() { char s1[]="wohenchang"; char s2[]="我很長"; char s3[]={'w','o','h','e','n','c','h','a','n','g','\0'}; printf("%d %d %d",strlen(s1),strlen(s2),strlen(s3)); return 0; }
下面是輸出結果:
陣列函式的注意事項
1、strlen函式測的是陣列的實際長度,所以不考慮’\0’的長度。
這裡值得注意的是,字串型別的陣列,char a[]=“wohenchang”
它所佔的位元組是11個,因為,除了每個字元佔用一個位元組以外,還需要加上
'\0’這個結束字元,當然這是系統自動生成的,這是字串的區別之一;
2、利用 scanf輸入字串給陣列時;
比如:
#include<stdio.h>
int main()
{
char a[10];
scanf("%s",a);
puts(a);
return 0;
}
輸入wohenchang
結果如下:
但是如果輸入中有空格,比如說:輸入wo hen chang
結果如下:
所以說。在scanf輸入字串的時候,不能有空格,因為空格會被認為是結束符出現了,於是系統自動加上一個’\0’ 自動結束輸出。所以在進行字串輸入的時候儘量用gets函式。
陣列經典例題:冒泡法
冒泡法的大概思想和程式碼都在下方的程式碼裡。
#include<stdio.h>
#define n 10
int main()
{
int b,i,j,t,a[n];//定義a[10]
for(i=0;i<n;i++)//輸入10個數
scanf("%d",&a[i]);
for(b=0;b<n;b++)//迴圈次數,即總共要進行對比的次數
{
for(i=0;i<9-b;i++)//如果從a[0]開始就和a[1]比較,大的往a[9]走,小的往a[0]走
{
if(a[i]>a[i+1])//判斷前後大小
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;//這三條語句的作用就是把小的往前提
}
}
}
for(i=0;i<10;i++)//陣列遍歷
{
printf("%4d",a[i]);
}
return 0;
}
當然,如果要比較更多的資料,只需要該n的定義即可。