c/c++:二维数组,数组的行数和列数求法sizeof,数组初始化不同形式,5个学生,3门功课,求学生总成绩和功课总成绩

c/c++:二维数组,数组的行数和列数求法sizeof,数组初始化不同形式,5个学生,3门功课,求学生总成绩和功课总成绩

2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c++的话,
我所知道的周边的会c++的同学,可手握10多个offer,随心所欲,而找啥算法岗的,基本gg
提示:系列c++学习的基础和高阶知识,用于公司生产实践中,实实在在的公司部署产品要用的,因为c++速度快,
而java和Python速度慢,自然往硬件里面部署算法啥的,都得用c++或者c,因此本科学的c很重要,后来的Python或者java就没有那么重要了,
c/c++系列文章:
【1】c++:c语言优缺点,visual studio2019如何新建项目,写hello world程序
【2】c/c++:gcc安装,gcc编译hello world文件,system函数调用系统命令,sleep函数
【3】linux下gcc的编译过程和功能,预处理,编译,汇编,链接,.c预处理为.i文件.s文件.o文件.exe文件
【4】c/c++:windows平台下依赖的动态库,c底层是汇编语言,程序断点调试,反汇编,vs快捷键
【5】c/c++:数据类型,常量变量,标识符,有符号整型,无符号unsigned,字符类型,字符串类型,实数类型,浮点型,科学计数法
【6】c/c++:2进制、8进制、10进制、16进制和进制之间的转换,c语言输出匹配格式%
【7】c/c++:原码,反码,补码和常见的数据类型取值范围,溢出
【8】c/c++:类型限定符,printf输出格式,putchar,scanf,getchar
【9】c/c++:算术运算符,赋值运算,逻辑运算,比较运算,三目运算,逗号运算,数据类型转换
【10】c/c++:顺序结构,if else分支语句,do while循环语句,switch case break语句
【11】c/c++:for循环语句,分号不可省略,表达式可以省略,猜数字游戏,跳转语句continue,break,避免写goto
【12】c/c++:一维数组,初始化数组,循环打印数组,计算数组存储空间,数组元素个数,数组逆序算法


文章目录

  • c/c++:二维数组,数组的行数和列数求法sizeof,数组初始化不同形式,5个学生,3门功课,求学生总成绩和功课总成绩
    • @[TOC](文章目录)
  • c/c++:二维数组
  • 二维数组怎么初始化
  • 5个学生,3门功课,求总成绩
  • 总结

c/c++:二维数组

一维数组的扩展集合
在这里插入图片描述
定义:
在这里插入图片描述


void f40(void)
{
	int arr[2][3] = {
		{2,5,8},
		{7,9,10}
	};//2行3列

	int a[3][5] = { {1,2,3,4,5},{2,3,4,5,6},{3,4,5,6,7} };//这种写法也行

	//打印是2层for循环
	int n = sizeof(arr) / sizeof(arr[0]);//这是行吧,arr[0]是0行的大小
	int m = sizeof(arr[0]) / sizeof(arr[0][0]);//1维数组的计算方法
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");//1行结束,回车
	}

}

int main(void)
{
	f40();

	system("pause");
	return 0;
}

在这里插入图片描述
整体的大小
就是sizeof(arr);
在这里插入图片描述



void f41(void)
{
	int arr[2][3] = {
		{2,5,8},
		{7,9,10}
	};//2行3列

	printf("数组整体大小:%d\n", sizeof(arr));//
	printf("数组1行的大小:%d\n", sizeof(arr[0]));//一个行的大小
	printf("行的个数:%d\n", sizeof(arr)/sizeof(arr[0]));//整体/一个行的大小=n行
	
	printf("数组1个元素的大小:%d\n", sizeof(arr[0][0]));//一个数的大小
	printf("列的个数:%d\n", sizeof(arr[0])/sizeof(arr[0][0]));//1行/一个元素大小=m列
}


int main(void)
{
	f41();

	system("pause");
	return 0;
}

在这里插入图片描述
数组的名字,也就是首个元素的地址
没问题的

