c/c++:三维数组,字符数组和字符串,统计字符串中字符出现的频次,scanf输入空格,正则匹配表达式

news2024/9/21 14:29:46

c/c++:三维数组,字符数组和字符串,统计字符串中字符出现的频次,scanf输入空格,正则匹配表达式

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++:一维数组,初始化数组,循环打印数组,计算数组存储空间,数组元素个数,数组逆序算法
【13】c/c++:二维数组,数组的行数和列数求法sizeof,数组初始化不同形式,5个学生,3门功课,求学生总成绩和功课总成绩
【14】c/c++:visual studio的代码快捷键,VS设置自定义默认代码,使用快捷键


文章目录

  • c/c++:三维数组,字符数组和字符串,统计字符串中字符出现的频次,scanf输入空格,正则匹配表达式
    • @[TOC](文章目录)
  • c/c++:多维数组,三维数组【了解】
  • 字符数组和字符串
  • 统计不同字符出现的次数
  • scanf如何输入带空格的字符串呢???
  • 总结

c/c++:多维数组,三维数组【了解】

层行列

数组类型 数组名[层][行][列]

在这里插入图片描述
easy

0层下:放一个二维数组
1层下,放一个二维数组


void f47(void)
{
	int a[2][3][3] = {
		{{1,2,3},
		{1,2,3},
		{1,2,3}},

		{{1,2,3},
		{1,2,3},
		{1,2,3}}
	};//2层,3*3的数组


	//打印一样的
	for (int i = 0; i < 2; i++)
	{
		for (int j = 0; j < 3; j++)
		{
			for (int k = 0; k < 3; k++)
			{
				printf("%d ", a[i][j][k]);
			}
			printf("\n");
		}
		printf("\n");
	}
}


int main(void)
{
	f47();

	system("pause");
	return 0;
}

在这里插入图片描述
easy
反正就是这样搞的

不管多少维,都是这样堆叠出去的。
在这里插入图片描述

字符数组和字符串

区别
字符串屁股是有一个\0的哦
字符数组是没有的

和int数组类似
改char即可


void f48(void)
{
	char str[10] = { 'a','b','c' };//字符数组没有\0
	char s[3] = { 'a','b','\0' };//很麻烦
	char s1[]="ab";//这种定义才完美,默认和s相同

	for (int k = 0; k < 3; k++)
	{
		printf("%c", str[k]);
	}
	printf("\n");

	for (int k = 0; k < 3; k++)
	{
		printf("%c", s[k]);
	}
	printf("\n");

	printf("%s\n", s1);//遇到\0才会结束哦

}


int main(void)
{
	f48();

	system("pause");
	return 0;
}

在这里插入图片描述


void f48(void)
{
	char str[10] = { 'a','b','c' };//字符数组没有\0
	char s[3] = { 'a','b','\0' };//很麻烦
	char s1[]="ab";//这种定义才完美,默认和s相同

	for (int k = 0; k < 3; k++)
	{
		printf("%c", str[k]);
	}
	printf("\n");

	for (int k = 0; k < 3; k++)
	{
		printf("%c", s[k]);
	}
	printf("\n");

	printf("%s\n", s);//遇到\0才会结束哦
	printf("%s\n", s1);//遇到\0才会结束哦

}


在这里插入图片描述
字符数组你直接打印可能gg
定义字符串最好这样:

	char s1[]="ab";//这种定义才完美,默认和s相同

双引号它自动给你加\0哦

在这里插入图片描述

统计不同字符出现的次数

这好说
因为字符是ASCII码
它整个码字范围小于256
所以我们搞一个很简单的数组表示即可
abc的a的ASCII 码是多少来着?
65?
不是,它是A
在这里插入图片描述
a是97
所以呢,这些你都不管的
你只需要把数组的这个97号位置,存放计数即可


void f49(void)
{
	/*printf("%d\n", 'A');
	printf("%d\n", 'a');*/

	char str[100];//多输入点字符串
	//统计,用count数组
	int count[256] = { 0 };//默认全部0次

	int i = 0;//索引字符串的位置
	while (1)
	{//遇到\n结束
		char c;
		scanf("%c", &c);//每次挪动一个i

		if (c == '\n')
		{
			i--;//去把\n干掉
			str[i] = '\0';//这是字符串结尾
			break;//结束输入
		}
		else
		{//计数
			str[i++] = c;
			count[c]++;
		}
	}

	//打印字符
	for (int k = 0; k < 256; k++)
	{
		if (count[k] !=0)
		{
			printf("%c频次:%d\n", k, count[k]);//字符和count
		}
		
	}
}


int main(void)
{
	f49();

	system("pause");
	return 0;
}

