数组1

来源:互联网 发布:边境牧羊犬多聪明 知乎 编辑:程序博客网 时间:2024/05/20 13:11
数组是一组具有相同类型的变量的集合。
使用一个统一的名字来标识这组相同类型的数据,这个名字称为数组名。构成数组的每个数据项成为数组元素。
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
原创粉丝点击