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

news/2024/4/24 22:54:27/

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' };//字符数组没有\0char 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' };//字符数组没有\0char 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);//每次挪动一个iif (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.ppmy.cn/news/48397.html

相关文章

[ES6] string 拓展

[ES6] string 拓展 ES6 方法拓展是否包含子串字符串重复字符串补全 字符串普通字符串双引号单引号 模板字符串插入变量和表达式设置输出格式标签模板 ES6 方法拓展 是否包含子串 ES6 之前判断字符串是否包含子串&#xff0c;用 indexOf 方法&#xff0c;ES6 新增了子串的识别…

Kafka中时间轮分析与Java实现

仿kafka实现java版时间轮_java实现时间轮算法_Hekliu的博客-CSDN博客 https://www.cnblogs.com/softlin/p/7426083.html https://blog.csdn.net/happyjacob/article/details/128518700 一、背景 在Kafka中应用了大量的延迟操作但在Kafka中 并没用使用JDK自带的Timer或是Dela…

tf-idf+lda分析多篇文章摘要

import pandas as pd import numpy as np import matplotlib.pyplot as plt #import seaborn as sns plt.rcParams[font.sans-serif] [KaiTi] #指定默认字体 SimHei黑体 plt.rcParams[axes.unicode_minus] False #解决保存图像是负号 import jieba import os # stop_list …

中级软件设计师备考---数据库系统1

目录 数据库模式数据库的设计过程E-R模型关系代数与元组演算 数据库模式 三级模式、两级映射 定义&#xff1a; 三级模式&#xff1a;外模式、概念模式和内模式&#xff1b;两级映射&#xff1a;外模式-概念模式映射、概念模式-内模式映射 外模式是用户看到的数据库的部分 概…

18-java单列集合

java单列集合 1.集合体系结构1.1 单列集合1.2 双列集合 2. 单列集合体系结构3.Collection集合顶层接口3.1 Collection的遍历方法3.1.1 迭代器遍历3.1.2 增强for遍历3.1.3 Lambda表达式 4. List单列集合4.1 List4.1.1 List集合特点4.1.2 List集合的特有方法4.1.3 List集合遍历方…

mysql用户权限与控制

用户管理 1.1 登录MySQL服务器 启动MySQL服务后&#xff0c;可以通过mysql命令来登录MySQL服务器&#xff0c;命令如下&#xff1a; mysql –h hostname|hostIP –P port –u username –p DatabaseName –e “SQL语句” -h参数后面接主机名或者主机IP&#xff0c;hostname为主…

Qt Style Sheets Examples整理

文章目录 样式表用法使用动态属性自定义使用Box模型自定义QPushButton自定义QPushButton的菜单指示子控件复杂选择器完整代码&#xff1a; 特定部件样式表QAbstractScrollAreaQCheckBoxQComboBoxQDockWidgetQFrame QProgressBar QPushButton QSlider完整代码&#xff1a; 原…

C#生成单色bmp图片,转为单色bmp图片 任意语言完全用字节拼一张单色图,LCD取模 其它格式图片转为单色图

最终效果&#xff1a; V1.8.2 20230419 文字生成单色BMP图片4.exe 默认1280*720 如果显示不全&#xff0c;请把宽和高加大 字体加大。 首先&#xff0c;用windows画板生成一张1*1白色单色图作为标准&#xff0c;数据如下&#xff1a; 数据解析参考&#xff1a;BMP图像文件完…

nodejs+vue 智慧餐厅点餐餐桌预订系统

现在社会的生活节奏越来越快&#xff0c;人们对互联网的需求也越来越大&#xff0c;不仅要求使用方便&#xff0c;而且对于功能及扩展性也有了更高的要求&#xff0c;最能达到要求莫过于利用计算机网络&#xff0c;将所需功能要求和计算机网络结合起来&#xff0c;就形成了本智…

【录用案例】1区SCI仅36天录用,新增多本1-2区SCI,CNKI评职好刊发表案例

我处上周&#xff08;2023年4月8日-2023年4月14日&#xff09;经核实&#xff0c;由我处Unionpub学术推荐的24篇论文已被期刊部录用、20篇见刊&#xff0c;5篇检索&#xff1a; ✔新增1区纳米与环境类SCI&EI&#xff0c;仅36天录用&#xff0c;录用后17天见刊&#xff1b;…