count的下标就是字符的ASCII码就行
好说
反正str字符串接受字符串就行
然后count统计各个字符的长度,空间复杂度也就o(1)

反正好说

在这里插入图片描述
这就是会数据结构与算法后,写算法代码那是轻而易举的事情。

	printf("%s频次\n", str);

多打印一下字符串
在这里插入图片描述

scanf如何输入带空格的字符串呢???

正常情况下,空格划分开字符,如果字符串中就想要输入空格呢?
那咋整

注意事项:scanf的特性
1:用于存储字符串的空间要足够,防止溢出
2:获取字符串用%s,遇到空格或者回车结束


void f50(void)
{
	char str[10];//9个字符
	scanf("%s", &str);
	printf("%s", str);
}

int main(void)
{
	f50();

	system("pause");
	return 0;
}

在这里插入图片描述
懂?

通过:
正则表达式“字符组合应用”
杜绝遇到空格gg

sacnf(“%[上尖括号^\n]s”,&str);
上尖括号^表示,除去\n,剩下的我都接受,包括空格



void f50(void)
{
	char str[10];//9个字符
	scanf("%[^\n]s", &str);//除去空格之外的字符我都要了
	printf("%s", str);
}

int main(void)
{
	f50();

	system("pause");
	return 0;
}

在这里插入图片描述
牛逼的

确实OK
%[]s


总结

提示:重要经验:

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

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

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

相关文章

WPF教程(十一)---数据绑定(4)--数据类绑定

一、排序 如果想以特定的方式对数据进行排序&#xff0c;可以绑定到 CollectionViewSource&#xff0c;而不是直接绑定到 ObjectDataProvider。CollectionViewSource 则会成为数据源&#xff0c;并充当截取 ObjectDataProvider 中的数据的媒介&#xff0c;并提供排序、分组和筛…

PMP项目管理-[第六章]进度管理

进度管理知识体系&#xff1a; 规划进度管理&#xff1a; 定义活动&#xff1a; 排列活动顺序&#xff1a; 估算活动持续时间&#xff1a; 制定进度计划&#xff1a; 6.1 规划进度管理 定义&#xff1a;为规划、编制、管理、执行和控制项目进度而制定政策、程序和文档的过程 作…

docker简单教程(三)常用操作

docker简单教程&#xff08;三&#xff09;常用操作 文章目录 docker简单教程&#xff08;三&#xff09;常用操作1&#xff1a;查看所有容器列表&#xff1a;docker ps -a2&#xff1a;查看正在运行的容器列表&#xff1a;docker ps3&#xff1a;运行容器&#xff1a;docker r…

内网渗透之横向移动wmismb密码喷射CrackMapExec

0x01 横向移动之wmi wmi可以通过hash或明文进行验证&#xff0c;不会在系统日志中留下痕迹&#xff0c;使用139端口 复现环境&#xff1a; god.org win2008 dc win2012sql win2008 web 准备&#xff1a; cs上线 win2008web 提权利用ms14-058 抓取hash和明文密码(当获取到其他…

重磅发布,时隔两月——复旦大学MOSS最新0.0.3版本发布

今天中午吃饭的时候无意间看到一则新闻说的就是复旦大学开发的MOSS也就是国产版的类chatGPT对话模型已经发布了最新版本0。0.3&#xff0c;目前公测期间是完全开源免费的&#xff0c;还是可以上手体验一下的。 官方的博客介绍在这里&#xff0c;首页如下所示&#xff1a; 如果…

手机端无线投屏技术及方案推荐

目前主流的无线投屏技术主要又DLNA&#xff0c;Miracast&#xff0c;Airplay。 对协议的描述引用知乎作者的文章&#xff0c;原文&#xff1a;AirPlay、Miracast 、DLNA三大协议对比 - 知乎 (zhihu.com) 【DLNA】 DNLA&#xff0c;Digital Living Network Alliance&#xff…

光照的个人推导过程与GL实现

目录 1、前提知识 1.1、GL的绘图过程&#xff1a; 1.2、点积的规则和作用&#xff1a; 1.3、normalize在方向处理上的作用 2、光照控制的理论基础 2.1、自由的实现&#xff1a; 2.2、带有方向性的光——基于dot product的实现 最终效果演示如下&#xff1a; 3、关键代…

可能是史上最详细的MySQL用户和权限原理和实战

前言 MySQL是一个关系型数据库管理系统&#xff0c;由瑞典MySQL AB 公司开发&#xff0c;属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一&#xff0c;在 WEB 应用方面&#xff0c;MySQL是最好的 RDBMS (Relational Database Management System&#xff0c;关系…

Python - Jupyter - 远程连接Jupyter内核

