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

news2024/11/24 15:53:50

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,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【从零开始学Skynet】实战篇《球球大作战》(十一):测试登录流程

终于可以测试work协议了。只要走得通&#xff0c;就代表完成了整套底层框架。 1、主服务修改 我们重新修改主服务&#xff0c;让它智能一些&#xff0c;根据配置文件自动开启服务&#xff0c;无须手动设置。如下代码所示&#xff1a; local skynet require "skynet"…

Linux应用编程(信号基础)

一、基本概念 信号是事件发生时对进程的通知机制&#xff0c;也可以把它称为软件中断。信号与硬件中断的相似之处在于能够打断程序当前执行的正常流程&#xff0c;其实是在软件层次上对中断机制的一种模拟。大多数情况下&#xff0c;是无法预测信号达到的准确时间&#xff0c;…

录屏剪辑软件哪个好 录屏后怎么剪辑视频

​ 现在很多人都会通过录屏的方式来传播分享内容&#xff0c;但是很多录屏软件的操作不太方便&#xff0c;给录制带来困难。再加上很多视频在录制后需要剪辑&#xff0c;加大了视频制作的工作量&#xff0c;所以找到一款好用的录屏剪辑软件很重要。今天就来分享一下录屏剪辑软件…

从0-1优化C++类对象创建资源消耗 (附源码)

C++常用功能源码系列 文章目录 C++常用功能源码系列前言一、C++几种常用的函数是什么?二、优化过程1.源代码2.源代码总结前言 本文是C/C++常用功能代码封装专栏的导航贴。部分来源于实战项目中的部分功能提炼,希望能够达到你在自己的项目中拿来就用的效果,这样更好的服务于…

Spring MVC 配置(10)

目录 简介&#xff1a; 传统方式&#xff1a; 纯注解方式 1. Tomcat加载Servlet 2. 参数分析 3. 调用onStartup方法 注解方法替换配置的 xml 文件 简介&#xff1a; Spring MVC是Spring的一个子模块&#xff0c;也是我分析的Spring源码的最后一个模块。下面看一下Spring …

2023年安全岗面试题及经验分享

如果你正在面试安全岗&#xff0c;那么恭喜你及时看到了这篇文章~ 写在前面 本篇为大家整理了上百道网络安全面试题&#xff0c;主要方向有 网络基础、渗透测试、安全工具 等&#xff0c;其中还包括 HVV面试、CISP备考 等&#xff0c;希望在求职期可以帮到大家​&#xff01;…

WAF绕过信息收集

WAF绕过-信息收集之反爬虫延时代理池技术 思维导图 WAF拦截会出现在安全测试的各个层面&#xff0c;掌握各个层面的分析和绕过技术最为关键。 webpathbrute工具 一个Web目录扫描暴力探测工具 WebPathBrute-Web路径暴力探测工具下载&#xff1a;https://github.com/7kbstorm…

QN88封装国产FPGA

QN88GW1N-9管脚名GW2A-18管脚名AL3S10EG4S201VCCVCCIO_L1_1VCC_12VSSVSSIO_L2_1IO_L1_13IOL2AVCCO7IO_L3_1,MOSI,D1IO_L2_14IOL5A/JTAGSEL_N/LPLL_T_inIOL7A/LPLL1_T_inIO_L4_1IO_L1N_15IOL11A/TMSIOR25B/TMSIO_L5_1,SPICSNIO_L1P_16IOL11B/TCKIOR26A/TCKINITNGND7IOL12B/TDIIO…

爬虫日常练习-selenium登录12306

文章目录前言页面分析代码设计前言 hello&#xff0c;好兄弟们。经过前面几篇文章后&#xff0c;想必小伙伴们对于简单的网页文本爬取&#xff0c;图片爬取类的内容已经熟练掌握了。今天我们开始练习一个新的内容&#xff1a;selenium。有关这一块的基础知识网上太多了&#x…

Java面试题总结 | Java面试题总结4-多线程模块(持续更新)

多线程 线程互斥和线程同步 线程互斥&#xff1a;当多个线程需要访问同一资源时&#xff0c;要求在一个时间段内只能允许一个线程来操作共享资源&#xff0c;操作完毕后别的线程才能读取该资源&#xff0c;这叫线程的互斥。我们需要使用synchronized来给共享区域加锁&#xf…

腾讯云服务器CVM标准型S5和S4的区别

