【C语言---------数组】-创新互联
- 怎么定义一维数组
- 一维数组的初始化
- 怎么引用一维数组
- 案例
- 对五个元素依次赋值1-5,要求逆序输出
- 用数组来处理Fibonnacci数列问题
- 怎么定义二维数组
- 二维数组的初始化
- 怎么引用二维数组
- 案例
- 输出一个二维数组
- 数组行和列的元素互换,存到另外一个二维数组中
- 数组作为函数参数
要使用数组必须在程序中先定义数组,告诉计算机:由哪些数据组成数组,数组中有多少元素,属于什么数据类型,否则计算机不会自动识别一批数据,以下是对于数组的定义:
一维数组的初始化int a[10]; //表示定义了一个整型数组,数组名为a,此数组包含十个整型元素。
一维数组定义一般形式为: 类型说明符 数组名[常量表达式];
注:一维数组是指只有一个下标的数组,它用来表示一组具有相同类型的数据,数据类型几乎包含了所有类型,比如:int,float,char,指针,结构体等类型。
定义数组必须要进行初始化,如若不初始化系统并不会自动初始化为0,因为局部变量处于堆栈区,数值则为随机。例如:
int a[10]; //例如这样,程序并不会报错。
常见的几种初始化
第一种
int a[5]={0}; // 即将第一个元素初始化为0,系统则会将剩余的元素自动初始化为0;
如若初始化为 int a[5]={1};//则是将第一个元素初始化为1,其它则为0,其它数也是如此。
第二种
int a[5]={1,2,3,4,5}; //直接对数组所有元素进行初始化,
第三种
int a[5]={1,2,3}; //即对部分元素进行初始化,其余未进行初始化的元素系统自动初始化为0。
第四种
int a[]={1,2,3,4,5}; //为数组全部元素进行初始化,但不指定数组长度,这时候数组的大小由初始化时列表元素个数决定,即数组长度为5。
注:数组的命名同变量的命名规则一样:
怎么引用一维数组变量命名规则:
1,变量名只能由字母,数字,下划线组成,且必须以字母或下划线开头。
2,不能包含空格,标点符号以及运算符等其它在c语言中有特殊意义的符号。
在定义数组并且对它进行其中的元素赋值以后,就可以引用数组中的元素,但是只能引用数组元素,而不能一次性调用数组全部元素,在程序中,想引用数组的某一个元素可以通过数组名和下标来引用数组中的元素。一般格式为
假设定义一个数组 a[5]={1,2,3,4,5};
引用的一般格式为:数组名[下标];
如若要引用第一个元素:a[0];//就可以调用1这个元素了。
注:数组的下标默认从0开始,上面的数组下标依次为0,1,2,3,4,在访问数组元素时,下标不能超出这个范围。
若要将数组整体输出有两种方法:
第一种
#includeint main()
{int i;
int a[5]={1,2,3,4,5};
printf("%d %d %d %d %d", a[0], a[1], a[2], a[3], a[4]);//printf整体输出
return 0;
}
第二种
#includeint main()
{int i;
int a[5]={1,2,3,4,5};
for (i = 0; i< 5; i++) //循环依次进行输出
{printf("%d ", a[i]);
}
return 0;
}
注:数组之间不能进行比较,也不能进行运算。
案例 对五个元素依次赋值1-5,要求逆序输出#includeint main()
{int i;
int a[5] = {1,2,3,4,5 }; //对数组初始化
for (i = 4; i>= 0; i--) // 大下标为4,每进行一次循环,i的值减1,直到i=0
{printf("%d ", a[i]);
}
return 0;
}
用数组来处理Fibonnacci数列问题题目介绍:裴波那契数列指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233即这个数列从第3项开始,每一项都等于前两项之和。注:每五个要进行一次换行
#includeint main()
{int i;
int f[20] = {1,1 };//因为从第三个开始,先将第一个和第二个元素初始化为1
for (i = 2; i<= 20; i++)
{f[i] = f[i - 2] + f[i - 1]; //i从2开始,即第三个数开始,每一项都等于前两项的和
}
for (i = 0; i< 20; i++)
{if (i % 5 == 0) //能被5整
{ printf("\n"); //进行换行
}
printf("%10d", f[i]); //在循环内输出fibonacci数列
}
return 0;
}
怎么定义二维数组二维数组的定义与一维数组类似,其语法格式为:
二维数组的初始化类型说明符 数组名[常量表达式][常量表达式];//前者表达式表示行宽,后者表示列宽。
int a[2][3]; //表示定义一个行宽为2,列宽为3的整型二维数组。
第一种
按行直接进行赋值 int a[2][3]={{1,2,3},{4,5,6}};
括号内的第一个括号代表的是第一行数组的元素,第二个括号代表第二行数组的元素;
第二种
将所有元素写在一个括号内 int a[2][3]={1,2,3,4,5,6};
和第一种一样,第一行的元素为1,2,3 第二行的元素为4,5,6 输出结果为以下,用循环输出时,记得在外循环进行换行
1 2 3
4 5 6
第三种
对数组的部分元素进行赋值 int a[2][3]={{1},{1}}; //定义部分元素,其它元素为0;输出结果为;
1 0 0
1 0 0
怎么引用二维数组第四种
对数组进行初始化时行宽表达式可以省略 int a[][3]={1,2,3,4,5,6};
行宽会根据列宽以及元素自动识别
注:列宽不能省略。
二维数组引用的表示形式为
数组名 [下标][下标]
和一维数组一样,二维数组的下标默认从0开始。
数组元素可以出现在表达式中,也可以被赋值,例如
#includeint main()
{int i, j;
int a[2][3] = {1,2,3,4,5,6 }; //定义两个二维数组
int b[2][3] = {6,5,4,3,2,1 };
b[1][2] = a[1][2]; //原本b[1][2]应该等于1,这里将a[1][2]的值赋给b[1][2],a[1][2]的值为6
printf("%d", b[1][2]); //输出则为6
return 0;
}
案例
输出一个二维数组#includeint main()
{int i, j;
int a[2][3] = {1,2,3,4,5,6 }; //定义一个二行三列的数组
for (i = 0; i< 2; i++) //i运行两次
{for (j = 0; j< 3; j++) //i为0时j运行三次,即输出下标为0,1,2的数组
{ printf("%d ", a[i][j]);
}
printf("\n"); //当输出1,2,3d第一列时换行
}
return 0;
}
数组行和列的元素互换,存到另外一个二维数组中题目要求:将一个二维数组行和列的元素互换
解题思路:定义两个数组,数组a为2行3列,数组b为3行2列,将数组a[i][j]元素和数组b[j][i]
的元素进行交换。
#includeint main()
{int a[2][3] = {{1,2,3},{4,5,6} };
int i, j;
int b[3][3]; //定义两个数组,进行交换元素互换
printf("数组a的元素为\n");
for (i = 0; i< 2; i++)
{for (j = 0; j< 3; j++)
{ printf("%5d", a[i][j]); //先输出a数组
b[j][i] = a[i][j]; //将行和列进行交换
}
printf("\n");
}
printf("数组b的元素为\n");
for (i = 0; i< 3; i++)
{for (j = 0; j<= 1; j++)
{ printf("%5d", b[i][j]); //再输出数组b
}
printf("\n");
}
return 0;
}
数组作为函数参数注:当用数组名作为函数参数时,传递的并不是数组中的每一个元素的值,而是将实参数组的首地址赋值给形参,形参数组取得该首地址后相当于有了实参的数组,实际上实参和形参为同一个数组,因此当行参数组发生变化时,实参数组也随之变化。
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
文章题目:【C语言---------数组】-创新互联
本文网址:http://pwwzsj.com/article/coegeg.html