《IOS C語言》一維陣列 陣列排序 字元陣列

2021-07-04 22:20:22 字數 3597 閱讀 5807

一:一維陣列

陣列陣列也是一種構造型別(跟列舉類似,是乙個構造型別),相同資料型別組成的新資料型別,陣列的每乙個成員成為乙個陣列元素;

陣列是一串「連續」的記憶體空間,並且型別相同;

格式:型別修飾符 陣列名[常量表示式(可直接是常量,也可是是定義的常量字元)]=;這裡的常量表示式表示有多少個元素,比元素的下標要多1,因為下標是從0開始的。如下例子:

int a[5]=;這裡表示整型的陣列名為a的陣列有5個元素(a[0],a[1],a[2],a[3],a[4]),並且全賦初值為0;

但是int a[5]=;則表示只有首個元素a[0]=1,其他預設為0,跟上面的有所不同;

int a=;這個陣列的長度[ ]的值則由後面的的個數決定;

常用的有:(1)int a[2]=或(2)int a[5]=

其他型別的:跟整型陣列一樣的定義方法

浮點型的陣列:float b=;

字元型的陣列:char str="iphone5";注意的是這裡str[ ]陣列的長度比實際的字串的字元個數要多一位,因為字串的結束符是『\0』;但是char str=;這種的陣列長度就實實在在的等於字元的個數。

注意:系統不會檢驗陣列元素的下標是否越界的問題,因此需要自己注意

陣列是乙個整體,不能直接參與運算,只能對單個元素進行處理,這裡就必須用到迴圈實現,如下練習:

課上練習:

練習1:定義乙個具有20個元素的陣列,每個元素的取值範圍是30~70,並且陣列的和

int a[20]=;

int sum=0;

for(int i=0;i<20;i++)

printf("%d",sum);

//    //整體列印方法

//    for(int i=0;i<20;i++)

//    printf("sum=%d",sum);

練習2:

複製乙個陣列,即兩個陣列容量一樣的,把其中乙個陣列的元素複製到另乙個陣列中

int a[5]=;

int b[5]=;

for(int i=0;i<5;i++)

for(int i=0;i<5;i++)

練習3

生成2個陣列,每個陣列都有10個元素,元素取值範圍是20~40,對應元素相加,放到另乙個陣列中(一共三個元素)

int a[10]=;

int b[10]=;

int c[10]=;

for(int i=0;i<10;i++)

//    for(i=0;i<10;i++)

二:陣列排序

主要學習了氣泡排序(由小到大,或者由大到小排序),主要使用兩個for迴圈,外層迴圈控制比較的趟數,比比較的個數要少一(count-1),內層迴圈則控制比較的輪數,比外層比較的趟數少i,(count-1-i);如下練習

隨機產生10個20~40之間的數,並且對10個數有小到大排序

int const n=20;

int i;

int a[n]=;

printf("\n原來的順序:");

for(i=0;ia[j+1])}}

//注意,i=0,j=0,而不是從1開始,因為a[j],從a[0]開始,也就是j=0開始,j

三:字元陣列

//定義有兩種形式:

char c1=;

char c2[20]="iphone";

//後面這個是由『\0』結束識別符號的,所以比上面的那種多一位『\0』

//while迴圈——》計算字元陣列的字元個數

用while迴圈計算字元個數,但這種演算法並不能應用於c2[20]="iphone"的字元個數統計,因為它有個結束符'\0',\但可以count=1;開始算起則可以計算。

int i=0,count=0;

while (c1[i]!='\0')

printf("\ncount=%d\n",count);

//strlen()---->計算字元陣列的字元個數,跟上面的方法實現的結果一樣,但無法計算"iphone"

的字元個數,'\0'

printf("%lu\n",strlen(c2));//等效於上面的while迴圈的方法,字串長度統計是不算'\0'的。

//求位元組數--->用sizeof()運算方法:

printf("%lu\n",sizeof(c1));//sizeof(c1)是乙個運算子//結果為6

printf("%lu\n",sizeof(c2));//結果為20

如果是int型的陣列,則計算位元組數,長度是則需要sizeof(a)/sizeof(int),也就是需要除以4,因為int佔4個位元組,而字元型char則只佔乙個位元組

//字串賦值給字串陣列:strcpy(裝賦值的陣列名,被賦值的陣列名)

如:char c3[20]=;

strcpy(c3, "iphone");//後者賦值給前者

printf("c3=%s\n",c3);

//字串比較strcmp(比較的字串1,比較的字串2),比較後有乙個結果,並用int 型的變數來接收

int result=strcmp(c2, c3);

printf("result=%d\n",result);

//字串拼接strcat(c3, "asf");//後者拼接到前者

strcat(c3, "asf");//後者拼接到前者//賦給c1不行,因為c1沒有定義多少個元素是不行的,系統會報錯。因此要賦值給乙個有一定陣列長度的元素,並且裝得下的陣列名

printf("%s\n",c3);

練習3:

//練習3:查詢字串中的空格數:

//例如:

//「i love ios, i want an iphone5s」6個空格

char a[50]="i love ios, i want an iphone5s";

//    putchar(a[50]);

int count=0;

int i=0;

while(a[i]!='\0')

i++;

}printf("%d\n",count);

//方法2:

for (i=0; a[i]!='\0'; i++)

//    }

//    printf("\ncount=%d\n",count);

//課本例題3:字元陣列與一般的陣列一樣,也可以一次性的輸入

char str[10]=;

printf("請輸入乙個字串:");

scanf("%s",&str[0]);

for(int i=0;i<10;i++)

printf("\n");

printf("\n%s\n",str);

//練習4:

//將字串倒**方法1(只用乙個陣列)

char s1[50]="afjnpue";

//    printf("please input a string:");

//    gets(s1);//會提示出錯,盡量不用咯

printf("原來的是:%s\n",s1);

long count=strlen(s1);

//    printf("%lu\n",count);

char temp;

for (int j=0; j0) }}

PHP陣列排序,一維陣列,二維陣列排序。

一維陣列排序 1 sort,rsort排序 r reverse表示翻轉,即為降序排列 通過鍵值排序。arr array 10,2,4,1,5,8,7,9 等效於 arr array 0 10,1 2,2 4,3 1,4 5,5 8,6 7,7 9 預設的排序,按鍵值公升序排序,鍵名被從新規定,例如1...

C語言一維陣列排序問題(一)

基本思路 每次將相鄰兩個數比較,將小的 大的 調到前邊。如圖 第一趟後最大 最小 數 沉底 然後進行第二趟,第三趟。如果有n個數,則要進行n 1趟比較,在第一趟中進行n 1次兩兩比較,在第j趟中進行n j次兩兩比較。實現 include int main printf 排序後的順序是 n for i...

《IOS C語言》結構體 結構體陣列

一 結構體宣告 typedef struct 結構體名 結構體別名 如 typedef struct stu stu 二 結構體變數定義 結構體變數 由結構體型別修飾的變數,稱為結構體變數 定義格式 1 struct 結構體名 變數名 2 結構體別名 變數名 這種方法更好,簡便 如 struct s...