`

void f42(void)
{
int arr[2][3] = {
{2,5,8},
{7,9,10}
};//2行3列

printf("数组整体地址:%x\n", arr);
printf("数组首个元素地址:%x\n", &arr[0][0]);//取地址别忘了

}

`在这里插入图片描述
我们看看首行的地址是

在这里插入图片描述
你可以看看,数组实际上也是连续存放在一个存储空间的
是一行一行存的

上面绿色0行存完,3个列放一起
然后是1行的3个列放一起
懂?
在这里插入图片描述

二维数组怎么初始化

行列可以指定,但是实际大小可以变少

其余元素初始化为0;


void f43(void)
{
	int arr[3][4] = {
		{2,5,8},
		{7,9,10}
	};//2行3列

		//打印是2层for循环
	int n = sizeof(arr) / sizeof(arr[0]);//这是行吧,arr[0]是0行的大小
	int m = sizeof(arr[0]) / sizeof(arr[0][0]);//1维数组的计算方法
	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{
			printf("%d ", arr[i][j]);
		}
		printf("\n");//1行结束,回车
	}
}

在这里插入图片描述
所以,如果我们啥也不写也行


	int arr[3][4] = { 0 };//直接整体干为0

在这里插入图片描述
如果不写{}呢?
简单写
它自动给你排


	int arr[3][4] = {1,2,3,4,5};

在这里插入图片描述
这种不常见的

你可以不指定几行几列【那是一维数组】
二维数组必须写列!!!!!!!!!!!


	int arr[][3] = { 1,2,3,4,5,6};//数组必须执行列

在这里插入图片描述

	int arr[][3] = { 1,2,3,4};//数组必须执行列

在这里插入图片描述
最好是标准的定义

5个学生,3门功课,求总成绩

和java中的fori按回车,一样快捷

c语言中,for按tab,就可以处for循环,你改下size_t的类型和length的名字
在这里插入图片描述


void f44(void)
{
	/*
1 2 3
4 5 6
7 8 9
1 2 3
1 2 3
	*/
	int arr[5][3];//慢慢赋值
	int n = sizeof(arr) / sizeof(arr[0]);//行
	int m = sizeof(arr[0]) / sizeof(arr[0][0]);//列

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{//循环赋值也行的
			scanf("%d", &arr[i][j]);//挨个读取即可--这是算法中的第一步
			//在c++中是cin了,很简单
			//java中是in.next();
		}
	}

	//printArr(arr);//给它打印看看

	//回头再看函数
	//一个学生总成绩
	for (size_t i = 0; i < n; i++)
	{
		int sum = 0;
		for (size_t j = 0; j < m; j++)
		{
			sum += arr[i][j];//累计
		}
		printf("学生%d的成绩是:%d\n", i+1, sum);
	}

}

在这里插入图片描述

easy


void f44(void)
{
	/*
1 2 3
4 5 6
7 8 9
1 2 3
1 2 3
	*/
	int arr[5][3];//慢慢赋值
	int n = sizeof(arr) / sizeof(arr[0]);//行
	int m = sizeof(arr[0]) / sizeof(arr[0][0]);//列

	for (int i = 0; i < n; i++)
	{
		for (int j = 0; j < m; j++)
		{//循环赋值也行的
			scanf("%d", &arr[i][j]);//挨个读取即可--这是算法中的第一步
			//在c++中是cin了,很简单
			//java中是in.next();
		}
	}

	//printArr(arr);//给它打印看看

	//回头再看函数
	//一个学生总成绩
	for (size_t i = 0; i < n; i++)
	{
		int sum = 0;
		for (size_t j = 0; j < m; j++)
		{
			sum += arr[i][j];//累计
		}
		printf("学生%d的成绩是:%d\n", i+1, sum);
	}

	//每个学科的总成绩?

	for (size_t i = 0; i < m; i++)
	{
		int sum = 0;
		for (size_t j = 0; j < n; j++)
		{
			sum += arr[j][i];//累计
		}
		printf("功课%d的总成绩是:%d\n", i + 1, sum);
	}
}

