C語言初階之陣列詳細介紹

2022-09-21 14:00:10 字數 3799 閱讀 2068

目錄

#include

int main() ;

int i = 0;

int sz = sizeof(arr) / sizeof(arr[0]);

int n = 0;

scanf("%d", &n);

for (i = 0; i < sz - 1; i++)

if (n < arr[i]) //找到插入位置

break;

for (int j = sz - 1; j > i; j--)

arr[j ] = arr[j-1]; //每個位置向後移一位

arr[i] = n; //將n插入到陣列中

for (int j = 0; j < sz; j++)

printf("%d ", arr[j]); //列印結果

return 0;

}上面這個程式可以實現往有序陣列插入數的功能,而插入排序就相當於往有序的陣列中不斷的插入新的數,以上述的程式為基礎,即可實現插入排序功能

#include

int main() ;

int i = 0;

int j;

int sz = sizeof(arr) / sizeof(arr[0]);

for (i = 1; i < sz; i++)

for (i = 0; i< sz; i++)

printf("%d ", arr[i]);

return 0;

}每一次迴圈都是一次插入,同樣有這兩層迴圈的特點。

二維陣列是一維陣列的延伸和發展,二維陣列是一維陣列的巢狀,類似兩層for迴圈,通俗來說二維陣列就是一維陣列的陣列,二維陣列的每個元素都是乙個一維陣列

int arr[5][5];

//二維陣列

我們之前在九九乘法表提到的行列思想,在這裡可以用上了,第乙個5代表這個二維陣列有五行,第二個5代表二維陣列每行有五列,接下來用簡單的圖畫來解釋

我們學習二維陣列的時候,以第一種形式了解即可,但要是想深究,那麼就得了解第二種形式

在學習一維陣列的時候我們可以省略陣列長度,由編譯器自行補充

那麼二維陣列可以嗎?

答案是可以,二維陣列的行可以省略,但是列不可以,因為個數確定,列數確定,行數也可以確定

如int arr[4]=;

int arr[4]=,{},};

第一種方法大家應該可以理解

第二種方法就是利用了二維陣列的性質,每一行都可以看成是乙個一維陣列

{}裡的元素就是這一行的元素

二維陣列和一維陣列一樣,陣列下標都是從零開始的,下面簡單的教大家列印乙個二維陣列

#include

int main();

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

return 0;

}是不是和列印九九乘法表的程式很類似呢,同樣的,二維陣列也離www.cppcns.com不開兩層迴圈,由此可見兩層迴圈的重要性,至於二維陣列的深一層使用,等我們講解掃雷和三子棋的時候就會有所了解

n維陣列實際上是對n-1維陣列的拓展和延伸,按照研究二維陣列的思維就可以一步一步的研究了

接下來便是我們今天的主菜,字元陣列

c語言標準中並沒有字串型別,這也使得與字串有關的操作總是需要字串函式來進行,字元陣列大多數情況下就是用來儲存字串的,但字元陣列有時候並不能看做字串。

字串是以\0為結束標誌

char a[5]=;

這裡的字元陣列a裡並沒有\0,強行以字串形式列印會出錯

當我們沒有對字元陣列初始化,並且以字元形式輸入的時候,忽略了\0,也會出現這種狀況,當然大多數情況下我們還是可以把字元陣列當成字串來用的

字元陣列的輸入方式大致分為兩種字元形式輸入和字串形式輸入

字元形式輸入輸出

//實現輸入輸出之前我們需要用字元陣列作為容器

#include

int main() ;

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

scanf("%c", &arr[i]);

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

printf("%c", arr[i]);

return 0;

}之前提到了getchar和putchar兩個庫函式,接下來使用這兩個專門用來字元輸入輸出的函式來進行

#include

int main() ;

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

arr[i] = getchar();

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

putchar(arr[i]);

return 0;

}字串輸入輸出

#include

int main() ;

scanf("%s", arr);

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

return 0;

}接下來使用puts,gets兩個庫函式

#include

int main() ;

gets(arr);

puts(arr);

return 0;

}//順帶一提,puts在列印完字串之後會自動換行

之前也提到了字串的操作往往需要使用字串函式,除了上述函式之外我們之前函式篇介紹的字串函式我來簡單教大家使用一下

#include

#include程式設計客棧ring.h>

int main() ;

strcpy(arr, "abc");//字串拷貝,將abc拷貝到arr中

strcat(arr, "def");//字串追加,將def追加到arr的\0之後

int len = strlen(arr);//求字串長度,不包括\0

int cmp = strcmp(arr, "abcdef");//字串比較,第乙個大於第二個字串返回大於零的數,

//等於返回0,小於返回小於零的數

printf("%d %d", len, cmp);

printf("%s\n", _strupr(arr));//將字串全部大寫

printf("%s\n", _strlwr(arr));//將字串全部小寫

return 0;

}根據注釋就可以推算結果,當然我這裡的列印字串也使用了利用函式返回值的特點

將下來把我們的所學知識全部串起來,完成下面的字串排序

#include

include

int main() ;//宣告並初始化二維字元數

//組arr

int i, j,flag; //i,j迴圈變數,flag為判斷二維陣列是否有序

//的變數

char t[20] = ;

for (i = 0; i < 5; i++) //列印二維字元陣列,以字串形式

puts(arr[i]);

printf("以上為未排序的二維字元陣列\n"); // 給程式列印結果進行解釋

for (i = 0; i < 4; i++)

} if (flag) //若一輪迴圈下來flag仍然等於1,則

//未進行位置互換,此時打破迴圈,減少沒必要的操作

break;

} for (i = 0; i < 5; i++) //列印氣泡法排序後的二維字元陣列,以字串形式

puts(arr[i]);

return 0;

}

詳解C語言初階之陣列

目錄 所謂陣列 array 就是具有相同資料型別的集合,存放的資料型別即陣列本身的型別。可以發現儲存的都是int型 補充 除錯小技巧 除錯視窗 按f5進行除錯,開啟選單欄中的除錯 視窗 監視 隨便開啟乙個監視視窗,輸入arr,將程式執行過arr的初始化即可觀察到arr內部進行的初始化 a 完全初始化...

C語言初階作業題 陣列

1.關於一維陣列初始化,下面哪個定義是錯誤的?a.int arr 10 b.int arr c.int arr 1,2,3,4,5,6 d.int arr 10 答案解析 a 正確,10個int的一段連續空間,前6個位置被初始化為1,2,3,4,5,6,其他位置為0 b 正確,陣列中有6個空間,並被...

C語言初階 函式

數學中我們常見到函式的概念。但是c語言中的函式是什麼呢?維基百科中對函式的定義 子程式 c語言中函式的分類 庫函式自定義函式 為什麼會有庫函式?開發效率高 穩定性好。這裡我們簡單的看看 www.cplusplus.com 簡單的總結,c語言常用的庫函式都有 自定義函式和庫函式一樣,有函式名,返回值型...