一:一維陣列
陣列陣列也是一種構造型別(跟列舉類似,是乙個構造型別),相同資料型別組成的新資料型別,陣列的每乙個成員成為乙個陣列元素;
陣列是一串「連續」的記憶體空間,並且型別相同;
格式:型別修飾符 陣列名[常量表示式(可直接是常量,也可是是定義的常量字元)]=;這裡的常量表示式表示有多少個元素,比元素的下標要多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...