(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)

这篇具有很好参考价值的文章主要介绍了(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

例子:

思路方法:

​编辑

 (分板块)代码的实现:

一.字符串的获取(3种简单的方法)

1.用gets()函数,即使中间有空格也会读取

2.用fgets()函数     

3.用scanf("%[^\n]s")读取也可以达到同样的效果

二.字符串倒置代码的实现:

字符串倒置的代码实现:

 三.每个单词的倒置代码实现:

整个代码的实现:

 知识点总结:



例子:

"I like beijing.",经过处理后变为:"beijing. like I"。
//字符串长度不超过100。(注意不是简单的将字符串全部倒置);


思路方法:

方法:

第一步:先将字符串全部倒置;

第二步:将每个单词进行倒置;

方法2:

也可以先进行单词倒置,在将整个字符串倒置;

图解:

(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)

 


 

(分板块)代码的实现:

一.字符串的获取(3种简单的方法)

注意:

这里我们不能通过循环用scanf函数来读取;因为scanf()函数遇到空格就停止读取;

例如

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	char arr[100];
	int i = 0;
	while (scanf("%s", &arr) != EOF)
	{
		;
	}

	return 0;
}

当输入  “ i  like   beijing." 时,arr的内容为:

(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)

 


解决方法:

1.用gets()函数,即使中间有空格也会读取

#include <stdio.h>
int main()
{
	char arr[100];
	printf("获取字符\n");
	gets(arr);

	printf("\narr字符串的内容为:%s\n",arr);

	return 0;
}

运行结果:

 (c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)

 


2.用fgets()函数     

(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)

 gets(arr,100,stdin)

