C语言中的数组(5)---二维数组的初始化(附求成绩案例)

二维数组的初始化

1) 常规初始化

int arr[3][5] = {{2, 3, 54, 56, 7 }, {2, 67, 4, 35, 9}, {1, 4, 16, 3, 78}};

2) 不完全初始化

int arr[3][5] = {{2, 3}, {2, 67, 4, }, {1, 4, 16, 78}}; 未被初始化的数值为 0

int arr[3][5] = {0}; 初始化一个 初值全为0的二维数组

int arr[3][5] = {2, 3, 2, 67, 4, 1, 4, 16, 78}; 系统自动分配行列。

3)不完全指定行列初始化

int arr[][] = {1, 3, 4, 6, 7}; (错误的)二维数组定义必须指定列值。

int arr[][2] = { 1, 3, 4, 6, 7 }; (行和列必须指定一个)可以不指定行值。

// 二维数组的初始化
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

int main()
{
	int arr[][2] = { 1, 3, 4, 6, 7 };

	int row = sizeof(arr) / sizeof(arr[0]);
	int col = sizeof(arr[0]) / sizeof(arr[0][0]);

	for (int i = 0; i < row; i++)		//行
	{
		for (int j = 0; j < col; j++)  //列
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");
	}

	printf("数组的大小为:%u\n", sizeof(arr));
	printf("数组行的大小:%u\n", sizeof(arr[0]));
	printf("数组一个元素的大小:%u\n", sizeof(arr[0][0]));

	printf("行数=总大小/一行大小:%d\n", sizeof(arr) / sizeof(arr[0]));
	printf("列数=行大小/一个元素大小:%d\n", sizeof(arr[0]) / sizeof(arr[0][0]));

	printf("arr= %p\n", arr);
	printf("&arr[0] = %p\n", &arr[0][0]);
	printf("arr[0] = %p\n", arr[0]);
}

在这里插入图片描述

案例:求出五名学生三门功课的总成绩

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>

int main()
{
	int scores[5][3] = { 0 };

	int row = sizeof(scores) / sizeof(scores[0]);
	int col = sizeof(scores[0]) / sizeof(scores[0][0]);

	// 获取 5 名学生、3门功课成绩
	for (int i = 0; i < row; i++)
	{
		for (int j = 0; j < col; j++)
		{
			scanf("%d", &scores[i][j]);
		}
	}
	// 求一个学生的总成绩
	for (int i = 0; i < row; i++) // 每个学生
	{
		int sum = 0;
		for (int j = 0; j < col; j++)// 每个学生的成绩
		{
			sum += scores[i][j];
		}
		printf("第%d个学生的总成绩为:%d\n", i + 1, sum);
	}
}

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值