用C语言输出一个字符串的所有子串

article/2025/4/24 2:11:08

前言

啥是子串?
串中任意个连续字符组成的子序列称为该串的子串。
包含子串的串相应地称为主串。
①空串是任意串的子串。
②任意串是其自身的子串。
例:字符串"12"它的字串为"1",“2”,“12”,空串。共四个字串。

原理

懂了子串的概念我们来分析一下原理:
当字符串是"1"的时候
子串为:
“1”
空串
字串个数为2=1+1

当字符串是"12"的时候
子串为:
“1” “12”
“2”
空串
字串个数为4 =2+1+1

当字符串是"123"的时候
子串为:
“1” “12” “123”
“2” “23”
“3”
空串
字串个数为7=3+2+1+1

当字符串是"1234"的时候
子串为:
“1” “12” “123” “1234”
“2” “23” “234”
“3” “34”
“4”
空串
字串个数为11=4+3+2+1+1

通过上面的规律可以看出是一个等差数列再加1
设字符串的长度为n;子串个数为s
则s=n(n+1)/2+1;

看一下下面这张图:
在这里插入图片描述
这所有子串不就是一个倒三角么?不过是一个稍微特殊的倒三角
是不是特别的神奇。

这是我之前写的c语言输出等腰三角形文章。

分析

以这张图为例:
在这里插入图片描述
我们要输出倒三角的话,是需要二层嵌套的for循环的。
这个和平常的不一样。应该需要三层的for()循环。究竟是不是?我们分析一下便知道了。


正所谓,遇到个难的问题要先化简为一个个小问题。
我们先分析一下如何输出第一行。
”1“,”12“,”123“,”1234“,
你会发现都是从第一个字符"1"开始,然后依次遍历。这一定需要一个循环。先设为j吧。
再来分析它们的长度是依次增加的。这一定也需要一个循环。先设为i吧。
故由上可知: i代表这一个的字符串的长度,j代表初始遍历的下标
分析一下i和j的关系,
当 i=1 j遍历1次
当 i=2 j遍历2次
当 i=3 j遍历3次
可以看出:随之i的增加,j遍历的次数也在增加。
于是,代码如下:
在这里插入图片描述

因为在C语言里的初始下标是从0开始的。
但是i的含义是代表字符串的长度。
上面那种代码不方便理解,于是有了下面这个代码。

在这里插入图片描述
下面再来分析一下,如何输出多行。
你会发现,第一行最长为"1234",第二行最长为"123"。
说明随着行数的增加,每行的字符串的最大长度在减少。
这说明需要第三层的for()循环。
而最外层的for()循环是控制这一行的最大长度的。
设最外层的for()循环的循环变量为k。
分析一下k和i的关系。
k是用来控制这一行的字符串的最大长度。即 i 的最大值


再分析一下
第一行的字符串的下标都是从第一个开始的。
第二行的字符串的下标都是从第二个开始的。
所以每输出一行,开始遍历的下标就得增1,即 j 随着行数的增加 j的初始值逐渐变大。
故总的代码如下:
在这里插入图片描述

ok大功告成。

下面开始一些美化:
在这里插入图片描述

总结

遇到问题一步步的分析。本题直接上手三层循环不容易想出来。
先二层循环,再添加三层循环,一步步分析,调试,弄懂原理。


http://chatgpt.dhexx.cn/article/oytEKFBN.shtml

相关文章

C语言 字符数据输入输出

文章目录 C语言的标准库函数头文件 字符数据的输入输出putchar 函数(单字符输出函数)输出一个字符:输出控制字符输出转义字符 getchar 函数(单字符输入函数) 所谓数据的输入输出是从计算机角度出发的。 C语言本身没有…

c语言输出汉字字符串,c语言怎么输出字符串

C语言输出简单的字符串,例如个人信息的相关字符串,包括姓名、出生日期、号码。我们可以通过printf()函数直接打印输出指定信息字符串。 推荐教程:《C视频教程》 下面我们就通过简单的代码示例,给大家介绍c语言输出个人信息相关字符…

C语言程序——输出字符

为学日益,为道日损 文章目录 前言一、使用C语言一般格式显示字符二、编写代码2.运行结果 总结 前言 一个标准的C语言程序具有的一般格式: 预处理命令和全局性的声明 main() 主函数 { 局部变量声明 语句序列 } fun1()函数1 { 局部变量声明 语句序列 } fu…

C语言字符和字符串的输入与输出

C语言 一、输入单个字符 1、scanf函数输入单个字符 C语言scanf输入时缓冲区问题 scanf函数是标准输入流(从键盘接收数据),接收的数据放入输入缓冲区中,其中就包括在键盘输入的空格、回车这类字符,当你用%d接收时是不会影响的&a…

【C语言--字符数据的输入输出】

1、putchar函数–字符输出函数 功能是在显示器上输出单个字符。形式为:putchar(字符变量); 例如: putchar(A);//输出大写字母A putchat(x);//输出字符变量x的值2、getchar函数–键盘输入函数 功能是从键盘上输入一个字符。形式为:getchar(…

C语言打印输出字符串的几种方法

思路分析 知识点补充 1,在C语言中,一维数组的数组名实际上就是指向数组首项元素的指针。 2,如果指针p已经指向一个字符串,判断字符串是否结束,一般采用while(*p!\0)的办法。 以打印输出arr[30]"hello world&qu…