用法:fgets(读取的字符放大位置(如要放入arr里),限制最多读取多少(如限制最多读取100字符,在哪里读取(如从键盘上获取stdin));

stdin——>标准输入—键盘;

注意:fgets会把(\n)回车作为字符获取;如果\n影响代码实现,不想要\n,可以在读取后,计算字符串长度然后将最后一个字符换为\0;

#include <stdio.h>

int main()
{
	char arr[100];
	printf("获取字符\n");
	fgets(arr,100,stdin);

	printf("\narr字符串的内容为:%s\n", arr);

	return 0;
}

(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)

 删去\n:

#include <stdio.h>

int main()
{
	char arr[100];
	printf("获取字符\n");
	fgets(arr,100,stdin);
	//计算字符串长度(不用sizeof的原因在在其他博客作品
	//”strlen和sizeof的区别及用法中“有写过)
	int len = strlen(arr);
	//将最后一个字符\n用\0取代,从而删去\n
	arr[len - 1] = '\0';

	printf("\narr字符串的内容为:%s\n", arr);

	return 0;
}

效果:

(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)


3.用scanf("%[^\n]s")读取也可以达到同样的效果

加了[^\n]——>意思是一直读取,直到遇到 \n (回车),即使中间有空格

#include <stdio.h>
int main()
{
	char arr[100];
	printf("获取字符\n");
	while (scanf("%[^\n]s", &arr) != EOF)
	{
		;
	}
	printf("\narr字符串的内容为:%s\n", arr);

	return 0;
}

运行结果:(不会像最前面那样遇到空格就停止读取)

(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)

 



二.字符串倒置代码的实现:

因为后面单词的倒置和字符串的倒置相同,所以这里分装一个函数 ReversrArr( ) 来实现倒置;

这里参数只需将字符串的初末元素地址传入,用指针char* left  和char* right接收

数组名即首元素地址,容易得到;

末元素地址可以用strlen(arr)函数得到长度,再用(arr+长度-1)得到;

(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.) 

字符串倒置的代码实现:

//字符串倒置代码实现
void ReverseArr(char* left, char* right)
{
	while (left < right)
	{
		char tmp = *left;//中间变量
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
#include <stdio.h>
#include <string.h>

int main()
{
	char arr[100];
	printf("获取字符\n");
	gets(arr);
	//计算字符串的长度
	int len = strlen(arr);
    //倒置字符串
	ReverseArr(arr,arr+len-1);

	printf("%s\n",arr);

	return 0;
}

运行结果:

(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)



 三.每个单词的倒置代码实现:

我们要用前面的 ReverseArr()需要知道每个单词的起始leftright

由于每个单词用 空格 隔开的,所以我们可以用 空格 来作为遍历条件

(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)

 

代码实现:

//每个单词的倒置
	char* start = arr;
	char* end = arr;

	while (*end != '\0')
	{
		while (*end != ' ' && *end != '\0')
		{
			end++;
		}
		ReverseArr(start, end-1);
		start = end + 1;
		if (*end == ' ')
		{
			end++;
		}
	}


整个代码的实现:

//字符串倒置代码实现
void ReverseArr(char* left, char* right)
{
	while (left < right)
	{
		char tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}
}
#include <stdio.h>
#include <string.h>

int main()
{
	char arr[100];
	printf("获取字符\n");
	gets(arr);
	/*printf("%s\n",arr);*/
	//计算字符串的长度
	int len = strlen(arr);
	ReverseArr(arr,arr+len-1);
	/*printf("%s\n",arr);*/
	//每个单词的倒置
	char* start = arr;
	char* end = arr;

	while (*end != '\0')
	{
		while (*end != ' ' && *end != '\0')
		{
			end++;
		}
		ReverseArr(start, end-1);
		start = end + 1;
		if (*end == ' ')
		{
			end++;
		}
	}
	printf("%s\n",arr);

	return 0;
}

运行结果:

(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)

 


知识点总结:

1.该算法思想

2.字符串输入(获取)的3种方法

       1.  scanf("%[^\n]s",&arr)   注意:scanf("%s",&arr)遇到空格会停止读取    

加了[^\n]——>意思是一直读取,直到遇到 \n (回车),即使中间有空格

       2.gets(arr)    可以读取空格

       3.fgets(arr,100,stdin)   

           arr --->读取的文本放在哪里(arr)

          100--->读取的最大限制

          stdin--->标准输入----键盘

          注意:fgets会把(\n)回车作为字符获取;如果\n影响代码实现,不想要\n,可以在读取                后,计算字符串长度然后将最后一个字符换为\0;删除方法示例在前面fgets处

3.倒置字符串和单词的方法文章来源地址https://www.toymoban.com/news/detail-466538.html

到了这里,关于(c语言)将一句话的单词进行倒置,标点不倒置(i like beijing.)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 你真的了解一句话木马吗?

    目录 一、前言: 二、什么是一句话木马: 三、常见的一句话木马: 木马讲解: 1、$_POST[cmd] 2、eval() 3、\\\"@\\\" 4、脉络梳理 四、可用于条件竞争的一句话木马: 木马讲解: 1、fopen() 2、fputs()  3、脉络梳理 五、图片马 1、什么是图片马: 2、.htaccess 3、木马图片 4.   .user.ini扩展

    2024年02月04日
    浏览(51)
  • 一句话画出动漫效果

     链接: AI Comic Factory - a Hugging Face Space by jbilcke-hf Discover amazing ML apps made by the community https://huggingface.co/spaces/jbilcke-hf/ai-comic-factory 选择类型: Japanese  输入提示词: 效果如下:

    2024年02月10日
    浏览(57)
  • 蚁剑连接一句话木马演示

    需要准备 一台虚拟机作为服务器,一台作为攻击机(可用主机),将虚拟机的网络都设置为桥接。 我这里服务器用win2008R2系统 攻击机用win10 接下来我会演示 php 的一句话木马 其他脚本语言的一句话木马使用过程和这个差别不大 在服务器上安装phpstudy 快速搭建服务器 安装成

    2024年02月14日
    浏览(49)
  • 文件上传漏洞—一句话图片马制作

    提要 :在文件上传漏洞中,通常需要上传脚本类型的文件至服务端执行,获取WebShell,但是网站会严格过滤脚本类型的文件,这个时候便可以通过图片马来尝试突破。 简介 :在图片格式文件(JPG,PNG和GIF等)中添加隐藏一句话木马,利用文件包含漏洞,Web容器解析漏洞和.

    2024年02月07日
    浏览(52)
  • 解封ChatGPT我只用了一句话

    文章前言 ChatGPT作为一个AI语言模型可以帮助使用者生成各种各样的文字内容,目前已被广泛应用于各种语言任务中,例如:文本生成、机器翻译、问答系统等,基于保障使用者权益和维护良好的价值观,官方限制ChatGPT不能回答不当言论(攻击或侮辱性)、敏感内容和带有偏见的

    2024年02月16日
    浏览(39)
  • 渗透干货|史上最全一句话木马

    PHP //可执行命令一句话 普通一句话 PHP系列 过狗一句话 【----帮助网安学习,以下所有学习资料文末免费领!----】 几个变性的php–过防火墙 过狗效果都不错: 密码-7 phpv9 高版本拿shell ASP asp 一句话 ASP过安全狗一句话 ASPX系列 ASPX一句话的 过安全狗效果不怎么样 不过我认为能

    2024年04月25日
    浏览(45)
  • 一句话解释什么是出口IP

    出口 IP 是指从本地网络连接到公共互联网时所使用的 IP 地址。这个 IP 地址是由 Internet 服务提供商(ISP)分配给你的,它可以用来标识你的网络流量的来源。如果你使用的是 NAT(网络地址转换)技术,则在 NAT 设备内部会进行地址转换,使得多个设备可以共享同一个公共 I

    2024年02月08日
    浏览(42)
  • java安全——jsp一句话木马

    提示:以下是本篇文章正文内容,下面案例可供参考 http://localhost:8003/index.jsp?cmd=whoami 不会回显执行的结果只能在后台打印一个地址,常用来反弹shell 代码如下(示例):

    2024年02月11日
    浏览(48)
  • 一句话介绍大数据各种名词及其特点

    大数据 :传统PC无法处理的。数据大、数据类型繁多、处理速度快、价值密度低。 Hadoop :能够对大数据进行分布式处理的软件框架、这种处理具有高效、可靠、可伸缩的特点。Hadoop的特点:高效率、高可靠、高容错、高可拓展。成本低、Linux运行支持多语言。 SSH :建立在应用

    2024年02月03日
    浏览(39)
  • 【AI绘画】给我一句话,送你一幅画。

    什么是AI绘画 通俗的说,AI绘画就是AI通过学习训练出自己的思考模型,然后绘画。 AI绘画优劣势 你可以把AI理解为一个天赋非凡的外国绘画神童 优势 (效率高) 天赋非凡 :绘画的速度非常快,效率非常高,图片也很精美 不足 (理解局限) 外国 :相对国内而言,训练模型

    2024年02月09日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包