c語言之陣列

2021-09-05 09:14:08 字數 3274 閱讀 4263

陣列

知識點:

一.一維陣列

1. 初始化方法

第一種:完全初始化。依次賦值

如:a[5] = ;

a = ;

第二種:不完全初始化。初始化式中的值從a[0]開始,依次向後賦值,不足的預設用0填充賦值

如:a[5] = ;

第三種:間隔初始化。未賦值的預設用0填充賦值

如:a[5]=;

a[5]=;

a[3000]=;

注:陣列初始化之後不能再整體重新賦值,但可以單獨重新賦值

2. 指標與陣列的結合

如果有 int a[5];

則 a和&a[0]都表示陣列首元素a[0]的首位址。(指向首元素)

而&a則表示陣列的首位址。(指向整個陣列)

3、字元陣列

a、定義:char a[10];字元陣列a長度為10。每個元素只能存放乙個字元。

例如:a[0]='h';a[1]='a';a[2]='p';……

b、初始化:

char a=;

c、c語言中沒有字串變數,字串的輸入、儲存、處理和輸出等必須通過字元陣列實現。

4、字串的輸入。

scanf();可以用%c逐個字元輸入比如char a[6];for(i=0;i<6;i++) scanf("%c",&a[i]);

可以用%s以字串的形式輸入,比如char a[6];scanf("%s",a);注意,a前不用加&,因為a是陣列名,

已經代表了陣列首位址。

注意:以%s輸入時,以第乙個非空白字元開始,終止於第乙個空白字元。比如:輸入how are you

時。只輸出how.

gets();作用為輸入乙個字串。與scanf();功能一致,但空格和回車都存放在陣列中,最後自動加入『\0』.

不會出現上面輸出不全的情況。

呼叫方式為:gets(陣列名);需要包含標頭檔案「stdio.h」.

5、字串的輸出。

printf();可以使用%c逐個字元輸出,比如:char a[6];for(i=0;i<6;i++) printf("%c",a[i]);

可以用%s以字串的形式輸出,比如char a[6];printf("%s",a);

puts();輸出乙個字串,結尾自動換行。

呼叫形式:puts(字元陣列名或字串常量);需包含標頭檔案「stdio.h」

常用字串處理函式(以下函式需要標頭檔案「string.h」)

a、strlen()作用是測試字串長度。這裡不包括『\0』.使用形式strlen(陣列名或字串常量)

b、strcat()作用是連線兩個字串。呼叫方式strcat(字元陣列1名,字元陣列2名);合併後的字串存放在字

符陣列1中。

c、strcmp()比較兩個字串是否相等。呼叫方式strcmp(字串1,字串2);相等時值為0。1>2時為正數。

1<2時為負數。

d、strcpy()複製字串。呼叫方式strcpy(字元陣列1,字串2);2的內容複製到1中。1只能是字元陣列名。

解決問題:

①尋找配對數

#include

using namespace std;

int main()

{int n,i,j,k,m,s=0;

cin>>n;

int a[1001];

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

cin>>a[i];

for(j=1;j<=n;j++)

for(k=j+1;k<=n;k++)

for(m=k+1;m<=n;m++)

if(a[j]*a[k]==a[m]||a[j]*a[m]==a[k]||a[m]*a[k]==a[j])

s++;

cout注意迴圈變數的迴圈範圍,j,k和m要保證都不一樣。

②陣列的逆序重放

需要指標,定義兩個陣列,

#include

using namespace std;

int main()

int a[101],b[101];

int i,j,m=0,n;

cin>>n;

for(i=0;icin>>a[i];

for(j=n-1;j>=0;j--)

b[m]=a[j];

m++;

cout#include

using namespace std;

#define n 5

int a[n][n];

int main() {

int max, min, ni, nj;

int q = 0;

for (int i = 0; i < n; i++) {

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

cin >> a[i][j];

int i, j;

for ( i = 0; i < n; i++) {

max = a[i][0];

for ( j = 0; j < n; j++) {

if (a[i][j]>=max) {

ni = i;

nj = j;

max = a[i][j];

min = max;

for (int k = 0; k < n; k++) {

if (a[k][nj] < min)

min = a[k][nj];

if (max == min) {

q = 1;

cout << ni+1 << " " << nj+1 << " " << max << endl;

break;

if (q == 0)

cout << "not found";

return 0;

④矩陣交換行

#include

using namespace std;

int main()

int a[6][6];

int m,n;

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

for(int j=1;j<=5;j++)

cin>>a[i][j];

cin>>m>>n;

for(int j=1;j<=5;j++)

swap(a[m][j],a[n][j]);

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

for(int j=1;j<=5;j++)

cout感想,,學了那麼久的c,真的是越來越難啊!!

很多時候,可以想到的事情,卻無法用**表示出來。。真的好苦惱。

加油^0^~,還有一周的程式設計。

C語言之陣列

c語言之陣列 一,一維陣列 1,一維陣列的定義 型別符 陣列名 常量表示式 注 1 常量表示式中可以包括常量和符號常量.int a 3 5 是合法的,int a n 是不合法的,c語言不允許對陣列的大小作動態定義 2 如果在被呼叫的函式 不包括主函式 中定義陣列,起長度可以是變數或非常量表示式,可稱...

C語言之陣列

c語言陣列 一 陣列的概念 用來儲存一組資料的構造資料型別 特點 只能存放一種型別的資料,如全部是int型或者全部是char型,陣列裡的資料成為元素。二 陣列的定義 格式 型別 陣列名 元素個數 舉例 儲存5個人的年齡 int agrs 5 在記憶體中開闢4x5 20個位元組的儲存空間 可以在定義陣...

C語言之陣列

一 一維陣列 1.1 一維陣列的定義 1.一維陣列是指數組中的每個元素只帶有乙個下標的陣列。定義方式為 型別說明符 陣列名 常量表示式 1.2 一維陣列元素的引用 1.陣列元素的引用形式為 陣列名 下標表示式 2.乙個陣列元素實質上市乙個變數名,代表記憶體中的乙個儲存單元,乙個陣列佔據的是一連串連續...