陣列
知識點:
一.一維陣列
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.乙個陣列元素實質上市乙個變數名,代表記憶體中的乙個儲存單元,乙個陣列佔據的是一連串連續...