Python - Jupyter - 远程连接Jupyter内核 前言 假设你有一台高性能服务器&#xff08;电脑B&#xff09;&#xff0c;并且在上面安装好了Jupyter 现在你想使用你自己常用的电脑&#xff08;电脑A&#xff09;编码&#xff0c;但使用电脑B的计算资源。 怎么办呢&#xff1f;…

WPS以普通会员价格升级超级会员

文章目录 一、新会员体系二、基本原理三、升级超级会员1、购买会员时长2、成功通知3、兑换时长 一、新会员体系 4月17日&#xff0c;WPS会员体系全新升级。本次升级&#xff0c;WPS将原“WPS会员”、“稻壳会员”及“超级会员”合并、升级&#xff0c;推出全新的“WPS超级会员…

235:vue+openlayers 绘制带有径向渐变填充色的圆形

第235个 点击查看专栏目录 本示例的目的是介绍如何在vue+openlayer中绘制带有径向渐变填充色的圆形。 如果填充线性渐变的多边形,可以参考这个篇文章 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共136行)相关A…

通过python代码自定义ssh密码爆破

通过python代码自定义ssh密码爆破 一&#xff0c;这段代码的意义&#xff1a;二&#xff0c;直接上写好的代码:三&#xff0c;使用pip3 install paramiko 命令安装库四&#xff0c;使用 python3 test.py 主机地址 -u 用户名 -p 字典路径/五&#xff0c;字典的选取 一&#xff0…

RT-DETR的学习笔记

1. RT-DETR GitHub: PaddleDetection/tree/develop/configs/rtdetr 2. 复现训练流程 2.1 原文使用设备 2.2 环境要求 4*v100 cuda 10.2 paddlepaddle-gpu > 2.4.1 2.3 创建conda环境 conda create --name ppdet python3.102.4 安装RT-DETR推荐的paddle版本 前往官网…

4.26和4.27、selectAPI介绍(4.27、select代码)

4.26和4.27、selectAPI介绍&#xff08;4.27、select代码&#xff09; 1.selectAPI介绍①select多路复用流程图②select多路复用缺点 2.select代码使用介绍3.select代码实现①select服务端实现②select客户端实现 1.selectAPI介绍 主旨思想&#xff1a; 首先要构造一个关于文件…

FreeRTOS 其他任务 API 函数

文章目录 一、任务相关 API 函数预览二、任务相关 API 函数详解1. 函数 uxTaskPriorityGet()2. 函数 vTaskPrioritySet()3. uxTaskGetSystemState()4. 函数 vTaskGetInfo()5. 函数 xTaskGetApplicationTaskTag()6. 函数 xTaskGetCurrentTaskHandle()7. 函数 xTaskGetHandle()8.…

(十二)rk3568 NPU 中部署自己训练的模型,(1)使用yolov5训练自己的数据集-模型训练部分

一、rknn的demo中已经给了yolov5的后处理demo。但是这个后处理只适合yolov5特定版本(v5.0),还有下载特定的分支,如下为下载位置:。 下载地址 ONNX > CoreML > TFLite">GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > T…

LeetCode 27.移除元素

文章目录 &#x1f4a1;题目分析&#x1f4a1;解题思路&#x1f6a9;思路1:暴力求解 --- 遍历&#x1f514;接口源码&#xff1a;&#x1f6a9;思路2:空间换时间&#x1f514;接口源码&#xff1a;&#x1f6a9;思路3:双指针&#xff08;快慢指针&#xff09;&#x1f514;接口…

Linux系统之部署Samba服务

Linux系统之部署Samba服务 一、Samba服务介绍1.Samba服务简介2.NFS和CIFS简介3.Smaba服务相关包4.samba监听端口4.samba相关工具及命令 二、环境规划介绍1.环境规划2.本次实践介绍 三、Samba服务端配置1.检查yum仓库2.安装smaba相关软件包3.创建共享目录4.设置共享目录权限5.新…

Adobe认证证书

Adobe认证证书是Adobe公司颁发的一种专业认证证书&#xff0c;用于证明持有人在相关Adobe软件的使用和应用方面具有专业水平。该证书是业内公认的专业认证&#xff0c;具有较高的价值和认可度&#xff0c;可以帮助持有人提高职业竞争力和工作效率。 Adobe公司提供了多种认证考…

CentOS7(三)MySQL8 Redis7 (单机)安装

文章目录 一、MySQL安装1、确认是否有老版本2、在线安装3、本地安装 二、启动MySQL三、MySQL常用配置1、密码修改2、配置远程登录3、开启防火墙 3306 端口4、 报错5、MySQL中Java写入时间少14小时 四、Redis 安装1、安装Redis依赖2、启动redis3、指定配置启动 & 后台运行4、…