数组的定义:
int a[10];
它表示定义了一个整型数组,数组名为a,此数组有10个整型元素
定义一维数组的一般形式为:
类型符 数组名[常量表达式]
数组练习
数组计算大小和各种初始化
1.全部赋值
int a[10] = {0,1,2,3,4,5,6,7,8,9};
初始化列表
2.部分赋值
int a[10] =
{0,1,2,3,4};
只提供前几个初值,后几个则初值为0
3.初始化成0
int a[10] = {0,0,0,0,0,0,0,0,0,0};
或
int a[10] = {0};
4.见怪不怪
int a[5] = {1,2,3,4,5};
写成
int a[] = {1,2,3,4,5};
sizeof关键字
sizeof 关键字 能计算括号里对应数据的大小空间。
size = sizeof (array)/sizeof (array[0]);
把整个数组的大小,除以数组中一个元素的大小,就获得总个数
数组应用编程练习
1.正序倒序输出
2.斐波那契数列
3.冒泡排序法
从小到大:
#include <stdio.h>
int main()
{
int a[] = {8,12,9,13};
int i;
int j;
int t;
int len = sizeof(a)/sizeof(a[0]);
for(i = 0;i < len-1; i++){
for(j = 0;j < len-1-i;j++){
if(a[j] > a[j+1]){
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for(i=0;i < len;i++){
printf("%d ",a[i]);
}
return 0;
}
从大到小:
#include <stdio.h>
int main()
{
int a[] = {8,12,9,13};
int i;
int j;
int t;
int len = sizeof(a)/sizeof(a[0]);
for(i = 0;i < len-1; i++){
for(j = 0;j < len-1-i;j++){
if(a[j] < a[j+1]){
t = a[j];
a[j] = a[j+1];
a[j+1] = t;
}
}
}
for(i=0;i < len;i++){
printf("%d ",a[i]);
}
return 0;
}
4.简单选择排序法
#include <stdio.h>
int main()
{
int a[] = {8,12,9,13};
int i;
int j;
int t;
int len = sizeof(a)/sizeof(a[0]);
for(i=0; i < len-1;i++){
for(j=i+1;j<len;j++){
if(a[i] < a[j]){
t = a[i];
a[i] = a[j];
a[j] = t;
}
}
}
for(i = 0;i < len;i++){
printf("a[%d]=%d\n",i,a[i]);
}
return 0;
}
二维数组
二维数组常称为矩阵,写成行和列的排列形式。
一般形式为
类型说明符 数组名[常量表达式][常量表达式]
例如:
float a[3][4,b[5][10]];
3行4列的数组,5行10列的数组
#include <stdio.h>
int main()
{
int a[3][3] = {{1,2,3},{4,5,6},{7,8,9}};
int b[2][2] = {{12,24},{21,8}};
int i,j;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
printf("%d ",a[i][j]);
}
puts("\n");
}
int m,n;
for(m=0;m<2;m++){
for(n=0;n<2;n++){
printf("%d ",b[m][n]);
}
puts("\n");
}
return 0;
}
练习题:二维数组里找出一个最大值
#include <stdio.h>
int main()
{
int a[3][4] = {{56,89,258,665},{89,35,189,882},{320,987,691,789}};
int hang;
int lie;
int i,j;
int max = a[0][0];
for(i=0;i<3;i++){
for(j=0;j<4;j++){
printf("%d \t",a[i][j]);
}
puts("\n");
}
for(i=0;i<3;i++){
for(j=0;j<4;j++){
if(max < a[i][j]){
max = a[i][j];
hang = i;
lie = j;
}
}
}
printf("第%d行第%d列的%d最大",hang,lie,max);
return 0;
}