C语言——字符串、打印字符串的三种方式

文章目录 前言一、字符串1.字符串常量2.注意 scanf() 读取字符串例如,scanf() 输入中间有空格的字符串后观察打印情况 3.sizeof()函数计算字符串尺寸,strlen()函数计算字符串长度例子: 4.字符数组定义和初始化(1)传统的字符集合赋值&#xff…

C语言 格式输入输出与字符输入输出

提示:以下是本篇文章正文内容,下面案例可供参考 一、 格式输入输出 1、格式输出——printf函数 (1)格式 printf("格式控制",输出列表项); 格式控制分为格式声明(%和格式字符&am…

jmeter+ant+jenkins-接口自动化持续集成(与之类似的postman+newman+Jenkins接口自动化持续集成)

jmeterantjenkins-接口自动化持续集成 jmeterantjenkins-接口自动化持续集成基本安装配置Ant配置Jmeter配置Jenkins,构建持续集成 jmeterantjenkins-接口自动化持续集成 Jmeter可以做接口测试,也能做压力测试,而且是开源软件 Ant是基于Java的…

MAC jmeter+ant 实现接口测试并将接口测试报告以邮件的形式发出-超详细

最近项目组涉及到接口测试,然后自己想着如何输出接口测试的报告,经过自己的了解,发现测试行业中每个公司每个测试人员输出的方式都不一样的。常规的有以下几种 使用表格的形式,手动去写,以总结的形式,给到…

jmeter+ant+jenkins接口自动化测试框架搭建

一个完整的接口测试框架需要支持接口的自动执行,自动生成测试报告,以及持续集成。Jmeter可以做接口测试;Ant是基于Java的构建工具,完成脚本执行并收集结果生成报告,可以跨平台;Jenkins是持续集成工具。将这…

windows下,jmeter+jenkins+ant接口自动化测试环境搭建

(一)jdk安装与配置 利用jmeter进行接口自动化,需要用到jdk,因此需要下载并安装jdk,下载jdk并配置好环境变量(可参考网上教程) (二)ant安装与配置 1.下载ant&#xff0…

Jmeter+Jenkins+Ant接口自动化测试平台搭建(Mac)输出测试报告(二)

1、首先将apache-jmeter-3.2extras下面的ant-jmeter-1.1.1的jar包复制到ant的lib目录下 复制到你安装ant目录下的lib文件里(这里就不贴图里) /usr/local/Cellar/ant/1.10.6/libexec/lib 提示:如果大家下载完ant后找不到路径,可以在终端输入命令&#x…

用JMeter+ANT进行接口自动化测试,并生成HTML测试报告

前言 小伙伴们,用python做接口自动化是不是写代码比较繁琐,而且没有python代码基础的小伙伴根本无从下手对吧!今天我们来学习一下如何使用JMeter工具实现接口自动化测试。 安装 1、安装JDK,配置java环境变量(安装过程…

jmeter——jmeter+ant生成优化的HTML接口自动化测试报告

jmeterant生成优化的HTML测试报告 一、最终实现效果展示二、实现方式1、环境搭建2、实现原理3、报告生成方式 三、实现步骤1、jar包转移:实现ant调用jmeter脚本2、jmeter插件包处理3、build文件的创建和修改4、报告展示信息调整5、html报告样式优化 四、遗留问题、 …

不会Python,用JMeter+ANT进行接口自动化测试,同样生成HTML测试报告,拿下20k轻轻松松

用python做接口自动化是不是写代码比较繁琐,而且没有python代码基础的小伙伴根本无从下手对吧!今天我们来学习一下如何使用JMeter工具实现接口自动化测试。 一、安装 1、安装JDK,配置java环境变量(安装过程略) 2、安…

jmeter+csv+ant接口自动化测试--利用apache-ant执行测试用例并生成HTML格式测试报告(二)

在上一篇博文中介绍了如何使用csv文件来批量管理接口,本篇博文介绍如何利用apache-ant执行测试用例并生成HTML格式测试报告。 ①下载安装apache-ant-1.10.0,配置环境变量 如下方式检验安装是否成功,若展示如下即安装成功。 ②安装好ant后&am…

测试萌新必看!用JMeter+ANT进行接口自动化测试,并生成HTML测试报告

【文章末尾给大家留下了大量的福利】 小伙伴们,用python做接口自动化是不是写代码比较繁琐,而且没有python代码基础的小伙伴根本无从下手对吧!今天我们来学习一下如何使用JMeter工具实现接口自动化测试。 01 安装 1、安装JDK,…

小白必看!用JMeter+ANT进行接口自动化测试,并生成HTML测试报告

小伙伴们,用python做接口自动化是不是写代码比较繁琐,而且没有python代码基础的小伙伴根本无从下手对吧!今天我们来学习一下如何使用JMeter工具实现接口自动化测试。 01 安装 1、安装JDK,配置java环境变量(安装过程略…

jmeter+ANT接口自动化环境的搭建以及测试报告的优化

1.安装JDK 下载地址:Java Downloads | Oracle 配置环境变量: JAVA_HOME C:\Program Files\Java\jdk1.8.0_171 path ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin CALSS_PATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.ja…