文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

C语言 分析逆序字符串与字符串的逆序输出有什么区别

2024-04-02 19:55

关注

今天我们讲解字符串的逆序和逆序输出,并且通过一个综合题型来加深印象和练手!

前言

逆序字符串和字符串的逆序输出,可能经常会有人混淆,所以今天带大家一起来看一看吧!

一、字符串的逆序

字符串的逆序输出是什么?

逆序字符串:针对一个输入的字符串数组,通过逆序,将其数组内容进行翻转逆序。

字符串的逆序输出:对于一个字符串,只需要数组创建,然后求出字符串的长度,从字符串数组最后一个元素依次输出,直到第一个元素。即可完成字符串的逆序输出。

二、实例讲解

1.字符串的逆序输出

代码如下(示例):

#include<stdio.h>
#include<string.h>
int main()
{
 
char arr[]="1234567";
int i=0;
int sz=strlen(arr);
for(i=sz-1;i>=0;i--)
  {
  printf("%c",arr[i]);
  }
  return 0;
}

可以看出,在输入字符串以后,逆向打印出字符串数组的每一个元素,只需要要从数组的最后一个下标,即数组元素的个数减1,开始算起,到数组下标为0.输出即可!

2.逆序字符串

#include<stdio.h>
#include<string.h>
void reverse(char* left, char *right)
{
	while (left < right)
	{
		char temp = *left;
		*left = *right;
		*right = temp;
		left++;
		right--;
	}
 
}
int main()
{
	char arr[] = "1234567";
	int sz = strlen(arr);
	int i = 0;
	reverse(arr, arr+sz-1);
	for (i = 0; i < sz; i++)
	{
		printf("%c", arr[i]);
	}
	return 0;
}

通过reverse函数,将字符串内部逆置。

while (left < right)

    {

        char temp = *left;

        *left = *right;

        *right = temp;

        left++;

        right--;

    }

通过传址,将数组的首地址和元素的最后一个地址传到reverse函数中,通过解引用,交换其两端的值,来达到逆置字符串.

3.综合实例

 首先,看到题目后,我们应该分三步!!

1.将整个字符串进行倒置

.gnijieb ekil I

2.将每部分字符串倒置

beijing. like I

具体代码如下

void reverse(char* left, char* right)
{
	while (left < right)
	{
		char temp = *left;
	    *left = *right;        
		*right = temp;
		left++;
		right--;
	}
}
int main()
{
	char arr[100] = { 0 };
    //输入字符串
	gets(arr);     
	int sz = strlen(arr);
    //将字符串进行整体的倒置
	reverse(arr, arr + sz - 1);    
    //将部分字符串进行倒置
	char* start = arr;
	
	while (*start)
	{
		char* end = start;
		while (*end != ' ' && *end!='\0')
		{
			end++;
		}
		reverse(start, end - 1);
		if (*end == ' ')
		{
			start = end + 1;
		}
		else
		{
			start = end;
		}
	 	
	   }
	printf("%s", arr);
	return 0;
}

重难点:

(sz为字符串元素个数)

第二步为,对部分字符串进行倒置。

(第一部分为例)

while (*end != ' ' && *end!='\0')

{

            end++;

 }

不难看出,只要end一直增加,直到不为空格或者\0,就可以到达第一部分字符串末尾地址。

(以第一部分为例)

end起初和start地址相同,但是要判断是否为空格或者\0,需要先自增,再看是否满足while条件,当结束条件时,end此时指向空格的地址,所以需要减1,来确定第一部分的末尾地址

之后再利用reverse函数进行倒置。

当排序后,如果end此时指向空格的地址,则需要start=end+1,到达第二个部分,在进行倒置。

如果不为空格,则start=end; 

总结

分清楚倒置字符串,和字符串的倒置输出!

其次在最后一个题目中,需要注意字符串的首尾地址!

到此这篇关于Java 分析逆序字符串与字符串的逆序输出有什么区别的文章就介绍到这了,更多相关Java 逆序字符串内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