一維數(shù)組是數(shù)組中最簡單的,它的元素只需要用數(shù)組名加一個下標,就能唯一地確定元素。如s[9]就是一個一維數(shù)組中的元素。s[9][0]代表二維數(shù)組中的元素,s[9][0][1]代表三維數(shù)組中的元素。
1.定義一維數(shù)組int A[10]
//定義了一個整型數(shù)組,數(shù)組名為A,包含十個元素。
定義一維數(shù)組的一般形式:
類型說明符+數(shù)組名[常量表達式]
??????
(1).數(shù)組名的命名遵循標識符命名規(guī)則。
(2).定義數(shù)組時,需要指定數(shù)組中元素的個數(shù),[]內(nèi)的常量表達式用來表示元素的個數(shù),即數(shù)組長度。??下標從0開始而不是從1開始。
(3).[]內(nèi)的內(nèi)容可以是常量加符號常量加常量,但不能是變量
??只能引用數(shù)組元素而不能調(diào)用整個數(shù)組的元素。
引用數(shù)組元素的表示形式:
數(shù)組名[下標]
例:逆序輸出0,1,2,3,4,5,6,7,8,9
#includeint main()
{int i,a[10];
for(i=0;i<=9;i++)
a[i]=i;
for(i=9;i>=0;i--)
printf(" %d",a[i]);
printf("\n");
return 0;
}
//運行結(jié)果
9 8 7 6 5 4 3 2 1 0
3.初始化一維數(shù)組為啥程序簡潔,常在定義數(shù)組時給數(shù)組中的元素賦值,這稱為數(shù)組的初始化。
(1).全部賦值int A[10]={1,2,3,4,,5,6,7,8,9}
數(shù)組長度是多少就要提供多少元素
(2).部分賦值int A[10]={1,2,3,4,5}
在數(shù)組長度范圍內(nèi),想給前面多少元素賦初值就提供多少元素
(3).全部賦為0int A[10]={0,0,0,0,0,0,0,0,0,0}
//或
int A[10]={0}
未賦值部分自動設(shè)定為0
(4).數(shù)據(jù)個數(shù)確定可不指定數(shù)組長度int A[10]={1,2,3,4,,5,6,7,8,9}
//等價于
int A[]={1,2,3,4,,5,6,7,8,9}
??有且僅當數(shù)據(jù)個數(shù)等于數(shù)組長度時可這樣使用
💡定義數(shù)值型數(shù)組時,凡未被初始化的的元素,系統(tǒng)會自動將它們初始化為0.
若為字符型數(shù)組,則為’\0’,
若為指針型數(shù)組,則為NULL,即空指針。
#includeint main()
{int a[10];
int i,j,t;
printf("請輸入十個數(shù)字:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)
for(i=0;i<9-j;i++)
if(a[i]>a[i+1])
{t=a[i];a[i]=a[i+1];a[i+1]=t;}
printf("從小到大的排列:\n");
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
//運行結(jié)果
請輸入十個數(shù)字:
1 3 5 2 6 8 3 9 10 7
從小到大的排列:
1 2 3 3 5 6 7 8 9 10
三.二維數(shù)組二維數(shù)組常被稱為矩陣。把二維數(shù)組寫成行(row)和列(column)的排列方式,有助于理解二維數(shù)組的邏輯結(jié)構(gòu)。
1.定義二維數(shù)組方法和定義一維數(shù)組類似。
二維數(shù)組數(shù)組的一般形式為:
類型說明符 數(shù)組名[常量表達式][常量表達式]
如:
float a[2][3]
定義a為2x3的數(shù)組。
2.引用二維數(shù)組二維數(shù)組元素的表示形式為:
數(shù)組名 [下標][下標]
數(shù)組元素可以出現(xiàn)在表達式中,也可以被賦值,
如:B[2][3]=A[1][2]/2
int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
這種方法直觀,不易遺漏。第一個花括號的數(shù)據(jù)賦給第一行,其他行以此類推
(2)整體賦值int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
所有元素放在一個花括號內(nèi),按數(shù)據(jù)的排列順序?qū)Ω髟刭x初值。和第一個方法相比,第一個方法更好一些,一行對一行,界限清楚。
(3)部分賦值int a[3][4]={{1},{2},{3}};
只對各行第一列序號為0的元素賦初值,其余元素值為0。
int a[3][4]={{1},{0,4},{0,0,8}}
對各行中某一個元素賦初值,在非零元素少時比較方便。
int a[3][4]={{1,2},{},{3,4}};
對某幾行元素賦初值。
int a[][4]={0,0,3},{},{0,10}};
可以省略一維長度,但要分行賦值
(4)全部賦值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};
一維的長度可以省略不寫,但二維的不能省。系統(tǒng)會根據(jù)二維長度推算出一維長度。
4.舉例二維數(shù)組元素互換
#includeint main()
{int a[2][3]={{1,2,3},{4,5,6}};
int b[3][2],i,j;
printf("數(shù)組 a:\n");
for(i=0;i<=1;i++)
{for(j=0;j<=2;j++)
{printf("%5d",a[i][j]);
b[j][i]=a[i][j];
}
printf("\n");
}
printf("數(shù)組 b:\n");
for(i=0;i<=2;i++)
{for(j=0;j<=1;j++)
printf("%5d",b[i][j]);
printf("\n");
}
return 0;
}
//運行結(jié)果
數(shù)組 a:
1 2 3
4 5 6
數(shù)組 b:
1 4
2 5
3 6
3x4矩陣求大值,以及他的行列號
#includeint main()
{int i,j,row=0,colum=0,max;
int a[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};
max=a[0][0];
for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
{max=a[i][j];
row=i;
colum=j;
}
printf("max=%d\nrow=%d\ncolum=%d\n",max,row,colum);
return 0;
}
//運行結(jié)果
max=10
row=2
colum=1
四.字符數(shù)組字符型數(shù)據(jù)以ASCII碼的形式存儲在存儲單元中,一般占一個字節(jié)。
1.定義字符數(shù)組用來存放字符數(shù)據(jù)的數(shù)組就是字符數(shù)組。在字符數(shù)組中的一個元素內(nèi)存放一個字符。
定義字符數(shù)組的方法和定義數(shù)值型數(shù)組的方法類似。
如:
char a[11]={'I',' ','a','m',' ','L','i','M','i','n','g'};
上面定義了a為字符數(shù)組,包含11個元素。
2.初始化字符數(shù)組對字符數(shù)組初始化,最易理解的方式是使用‘初始化列表’,把各個字符依次賦給數(shù)組中個元素。
如:
char a[11]={'I',' ','a','m',' ','L','i','M','i','n','g'};
將11個字符依次賦給a0~a10這11個元素。
若提供的初值個數(shù)和預定的數(shù)組長度相同,在定義時可以省略數(shù)組長度,系統(tǒng)會自動根據(jù)初值個數(shù)確定數(shù)組長度。
如:
char a[]={'I',' ','a','m',' ','L','i','M','i','n','g'};
也可以定義和初始化一個二維字符數(shù)組。
如:
char a[4][5]={{' ','*',' ','*' ' '},{'*',' ','*',' ','*'},{' ','*',' ','*',' '},{' ',' ','*',' ',' '}};
3.引用字符元素中的元素可以引用字符數(shù)組中的元素得到一個字符。
如:
例一:輸出愛心圖案
#includeint main()
{char a[4][5]={{' ','*',' ','*',' '},{'*',' ','*',' ','*'},{' ','*',' ','*',' '},{' ',' ','*',' ',' '}};
int i,j;
for(i=0;i<4;i++)
{for(j=0;j<5;j++)
printf("%c",a[i][j]);
printf("\n");
}
return 0;
}
//運行結(jié)果
* *
* * *
* *
*
將*號連起來,可以看到一個愛心。
例二:輸出字符串
#includeint main()
{char a[11]={'I',' ','a','m',' ','L','i','M','i','n','g'};
int i;
for(i=0;i<11;i++)
printf("%c",a[i]);
printf("\n");
return 0;
}
//運行結(jié)果
I am LiMing
4.字符串和字符串結(jié)束標志在C語言中,將字符串作為字符數(shù)組來處理。
在實際工作中,人們關(guān)心的往往是字符串的有效長度而不是字符數(shù)組的長度。所以為了測定字符串的實際長度,C語言規(guī)定了一個字符串結(jié)束標志。以字符’\0’作為結(jié)束標志。
若字符數(shù)組中存在若干個字符,前面的9個字符都不是('\0'
),而第10個字符是'\0'
則認為數(shù)組中有一個字符串,有效字符有9個。換而言之,'\0'
前面的字符組成一個字符串。
💡💡💡'\0'
代表ASCII碼中為0的字符。這是一個空操作符,即它什么也不做。起一個供辨別的標志。
char d[]={"I am LiMing"};
//等于
char d[]="I am LiMing";
//等價于(長度為11)
char a[]={'I',' ','a','m',' ','L','i','M','i','n','g','\0'};
//不等價于(長度為10)
char a[]={'I',' ','a','m',' ','L','i','M','i','n','g'};
若有
char c[10]={"China"}
則數(shù)組中前五個元素為:‘C’,‘h’,‘i’,‘n’,‘a(chǎn)’。后面的元素自動設(shè)定為’\0’。
💡💡💡
字符數(shù)組并不要求它的最后一個字符必須是’\0’,像下面這樣寫完全可以:
char c[5]={'C','h','i','n','a'};
是否需要添加’\0’,需要根據(jù)實際判斷。但是由于系統(tǒng)在存儲字符串常量時會自動添加一個’\0’,所以為了使處理方法一致,便于測定字符串的實際長度,常認為的加上一個’\0’。
如:
char c[6]={'C','h','i','n','a','\0'};
這樣做便于引用字符數(shù)組中的字符串
如:
//定義如下數(shù)組
char c[]={"Chinese"};
使用Hello替換原來的字符串,在不加'\0'
的情況下。
數(shù)組中存儲的字符是Hellose'\0'
。加上'\0'
后,再輸出字符串,就會只輸出Hello
。這就是加上了'\0'
的作用
#includeint main()
{char c[]={"China",};
char a[]={'H','e','l','l','o','\0'};
printf("%s\n",a);
printf("%s\n",c);
return 0;
}
//運行結(jié)果
Hello
China
沒有’\0’
#includeint main()
{char c[]={"China",};
char a[]={'H','e','l','l','o'};
printf("%s\n",a);
printf("%s\n",c);
return 0;
}
//運行結(jié)果
HelloChina
China
5。字符串的輸入輸出兩種方法
(1)逐個輸入輸出,使用格式符“%c”輸入輸出一個字符。
(2)整個輸入輸出,使用格式符“%s”輸入輸出一個字符串
如:
#includeint main()
{char c[]={"China",};
printf("%s\n",a);
return 0;
}
//運行結(jié)果
China
6.使用字符串處理函數(shù)
1.puts函數(shù)–輸出字符串一般形式:puts(字符數(shù)組)。
將一個字符串輸出到終端。
作用和printf函數(shù)相同,所以可以用printf函數(shù)代替puts函數(shù)。所以puts函數(shù)不常使用。
用puts函數(shù)輸出的字符串中可以包含轉(zhuǎn)義字符。
一般形式:gets(字符數(shù)組)
作用是:從終端輸入一個字符串到字符數(shù)組,并且得到一個函數(shù)值。
puts函數(shù)和gets函數(shù)都只能輸入或輸出1個字符串,不能寫成
puts(str1,str2);或gets(str1,str2);
4.strcat–字符串連接函數(shù)一般形式:
strcat(字符數(shù)組1,字符數(shù)組2)
作用是將兩個字符數(shù)組中的字符串連接在一起,將字符數(shù)組2接到字符數(shù)組1的后面。字符數(shù)組1的長度必須能包含字符數(shù)組2,即字符數(shù)組1除了有存儲本省存儲的字符串,還要有能容納字符數(shù)組2內(nèi)字符串的空間。
一般形式:
strcpy(字符數(shù)組1,字符串2)
作用是將字符串2復制到字符數(shù)組中
字符數(shù)組1的長度至少等于字符串2的長度。字符數(shù)組1必須為字符數(shù)組名,字符串2可以是字符串常量也可以是字符數(shù)組名。
.一般形式:
strcmp(字符串1,字符串2)
作用是比較字符串1和字符串2的大小。
💡字符串比較的規(guī)則是將兩個字符串自左至右逐個字符比較(按ASCII碼值大小比較),只到出現(xiàn)不同的字符或遇到’\0’為止。
(1)字符全部相同,兩個字符串相等
(2)出現(xiàn)不同字符,則以第一對不相同的字符比較的結(jié)果為準。
💡若比較中兩個字符都是由英文字母組成,那么在英文字典中位置在后面的為大。小寫字母>大寫字母。
比較結(jié)果由函數(shù)值帶回:
相同為0, a>b為正整數(shù),a6.strlen函數(shù)——測字符串長度的函數(shù)
一般形式:
strlen(字符串)
作用是測量字符串的實際長度。
一般形式:
大寫:strupr函數(shù)(字符串)
小寫:strlwr函數(shù)(字符串)
作用是將字符串中的大小寫字母轉(zhuǎn)化為對應的小大寫字母
100以內(nèi)的素數(shù)
#include#includeint main()
{int i,j,n,a[101];
for (i=1;i<=100;i++)
a[i]=i;
a[1]=0;
for (i=2;iif(a[i]!=0 && a[j]!=0)
if (a[j]%a[i]==0)
a[j]=0;
}
printf("\n");
for (i=2,n=0;i<=100;i++)
{if(a[i]!=0)
{printf("%5d",a[i]);
n++;
}
if(n==10)
{printf("\n");
n=0;
}
}
printf("\n");
return 0;
}
//運行結(jié)果
開始運行...
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97
運行結(jié)束。
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