C程序设计语言——六、数组(2)二维数组

一、二维数组的定义

1、格式:int a[ 整型常量表达式1 ] [ 2 ];

  1. 表达式1:行——表达式2:列
  2. 例如:int arr[3][4];

二、二维数组元素的引用

1、格式:a[i][j];

2、下标表达式:常量、变量、整型表达式、元素、函数调用


三、二维数组的初始化

1、对全部元素(按行)初始化

  1. int a[3][3]={1,2,3,4,5,6,7,8,9}
  2. int a[3][3]={{1,2,3},{4,5,6},{7,8,9}}
  3. int a[][3]={{1,2,3},{4,5,6},{7,8,9}}
  4. 第一行数可以省略

2、对部分元素(按行)初始化

  1. int a[3][4]={{1},{5},{9}};  没有初始化的按0
  2. int a[3][4]={{1},{0,6},{0,0,11}};

3、不允许提供的初值个数多于数组元素个数

4、第一位长度数可以省略


四、二维数组元素的赋值

1、初始化方式

2、使用循环赋值

  1. 数组元素有规律时:

int a[2][3];

for(i=0;i<2;i++)        //控制行

        for(j=0;j<3;j++)        //控制列

                a[i][j]=i+j;

  1. 数组元素无规律时:

for(i=0;i<2;i++)

        for(j=0;j<3;j++)

                scanf("%d",&a[i][j]);


五、二维数组举例

处理一般的使用双重循环实现

1、《键盘输入4*4的矩阵,并按矩阵形式输出》

//输出4*4
#include<stdio.h>
void main()
{
	int a[4][4];
	int i,j;
	for(i=0;i<4;i++)	//数组的赋值
		for(j=0;j<4;j++)
			scanf("%d",&a[i][j]);
	for(i=0;i<4;i++)
	{
		for(j=0;j<4;j++)    //遍历输出
			printf("%4d",a[i][j]);
		printf("\n");
	}
}

2、《将一个二维数组行和列的元素互换,存到另一个二维数组中》

#include<stdio.h>
void main()
{
	int a[2][3],b[3][2];
	int i,j;
	printf("请给数组赋值3*2:\n");
	for(i=0;i<2;i++)	//数组的赋值
		for(j=0;j<3;j++)
			scanf("%d",&a[i][j]);
	printf("原数组:\n");
	for(i=0;i<2;i++)	//处理每一行中的元素
	{
		for(j=0;j<3;j++)	//处理每一列的元素
		{
			printf("%4d",a[i][j]);	//输出a的各个元素
			b[j][i]=a[i][j];	//a元素赋给b相应的元素
		}
		printf("\n");
	}
	printf("调换之后:\n");
	for(i=0;i<3;i++)
	{
		for(j=0;j<2;j++)
			printf("%4d",b[i][j]);	//输出b的各个元素
		printf("\n");
	}
}

3、《在不使用其他数组的情况下,将一个二维数组行和列的元素互换》

4、《统计每个人的平均成绩和各门课程的平均成绩》

5、《杨辉三角形》

//杨辉三角形
#include<stdio.h>
#define M 10
int main()
{
	int i,j;
	int a[M][M];
	for(i=0;i<M;i++)
	{
		a[i][0]=1;	//每一行第一个数为1
		a[i][i]=1;	//对角线,每一行最后一个数为1
	}
	for(i=2;i<M;i++)	//从第3行开始处理
	{
		for(j=1;j<i;j++)
			a[i][j]=a[i-1][j-1]+a[i-1][j];
	}
	for(i=0;i<M;i++)	//输出数组
	{
		for(j=0;j<=i;j++)
			printf("%4d",a[i][j]);
		printf("\n");
	}
	return 0;
}

下节《字符数组》

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值