在这里插入图片描述
列上求和也行哦
反正好说
你遍历的时候先看行还是列,分清就行。


总结

提示:重要经验:

1)
2)学好c++,即使经济寒冬,手握10个大厂offer绝对不是问题!
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/12868.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Verilog | 二进制与格雷码

一、格雷码简介 格雷码是一个叫弗兰克格雷的人在 1953 年发明的&#xff0c;最初用于通信。格雷码是一种循环二进制码或者叫作反射二进制码。格雷码的特点是从一个数变为相邻的一个数时&#xff0c;只有一个数据位发生跳变&#xff0c;由于这种特点&#xff0c;就可以避免二进…

HttpServletRespon

1、HttpServletRespon对象 在Servlet API中&#xff0c;定义了一个HttpResponse接口&#xff0c;它继承于ServletResponse接口&#xff0c;专门用于封装HTTP响应消息 HTTP响应消息分为响应状态行、响应消息头、响应消息体三部分&#xff0c;所以HttpResponse接口中定义了向客…

Qt模型视图结构

一.模型视图介绍 1.Model/View(模型/视图结构) 视图(View)是显示和编辑数据的界面组件&#xff0c; 模型(Model)是视图和原始数据之间的接口 2.视图组件有:QListView QTreeView QTableView&#xff0c;QColumnView&#xff0c;QHeaderView 模型组件有:QStringListM…

设计模式-原型模式

原型模式 文章目录 原型模式什么是原型模式为什么要用原型模式原型模式的实现方式浅拷贝深拷贝 如何实现深拷贝递归拷贝对象序列化与反序列化优化浅拷贝与深拷贝 总结 什么是原型模式 如果对象的创建成本比较大&#xff0c;而同一个类的不同对象之间差别不大&#xff08;大部分…

java基于mvc的停车收费系统mysql

系统需要解决的主要问题有&#xff1a; (1)车位管理模块 添加车位、查看车位状态、车位信息查询等。 (2)客户信息管理模块 客户基本信息录入、客户信息查询等。 (3)卡业务办理 添加卡信息、查余额查询、卡充值。 (4)车辆信息管理模块 车牌信息录入等。 (5)收费管理 可以调整相应…

通过工具生成指定 类型 大小 文件

今天给大家介绍一个神器 首先 大家在开发过程中或许经常需要涉及到文件上传类的功能 需要测试文件过大 空文件等等清空 不同大小的文件 而这种文件大小是比较不好控制的 但大家可以下载我的资源 文件生成工具(可生成指定大小 类型文件) 下载下来里面就有一个 fileGeneration…

开发常用的 Linux 命令1(文件和目录)

开发常用的 Linux 命令汇总1&#xff08;文件和目录&#xff09; 作为开发者&#xff0c;Linux是我们必须掌握的操作系统之一。因此&#xff0c;在编写代码和部署应用程序时&#xff0c;熟练使用Linux命令非常重要。这些常用命令不得不会&#xff0c;掌握这些命令&#xff0c;…

干货分享 | 如何在业余时间学习数据分析?

从社会学背景的数分小白到独揽公司市场部的数据分析&#xff0c;和大家简单分享我的数据分析升级打怪之路。 简单说就是两点【培养数据分析思维】【提升数据分析技能】 思维的培养主要靠书籍和课程 以下是一些对我影响较大的书籍&#xff0c;按照【入门、进阶、高阶】简单做了…

Vue2-黑马(十)

目录&#xff1a; &#xff08;1&#xff09;vuex-actions &#xff08;2&#xff09;vuex-调用actions &#xff08;3&#xff09;vue2实战-项目搭建 &#xff08;1&#xff09;vuex-actions 有这么一个需求&#xff0c;绿色的组件从服务器获取数据放入store&#xff0c;主…

图片英文翻译成中文转换器-中文翻译英文软件

您正在准备一份重要的英文资料或文件&#xff0c;但是您还不是很熟练地掌握英文&#xff0c;需要翻译才能完成您的任务吗&#xff1f;哪个软件能够免费把英文文档翻译成中文&#xff1f;让我们带您了解如何使用我们的翻译软件来免费翻译英文文档为中文。 我们的翻译软件是一款功…

