1. 程式人生 > >字元陣列及經典例題

字元陣列及經典例題

字元陣列

首先定義字元陣列的方式與其他陣列不同,有兩種定義方法。
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
結果如下: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的定義即可。