腾讯云服务器CVM标准型S5和S4有什么区别&#xff1f;标准型S5云服务器次新一代的云服务器&#xff0c;CPU采用2.5GHz主频的Intel Xeon Cascade Lake 或者 Intel Xeon Cooper Lake 处理器&#xff0c;睿频3.1GHz&#xff0c;目前标准型S5云服务器活动比较多&#xff0c;标准型S4…

Android 10.0 系统systemui下拉通知栏的通知布局相关源码分析

1.前言 在android10.0的系统rom开发中,在进行systemui中的下拉通知栏的布局自定义的时候,对于原生systemui的 系统的下拉通知栏的通知布局的了解也是非常重要的,接下来就来分析下相关的下拉通知栏的通知布局的相关 源码流程,了解这些才方便对通知栏的布局做修改 2.系统…

一种二级水闸安全监测布置及设备安装维护方案案例

1.1安全监测布置 1.1.1 拦河闸及泵站监测 拦河闸和水轮泵站主要安全监测项目包括&#xff1a; (1) 表面变形监测 在拦河闸上游侧闸顶布置1条引张线监测闸顶水平位移&#xff0c;每一联中孔闸墩上及左岸水轮泵站边墩处各布置1个测点&#xff0c;共计9个测点&#xff0c;左右…

【IIS搭建网站】如何使用本地电脑做服务器搭建web站点并公网访问

目录 前言 Windows网页设置 Windows IIS功能设置 IIS网页访问测试 Cpolar内网穿透 下载安装Cpolar Cpolar云端设置 3.3 Cpolar本地设置 公网访问测试 结语 前言 在网上各种教程和介绍中&#xff0c;搭建网页都会借助各种软件的帮助&#xff0c;比如网页运行的Apache…

Tomcat长轮询原理与源码解析

零丶长轮询的引入# 最近在看工作使用到的diamond配置中心原理&#xff0c;发现大多数配置中心在推和拉模型上做的选择出奇的一致选择了基于长轮询的拉模型 基于拉模型的客户端轮询的方案 客户端通过轮询方式发现服务端的配置变更事件。轮询的频率决定了动态配置获取的实时性。…

win10家庭版 WSL Centos7

win10家庭版 WSL Centos7虚拟机WSLCentos7虚拟机 以前在win系统上跑liunx系统一般是先安装个虚拟机软件&#xff0c;再在虚拟机上运行对于linux的镜像。 直到后来win推出了WSL。 WSL Windows Subsystem for Linux&#xff08;简称WSL&#xff09;是一个在Windows 10\11上能够…

力扣sql中等篇练习(二)

力扣sql中等篇练习(二) 1 第N高的薪水 1.1 题目内容 1.1.1 基本题目信息 1.1.2 示例输入输出 1.2 示例sql语句 -- 注意:limit函数是不能使用变量-1这种作为条件的,如N-1是不被允许的 CREATE FUNCTION getNthHighestSalary(N INT) RETURNS INT BEGINdeclare m INT;SET mN-1;…

大厂敲门砖!!!让你轻松扫除通往大厂的障碍,一步到岸!!2023年究极最全(Java面试手册)!!!

又到了一年一度的大厂招牌环节&#xff0c;多少程序员在为了金三银四在前几个月疯狂卷面试题&#xff0c;却还是惨遭淘汰&#xff0c;今天给大家整理了一份最最最核心的java面试题&#xff0c;希望能对大家在进击大厂的道路上添一份力&#xff01; 总纲&#xff1a; 由于文章篇…

Canal(2):Canal 部署与配置

1 mysql数据库配置 1.1新建数据库 1.2 新建测试表 CREATE TABLE user_info(id VARCHAR(255),name VARCHAR(255),sex VARCHAR(255) ); 1.3 修改配置文件开启 Binlog vim /etc/my.cnf server-id4 log-binmysql-bin binlog_formatrow binlog-do-dbcaneltestdb 1.4 重启MySQL使配…

Vue3 + TypeScript 实现自动打字、打字机动画、动画打字工具(TypeIt)

一、介绍 &#x1f475; &#x1f475; TypeIt是一个JavaScript库&#xff0c;用于创建简单而流畅的打字效果和动画效果。它可以用于网页开发中的很多场景&#xff0c;例如创建动态文字效果、制作页面过渡动画、增强用户体验等。 我们还可以利用它进行一些后端日志的回显&…