领域驱动设计(DDD)

目录 领域驱动设计(DDD)架构演进 DDD的几种典型架构 领域驱动设计(DDD)架构演进 IAAS:基础设施服务,Infrastructure-as-a-service。PAAS:平台服务,Platform-as-a-service。SAAS:软件服务,Software-as-a-service。 图架构的演进过程,通过对三个层的举例来进行说明…

ThreadLocal 内存泄露的原因及处理方式

1、ThreadLocal 使用原理 ThreadLocal的主要用途是实现线程间变量的隔离&#xff0c;表面上他们使用的是同一个ThreadLocal&#xff0c; 但是实际上使用的值value却是自己独有的一份。用一图直接表示threadlocal 的使用方式。 从图中我们可以当线程使用threadlocal 时&#xf…

使用MyBatis实现简单查询

文章目录 一&#xff0c;创建数据库与表&#xff08;一&#xff09;在Navicat里创建MySQL数据库testdb&#xff08;二&#xff09;创建用户表 - t_user&#xff08;三&#xff09;在用户表里插入3条记录 二&#xff0c;案例演示MyBatis基本使用&#xff08;一&#xff09;创建M…

JavaScript(JS)-1.JS基础知识

1.JavaScript概念 (1)JavaScript是一门跨平台&#xff0c;面向对象的脚本语言&#xff0c;来控制网页行为的&#xff0c;它能使网页可交互 (2)W3C标准&#xff1a;网页主要由三部分组成 ①结构&#xff1a;HTML负责网页的基本结构&#xff08;页面元素和内容&#xff09;。 …

[oeasy]python0136_接收输入_input函数_字符串_str

输入变量 回忆上次内容 上次研究了 一行赋值多个变量 a b 5a, b 7, 8 还研究了 标识符的惯用法 python使用的是 snake_case蛇形命名法用下划线 分隔开小写字母的 方法这样就可以 更合理地 命名变量了 变量变量 能变的量我可以 手工输入变量的值 吗&#xff1f;&#x1f9…

解决若依验证码异常:Error: image == null

前言 前两天在改项目突然发现若依的框架可以正常启动但是验证码加载不出来了&#xff0c;一直弹窗提示异常信息&#xff0c;下边是关于问题的描述和解决方案&#xff0c;没有耐心看过程的建议直接滑到最底下看解决方式 问题原因 登录页面一直提示 image null 如图 1 所示&…

基于数据驱动的智能空调系统需求响应可控潜力评估研究(Matlab代码实现)

&#x1f4a5; &#x1f4a5; &#x1f49e; &#x1f49e; 欢迎来到本博客 ❤️ ❤️ &#x1f4a5; &#x1f4a5; &#x1f3c6; 博主优势&#xff1a; &#x1f31e; &#x1f31e; &#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 …

网络协议-加密和HTTPs证书

目录 对称加密和非对称加密 加密解密 加密方法/解密方法 对称加密/非对称加密 非对称加密&#xff08;秘钥对&#xff09; 思考 解决信任问题 证书体系 算法如何验证证书就是Alibaba 实际的证书体系 ​编辑 常见算法介绍 DES&#xff08;Data Encryption Standard&…

【Go】一、Go语言基础

Go基础学习 Go基础1、开发环境2、Go语言的主要特征2.1、Go语言的数据类型2.2、Go语言基础语法2.3、Go语言变量2.4、Go语言常量 3、Go内置类型和函数4、init函数和main函数4.1、init函数4.2、main函数 5、命令6、运算符7、下划线7.1、下划线在import中7.2、下划线在代码中 8、数…

霍纳法则(Horner‘s rule)

文章目录 霍纳法则(Horners rule)程序设计程序分析霍纳法则(Horner’s rule) 【问题描述】 用霍纳法则求一个多项式在一个给定点的值 【输入形式】输入三行,第一行是一个整数n,表示的是多项式的最高次数;第二行多项式的系数组P[0…n](从低到高存储);第三行是一个整数…