数组1
来源:互联网 发布:边境牧羊犬多聪明 知乎 编辑:程序博客网 时间:2024/05/20 13:11
数组是一组具有相同类型的变量的集合。
使用一个统一的名字来标识这组相同类型的数据,这个名字称为数组名。构成数组的每个数据项成为数组元素。
c程序通过数组的下表实现对数组元素的访问。
int score[5];
c语言中的数组的下标都是从0开始的。
在定义数组的时候不能使用变量定义数组的大小。即:int score[n]; 这个定义是错的。
数组一旦定义就不能改变它的大小。
对一维数组进行初始化的时候,可将元素初值放在=后面用一队{}括起来的初始化中;
即:int score [5] = { 90,80,70,100,95};
初始化列表中提供的初值个数不能多于元素的个数。
[root@localhost 414shuzu]# ./a.out
intput a month
22
intput a month
1
days are 31
二维数组:
定义:类型 数组名[第一维长度][第二维长度] ;
二维数组用两个下标确定各元素在数组中的顺序,可用排列成i行j列的元素表示。
一维数组在内存中占用的字节数为:数组长度*sizeof(基类型),二维数组占用的字节数为:第一维度*第二维度*sizeof(基类型)。
输入一个二维数组的全部元素必须用循环套用才可以:
输入MAX[2][3]数组中的元素:
for(i = 0; i <= 2; i ++)
{
for(j = 0;j <= 3;j ++)
{
scanf("%d",MAX[i][j]);
}
}
输出也类似输入,也要用循环。
初始化一个二维数组可以输入元素来初始化,也可以按行初始化:
int MAX[2][3] = {1,2,3,4,5,6};
int MAX[2][3] = {{1,2,3},{4,5,6}};这两个初始化时等价的。
二维数组初始化可以省略行:int MAX[][3] = {1,2,3,4,5,6}; 等价于上面的数组
按行初始化时,即使初始化列表中提供的初值个数可以少于数组元素的个数,第一维度的长度声明也可以省略,此时系统自动给后面的元素初始化为0;
int MAX[][3] = {{1},2,3};
int MAX[2][3] = {{1,0,0},{2,3,0}}; 这两个初始化等价。
都是 : 1 0 0
2 3 0
数组的第二维的长度声明永远不能省略。因为二维数组的元素在c编译程序为其分配的连续存储空间是按行存放的,即第一行放完放第二行然后第三行,所以必须知道列是多少。
[root@localhost 414shuzu]# ./a.out
intput a year,a mounth:
1900,2
1900.2 is: 28 days
[root@localhost 414shuzu]# ./a.out
intput a year,a mounth:
2000,2
2000.2 is: 29 days
使用一个统一的名字来标识这组相同类型的数据,这个名字称为数组名。构成数组的每个数据项成为数组元素。
c程序通过数组的下表实现对数组元素的访问。
int score[5];
c语言中的数组的下标都是从0开始的。
在定义数组的时候不能使用变量定义数组的大小。即:int score[n]; 这个定义是错的。
数组一旦定义就不能改变它的大小。
对一维数组进行初始化的时候,可将元素初值放在=后面用一队{}括起来的初始化中;
即:int score [5] = { 90,80,70,100,95};
初始化列表中提供的初值个数不能多于元素的个数。
//输入月份打印天数#include <stdio.h>#define months 12 //宏定义月份int main(){int days[months] ={31,28,31,30,31,30,31,31,30,31,30,31 };int yuefen = 0;do{printf("intput a month\n");scanf("%d",&yuefen);}while( yuefen < 0||yuefen >12);printf("days are %d\n",days[yuefen - 1]); //数组下标是从0开始的return 0;}
[root@localhost 414shuzu]# ./a.out
intput a month
22
intput a month
1
days are 31
二维数组:
定义:类型 数组名[第一维长度][第二维长度] ;
二维数组用两个下标确定各元素在数组中的顺序,可用排列成i行j列的元素表示。
一维数组在内存中占用的字节数为:数组长度*sizeof(基类型),二维数组占用的字节数为:第一维度*第二维度*sizeof(基类型)。
输入一个二维数组的全部元素必须用循环套用才可以:
输入MAX[2][3]数组中的元素:
for(i = 0; i <= 2; i ++)
{
for(j = 0;j <= 3;j ++)
{
scanf("%d",MAX[i][j]);
}
}
输出也类似输入,也要用循环。
初始化一个二维数组可以输入元素来初始化,也可以按行初始化:
int MAX[2][3] = {1,2,3,4,5,6};
int MAX[2][3] = {{1,2,3},{4,5,6}};这两个初始化时等价的。
二维数组初始化可以省略行:int MAX[][3] = {1,2,3,4,5,6}; 等价于上面的数组
按行初始化时,即使初始化列表中提供的初值个数可以少于数组元素的个数,第一维度的长度声明也可以省略,此时系统自动给后面的元素初始化为0;
int MAX[][3] = {{1},2,3};
int MAX[2][3] = {{1,0,0},{2,3,0}}; 这两个初始化等价。
都是 : 1 0 0
2 3 0
数组的第二维的长度声明永远不能省略。因为二维数组的元素在c编译程序为其分配的连续存储空间是按行存放的,即第一行放完放第二行然后第三行,所以必须知道列是多少。
//键盘输入某年某月(包括闰年),编程输出该年的该月拥有的天数#include <stdio.h>#define mounth 12int main(){int days[2][mounth] = {{31,28,31,30,31,30,31,31,30,31,30,31},{31,29,31,30,31,30,31,31,30,31,30,31}};int MOUNTH = 0;int year = 0;int DAYS = 0;do{printf("intput a year,a mounth:\n");scanf("%d,%d",&year,&MOUNTH);}while( MOUNTH < 1|| MOUNTH > 12 );if( ( year % 100 != 0&& year % 4 == 0)||( year % 400 ==0)){DAYS = days[1][MOUNTH - 1];}else{DAYS = days[0][MOUNTH - 1];}printf(" %d.%d is: %d days \n",year,MOUNTH,DAYS);return 0;}
[root@localhost 414shuzu]# ./a.out
intput a year,a mounth:
1900,2
1900.2 is: 28 days
[root@localhost 414shuzu]# ./a.out
intput a year,a mounth:
2000,2
2000.2 is: 29 days
0 0
- 数组(1)
- 数组1
- 数组1
- 数组1
- 数组1
- 数组1
- 数组1
- 数组1
- 数组1
- 数组1
- 1、数组
- 数组1
- 数组(1)
- 数组1
- 数组1
- 【数组1】-二维数组查找
- NumPy数组(1、数组初探)
- NumPy数组(1、数组初探)
- 通过SharedPreferences实现记住密码
- MySQL中表的创建
- String类不可变性的好处
- 把JSP放到WEB-INF后以保护JSP源代码
- activeMQ框架的学习(二)
- 数组1
- 20170414
- 子集生成
- NYOJ 325 &&NYOJ 456
- HDU1056 HangOver 水题
- 伸展树(转载)
- 设计模式之中介者模式
- 二叉树
- [贪心][DP][Ural 1203]Scientific Conference