当前位置:首页 > 网络编程 > 软件语言 > C语言 > 二维数组

二维数组

点击次数:18 次 发布日期:2008-12-01 11:58:33 作者:源代码网
源代码网推荐 5.2.1 二维数组的一般形式
源代码网推荐c语言允许使用多维数组,最简单的多维数组是二维数组。实际上,二维数组是以一维数组为元素构成的数组,要将d说明成大小为(1 0,2 0)的二维整型数组,可以写成:
源代码网推荐int d[10][20]
源代码网推荐请留心上面的说明语句, c不像其它大多数计算机语言那样使用逗号区分下标,而是用方
源代码网推荐括号将各维下标括起,并且,数组的二维下标均从0计算。
源代码网推荐与此相似,要存取数组d中下标为( 3,5)的元素可以写成:
源代码网推荐d [ 3 ] [ 5 ]
源代码网推荐在例5 - 3中,整数1到1 2被装入一个二维数组。
源代码网推荐[例5 - 3 ]
源代码网推荐main ( )
源代码网推荐{
源代码网推荐int t,i,n u m [ 3 ] [ 4 ]
源代码网推荐for (t=0; t<3; ++t)
源代码网推荐for (i=0;i<4;++i)
源代码网推荐n u m [ t ] [ i ] = ( t * 4 ) + i + 1 ;
源代码网推荐}
源代码网推荐在此例中, n u m [ 0 ] [ 0 ]的值为1,n u m [ 0 ] [ 2 ]的值为3, . . . . . .,n u m [ 2 ] [ 3 ]的值为1 2。可以将
源代码网推荐该数组想象为如下表格:
源代码网推荐
源代码网推荐二维数组以行—列矩阵的形式存储。第一个下标代表行,第二个下标代表列,这意味着
源代码网推荐按照在内存中的实际存储顺序访问数组元素时,右边的下标比左边的下标的变化快一些。图
源代码网推荐5 - 2是一个二维数组在内存中的情形,实际上,第一下标可以认为是行的指针。
源代码网推荐记住,一旦数组被证明,所有的数组元素都将分配相应的存储空间。对于二维数组可用
源代码网推荐下列公式计算所需的内存字节数:
源代码网推荐行数×列数×类型字节数=总字节数
源代码网推荐因而,假定为双字节整型,大小为( 1 0,5)的整型数组将需要:1 0×5×2=100 字节
源代码网推荐当二维数组用作函数的参数时,实际上传递的是第一个元素(如[ 0 ] [ 0 ])的指针。不过该
源代码网推荐函数至少得定义第二维的长度,这是因为c编译程序若要使得对数组的检索正确无误,就需要
源代码网推荐知道每一行的长度。例如,将要接收大小为( 1 0,1 0)的二维数组的函数,可以说明如下:
源代码网推荐func1 (x)
源代码网推荐int x[ ][10]
源代码网推荐{
源代码网推荐.
源代码网推荐.
源代码网推荐.
源代码网推荐}
源代码网推荐
源代码网推荐第一维的长度也可指明,但没有必要。
源代码网推荐c编译程序对函数中的如下语句:
源代码网推荐x [ 2 ] [ 4 ]
源代码网推荐处理时,需要知道二维的长度。若行长度没定义,那么它就不可能知道第三行从哪儿开
源代码网推荐始。
源代码网推荐[例5-4] 用一个二维数组存放某一教师任教的各班学生的分数。假定教师有三个班,每班
源代码网推荐最多有三十名学生。注意各函数存取数组的方法。
源代码网推荐#define classes 3
源代码网推荐#define grades 30
源代码网推荐#include <stdio.h>
源代码网推荐main( )
源代码网推荐{
源代码网推荐void enter_grades();
源代码网推荐void disp_grades( );
源代码网推荐int get_grade( );
源代码网推荐int a[classes] [grades];定/*义二维数组,每行存放一个班学生成绩*/
源代码网推荐char ch;
源代码网推荐for( ; ;)
源代码网推荐{
源代码网推荐do { /*菜单显示* /
源代码网推荐printf("(e)nter grades\n");
源代码网推荐printf("(r)eport grades\n");
源代码网推荐p r i n t f ( " ( q ) u i t \ n " ) ;
源代码网推荐ch=toupper(getchar()); /将*键盘输入字符转换为大写*/
源代码网推荐} while(ch!="e" && ch!="r" && ch!="q");
源代码网推荐switch(ch)
源代码网推荐{
源代码网推荐case "e":
源代码网推荐enter_grades( );
源代码网推荐b r e a k ;
源代码网推荐case "r":
源代码网推荐d i s p _ g r a d e s ( g r a d e ) ;
源代码网推荐b r e a k ;
源代码网推荐case "q":
源代码网推荐e x i t ( 0 ) ;
源代码网推荐}
源代码网推荐}
源代码网推荐}
源代码网推荐void enter_grades(a)
源代码网推荐int a[][grades];
源代码网推荐{
源代码网推荐int t, i;
源代码网推荐for (t=0;t<classes;t++)
源代码网推荐{
源代码网推荐printf (" class #%d:\n",t+1);
源代码网推荐for (i=0; i<grades; i++)
源代码网推荐a [ t ] [ i ] = g e t _ g r a d e ( i ) ;
源代码网推荐}
源代码网推荐}
源代码网推荐int get_grades(num)
源代码网推荐int num;
源代码网推荐{
源代码网推荐char s[80];
源代码网推荐printf("enter grade for student # %d:,\nn"u m + 1 ) ;
源代码网推荐g e t s ( s ) ;/ *输入成绩* /
源代码网推荐r e t u r n ( a t o i ( s ) ) ;
源代码网推荐}
源代码网推荐void disp_grades(g) /*显示学生成绩* /
源代码网推荐int g[ ][grades];
源代码网推荐{
源代码网推荐int t,i ;
源代码网推荐for(t=0; t<classes; ++t) {
源代码网推荐printf("class # %d:\n,"t+ 1 ) ;
源代码网推荐f o r ( i = 0 ; i < g r a d e s ; + + i )
源代码网推荐printf("grade for student #%d is %d\,ni"+ 1 ,g[ t ] [ i ] ) ;
源代码网推荐}
源代码网推荐}
源代码网推荐我们将实际问题简化为共有2个班,每班两个学生,即将程序中的常量定义修改如下:
源代码网推荐#define classes 2
源代码网推荐#define grades 2
源代码网推荐运行程序:
源代码网推荐r u n
源代码网推荐(e)nter grades
源代码网推荐(r)eport grades
源代码网推荐( q ) u i t : e
源代码网推荐class #1:
源代码网推荐enter grade for student #17:8
源代码网推荐enter grade for student #289: ¿
源代码网推荐class #2
源代码网推荐enter grade for student #19:8 ¿
源代码网推荐enter grade for student #29:0 ¿
源代码网推荐(e)nter grades
源代码网推荐(r)eport grades
源代码网推荐( q ) u i t : r¿
源代码网推荐class #1
源代码网推荐grade for student #1 is 78
源代码网推荐grade for student #2 is 89
源代码网推荐class #2
源代码网推荐grade for student #1 is 98
源代码网推荐grade for student #2 is 90
源代码网推荐(e)nter grades
源代码网推荐(r)eport grades
源代码网推荐(q)uit :q
源代码网推荐运行程序,我们首先看到一个菜单,选择“ e”输入成绩,选择“ r”显示成绩,选择“q”
源代码网推荐退出。a t o i ( )函数用于将实参字符串转换为整型。
源代码网推荐5.2.2 字符串数组
源代码网推荐程序设计中经常要用到字符串数组。例如,数据库的输入处理程序就要将用户输入的命
源代码网推荐令与存在字符串数组中的有效命令相比较,检验其有效性。可用二维字符数组的形式建立字
源代码网推荐符串数组,左下标决定字符串的个数,右下标说明串的最大长度。例如,下面的语句定义了
源代码网推荐一个字符串数组,它可存放3 0个字符串,串的最大长度为8 0个字符:
源代码网推荐char str_array[30][80];
源代码网推荐要访问单独的字符串是很容易的,只需标明左下标就可以了。例如,下面的语句以数组
源代码网推荐s t r _ a r r a y中的第三个字符串为参数调用函数gets( )。
源代码网推荐g e t s ( s t r _ a r r a y [ 2 ] ) ;
源代码网推荐该语句在功能上等价于:
源代码网推荐g e t s ( & s t r _ a r r a y [ 2 ] [ 0 ] ) ;
源代码网推荐但第一种形式在专业程序员编制的c语言程序中更为常见。
源代码网推荐为帮助理解字符串数组的用法,研究例5 - 5。它以一个字符串数组为基础做简单的文本编辑。 源代码网供稿.
上一篇: 多维数组  下一篇: 一维数组
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华