Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) { int days[2][12]={{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 year ,month,i; int leap; Main() { Dfas Asdfasf fasdfa } Main() { printf(“请输入年份:”); scanf(“%d”,&year); printf(“请输入月份:”); scanf(“%d”,&month); if(month>0&&month<=12) /*判断是否闰年*/ if(year%4==0&&year%100!=0 || year%400==0) leap=1;/*是闰年,则把标志设为1*/ else leap=0;/* 否则把标志设为0*/ i=days[leap][month-1]; printf(“%d 年%d月%d天\n”,year,month,i); } else printf(“您输入了无效的天数”); }
学习篇 实战篇 源程序赏析 退
第一节 什么是数组 第二节 一维数组 第三节 二维数组 第四节 字符及字符数组 返回 退出
二 维 数 组 一、上节回顾 1、数组:数组是一组有序的、类型相同的数据的集合,这些数据被称为数组的元素 ★ 2、使用一维数组应注意的几点 (1)数组的下标只能是整数或整形表达式 (2)数组的下标从0开始。C语言编译器不检查数组的下标越界错误 , 使用超过这个范围的下标访问数组元素时,得到的将是有效元素 外的一个值。 (3)数组元素赋值是时不允许把一个数组作为整体赋给另一个数组 (4)数组名代表的是数组 a 在内存中的首地址 scanf(“%d”,&a[0]);和 scanf(“%d”,a);是等价的
二 维 数 组 二、二维数组的引入 在实际的应用中,有大量的数据是以行列排列的形式表现出来的,例如: 某市电大近三年各专业的招生情况如下: 年 份 计算机 电子电器 商贸英语 会电算化 1997 50 40 60 40 1998 70 60 80 70 1999 90 50 80 90 要把这些数据组织起来可以有两种选择: 1、按 从左到右,从上到下的顺序用一维数组 data[12] 来存放。丧失了数据之间固有的纵向联系,查询近三年的计算机专业的毕业生情况就很难找到了 2、每年用一个数组,如果随时间推移,30年后程序中就要增加到30个数组,查找,组织都很麻烦
二 维 数 组 a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] - - - - - 三、定义二维数组的一般方式: 类型标志符 数组名 [常量表达式1] [常量表达式2] 对于上一个例子我们可用数组定义如下: int a[3][4]; 二维数组在内存中是按行的顺序存放的,即先存放第一行的元素,再存放第二行的元素,如图所示: a[0][0] a[0][1] a[0][2] a[0][3] a[1][0] a[1][1] - - - - - 二维数组 除了维数比一维数组多一维外,其他性质与一维数组是全部类似的。
二 维 数 组 这种方法很直观,清晰,且不易出错 这种方法在数据很大时,很容易出错且错误难以排除。 ★ 四、二维数组的初始化 与一维数组的初始化类似,可以在定义一维数组时对数组中各元素指定初始值,一般可用下面的两种方法来对二维数组进行初始化: 1、分行初始化发,即把每一行作为一个一维数组进行初始化,例如: int a [3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}} 这种方法很直观,清晰,且不易出错 2、省略内层的花括号,即按二维元素在内存中的排列顺序用所给数据依次初始化。例如: int a[3][4]={1,2,3,4,,5,6,7,8,9,10.11.12} 这种方法在数据很大时,很容易出错且错误难以排除。
二 维 数 组 五、应用举例 下面来看一个二维数组的应用举例 这个程序根据用户输入的年份和月份,输出这个月的天数。考虑到平年和闰年的天数不一样,程序中用了一个二维数组分别存放平年和闰年各月的天数
下面程序以每行四个数据的形式输出 a 数组,请填空 # define N 20 main( ) { int a[N],i; for(i=0;i<N;i++) scanf(“%d”,_________ ); for(i=0;i<N;i++) { if(__________); printf(“%3d”,a[i]);} printf(“\n”); } 下面程序以每行四个数据的形式输出 a 数组,请填空
C)int a[2][3]={{1,2},{3,4},{5,6}}; A)int a[2][3]={0}; B)int a[ ][3]={{1,2},{0}}; C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[ ][3]={{1,0,1},{},{1,1}};
A) 3 5 7 B)3 6 9 C)1 5 9 D) 1 4 7 定义如下变量和数组: int k; int a[3][3]={1,2,3,4,5,6,7,8,9} 则下面的输出结果是————。 for (k=0;k<3;k++) printf(“%d”,a[k][2-k]); A) 3 5 7 B)3 6 9 C)1 5 9 D) 1 4 7