C_数组详解
數(shù)組:
一 一維數(shù)組
1.1 一維數(shù)組的定義:
類型符 數(shù)組名[常量表達(dá)式]; int a[10];說明:
1.數(shù)組的命名規(guī)則遵循標(biāo)識符命名規(guī)則。
2.定義時需要指定元素的個數(shù)。方括號里的常量表達(dá)式表示元素的個數(shù)。
3.常量表達(dá)式中不能包含變量;如:int a[n];不合法,c語言不允許對數(shù)組的大小作動態(tài)的定義。
1.2 引用一維數(shù)組:
格式: 數(shù)組名[下標(biāo)]; #include<stdio.h> int main() { #if(0)//逆序輸出一個數(shù)組的元素 #endifint a[10],i;for(int i = 0;i < 10;i++) {a[i] = i;}for(i = 9;i > 0;i--) {printf("%d ",a[i]);}printf("\n");return 0; }1.3 一維數(shù)組的初始化:
1.在定義數(shù)組時對全部數(shù)組賦予初值; eg: int a[10] = {0,1,2,3,4,5,6,7,8,9}; 2.可以給數(shù)組中的一部分賦值 eg: int a[10] = {0,1,2,3,4};//系統(tǒng)會給后面未付賦值的空間賦值0. 3.如果對數(shù)組去不賦值可以不定義長度。 eg: int a[5] = {0,1,2,3,4};int a[] = {0,1,2,3,4}; #include<stdio.h> int main() { #if(0)//逆序輸出一個數(shù)組的元素int a[10],i;for(int i = 0;i < 10;i++) {a[i] = i;}for(i = 9;i > 0;i--) {printf("%d ",a[i]);}printf("\n"); #endif#if(1)//利數(shù)組求Fibonacci數(shù)列,前二十項 #endifint i, fi[20] = {1,1};for(i = 2;i < 20;i++) {fi[i] = fi[i-2] + fi[i-1];}for(i = 0;i < 20;i++) {if(i%5 == 0) {//每行5個數(shù)換行printf("\n");}printf("%12d",fi[i]);}printf("\n");return 0; } #include<stdio.h> int main() { #if(0)//逆序輸出一個數(shù)組的元素int a[10],i;for(int i = 0;i < 10;i++) {a[i] = i;}for(i = 9;i > 0;i--) {printf("%d ",a[i]);}printf("\n"); #endif#if(0)//利數(shù)組求Fibonacci數(shù)列,前二十項int i, fi[20] = {1,1};for(i = 2;i < 20;i++) {fi[i] = fi[i-2] + fi[i-1];}for(i = 0;i < 20;i++) {if(i%5 == 0) {//每行5個數(shù)換行printf("\n");}printf("%12d",fi[i]);}printf("\n"); #endif#if(1)//利用冒泡法進(jìn)行排序。int a[10];int i,j,k;printf("請輸入10個數(shù)字:\n");for(i = 0;i < 10;i++) {scanf("%d",&a[i]);}printf("\n");for(i = 0;i < 9;i++) {for(j = 0;j < 9-i;j++) {if(a[j] > a[j+1]) {k = a[j];a[j] = a[j+1];a[j+1] = k;}}}printf("數(shù)字的大小順序是:\n");for(i = 0;i < 10;i++) {printf("%4d",a[i]);}printf("\n"); #endifreturn 0; }二 二維數(shù)組
2.1 二維數(shù)組定義
類型說明符 數(shù)組名[常量表達(dá)式][常量表達(dá)式]; eg:int [3][4];//三行四列的數(shù)組,形象的可容認(rèn)為三行四列的矩陣float [2][3];說明:在C語言中,二維數(shù)組可以看成是特殊的一維數(shù)組,實質(zhì)上在內(nèi)存中是連續(xù)的地址存儲。是線性存儲的。幾行幾列是邏輯上的表示。
2.2 二維數(shù)組的引用
格式: 數(shù)組名[下標(biāo)][下標(biāo)]; a[2][3];2.3 二維數(shù)組的初始化
1.分行給二維數(shù)組賦初值 eg: int a[3][4] = {{1,2,3,4},{2,3,4,6},{1,3,4,5}}; 2.可以將所有的值放在一個打括弧里。和線性存儲一致。這樣可以對第一維的長度可以不寫,第二維的長度必須寫。 eg: int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; 3.也可以對局部元素賦初值 eg: int a[3][4] = {{1},{0,5},{0,0,9,8}}; #if(0) //二維數(shù)組練習(xí) //1.一個兩行三列的矩陣轉(zhuǎn)換成三行兩列的矩陣int a[2][3] = {{1,2,3},{4,5,6}};int b[3][2],i,j;printf("a矩陣為:\n");for(i = 0;i < 2;i++) {for(j = 0;j < 3;j++) {printf("%5d",a[i][j]);b[j][i] = a[i][j];}printf("\n");}printf("b矩陣:\n");for(i = 0;i < 3;i++) {for(j = 0;j < 2;j++) {printf("%5d",b[i][j]);}printf("\n");}#endif#if(1)//有一個3*4的矩陣,求出矩陣中最大的一個數(shù)int a[3][4] = {{23,4,-2,3},{4,45,9,-45},{31,67,45,0}};int i,j,row,col,max;max = a[0][0];for(i = 0;i < 3;i++) {for(j = 0;j < 4;j++) {if(a[i][j] > max) {max = a[i][j];row = i;col = j;}}}printf("最大的元素為:%d\n 第%d行\(zhòng)n 第%d列\(zhòng)n",max,row,col); #endifreturn 0; }三 字符數(shù)組
3.1 定義字符數(shù)組
char c[10];//包含10個字符3.2 字符數(shù)組的初始化
char c[12] = {'I',' ','a','m',' ','l','i','k','e','c','/','c++'};說明:字符數(shù)組必須初始化,如果提供的處置個數(shù)大于數(shù)組的個數(shù)則會出現(xiàn)語法錯誤,如果小于數(shù)組長度,系統(tǒng)會給最后一個自動補(bǔ)'\0';如果兩者相等即可省略個數(shù)。 char c[] = {'I',' ','a','m',' ','l','i','k','e','c','/','c++'};
二維字符數(shù)組初始化;
char diamond[5][5] = {{'','',''},{'','','','',''},{'','','','',''},{'','','','',''},{'','',''}}//代表一個菱形
3.3 字符數(shù)組的引用
#include<stdio.h> int main() { #if(1) //利用字符二維數(shù)組輸出一個菱形char diamond[5][5] = {{' ',' ','*'},{' ','*',' ','*',' '},{'*',' ',' ',' ','*'},{' ','*',' ','*',' '},{' ',' ','*'}};//沒有的字符有個空格int i,j;for(i = 0;i < 5;i++) {for(j = 0;j < 5;j++) {printf("%c",diamond[i][j]);}printf("\n");}#endifreturn 0; }3.4 字符串和字符串結(jié)束的標(biāo)志
在C語言中,字符串是作為字符數(shù)組來處理的。定義一個字符串就會利用一個一維數(shù)組來存放。字符中的字符是逐個放到數(shù)組中的,兩者的長度是相同的。
為了測定字符串的實際長度,C語言規(guī)定了一個“字符串結(jié)束的標(biāo)志”,其中有一個'\0',則'\0'前面的為有效長度。
字符串常量使字符數(shù)組初始化
char c[] = {"I love C/C++"}; or char c[] = "I love C/C++";而下面的并不等價
char c[12] = {'I',' ','l','o','v','e','C','/','C','+','+'};
不等價
char c[12] = {'I',' ','l','o','v','e','C','/','C','+','+','\0'};
說明:字符數(shù)組并不要求他的最后一個字符'\0',根據(jù)自己的需求定義。而系統(tǒng)會給字符串添加一個'\0',便于測定字符串的實際長度。由于字符串的處理方式是字符數(shù)組的形式,為了處理方式一致可對字符數(shù)組也認(rèn)為的添加'\0',便于處理。
轉(zhuǎn)載于:https://www.cnblogs.com/intelwisd/p/8060419.html
總結(jié)
- 上一篇: Linux 常用命令二 pwd cd
- 下一篇: 软件测试白皮书-等价类