grep命令详解(如何匹配多个字符串)(grep指令)(grep -q)

文章目录 20221011 grep如何匹配多个标志&#xff1f;20230412 grep -q&#xff08;Use grep -q instead of comparing output with [ -n .. ].警告&#xff09;20230421 匹配前后空格\s 参考文章&#xff1a;grep命令详解 | grep -c [被搜索文本] # 统计被搜索文本出现的次数…

冯诺依曼体系结构

冯诺依曼体系结构 目录 冯诺依曼体系结构引入1、冯诺依曼体系结构1.1 内存1.2 操作系统预加载 2、操作系统2.1 理解管理2.2 系统调用接口2.3 操作系统四大基本功能 引入 冯诺依曼体系结构&#xff08;von Neumann architecture&#xff09;是现代计算机体系结构的基础&#xf…

JavaSE学习进阶day03_03 Object类

第三章 Object类 介绍这个类之前&#xff0c;先回顾一下API&#xff1a; 3.1 概述 java.lang.Object类是Java语言中的根类&#xff0c;即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候&#xff0c;最终找的父类就是Object。 如果一个类没有特别指定父…

手势控制的机器人手臂

将向你展示如何构建机械手臂并使用手势和计算机视觉来控制它。下面有一个在开发阶段的机械手臂的演示视频。 展示开发中的手臂的演示视频&#xff1a;https://youtu.be/KwiwetZGv0s 如图所示&#xff0c;该过程首先用摄像头捕捉我的手及其标志。通过跟踪特定的界标&#xff0c;…

C++语法(16)---- 多态

https://blog.csdn.net/m0_63488627/article/details/130106690?spm1001.2014.3001.5501https://blog.csdn.net/m0_63488627/article/details/130106690?spm1001.2014.3001.5501 目录 1. 多态的概念 2.多态的实现 1.虚函数 2.多态条件 得到的多态条件 特殊条件 3.虚函…

数据结构入门-10-AVL

文章目录 一、AVL的性质1.2 平衡二叉树定义 二、添加需达到平衡2.1 平衡因子2.1.2 平衡因子的实现 2.2 判断该二叉树是否为平衡二叉树2.3 左旋右旋2.3.1 左旋LL右旋RR基本原理2.3.2 LR RLLRRL 三、AVL中删除 一、AVL的性质 平衡二叉树 AVL树得名于它的俄罗斯发明者G. M. Adels…

被裁员了,要求公司足额补缴全部公积金,一次补了二十多万!网友兴奋了,该怎么操作?...

被裁员后&#xff0c;能要求公司补缴公积金吗&#xff1f; 一位网友问&#xff1a; 被裁员了&#xff0c;要求公司把历史公积金全部足额缴纳&#xff0c;现在月薪2.3万&#xff0c;但公司每个月只给自己缴纳300元公积金&#xff0c;结果一次补了二十多万&#xff0c;一次性取出…

Node 【Buffer 与 Stream】

文章目录 &#x1f31f;前言&#x1f31f;Buffer&#x1f31f; Buffer结构&#x1f31f; 什么时候用Buffer&#x1f31f; Buffer的转换&#x1f31f; Buffer使用&#x1f31f; 创建Buffer&#x1f31f; 字符串转Buffer&#x1f31f; Buffer转字符串&#x1f31f; 拼接Buffer&am…

Java每日一练(20230417)

目录 1. N 皇后 &#x1f31f;&#x1f31f;&#x1f31f; 2. 搜索二维矩阵 &#x1f31f;&#x1f31f; 3. 发奖金问题 &#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 …

权限控制_SpringSecurity

认证-授权 认证&#xff1a;系统提供的用于识别用户身份的功能&#xff0c;通常提供用户名和密码进行登录其实就是在进行认证&#xff0c;认证的目的是让系统知道你是谁。 授权&#xff1a;用户认证成功后&#xff0c;需要为用户授权&#xff0c;其实就是指定当前用户可以操作…