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

目录
  • 前言
  • 一、字符串的逆序
  • 二、实例讲解
    • 1.字符串的逆序输出
    • 2.逆序字符串
    • 3.综合实例
  • 总结

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

前言

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

一、字符串的逆序

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

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

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

二、实例讲解

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 逆序字符串内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • java递归法求字符串逆序

    本文实例讲述了java递归法求字符串逆序的方法.分享给大家供大家参考.具体实现方法如下: public static String reverseString(String x) { if(x==null || x.length()<2) return x; return reverseString(x.substring(1,x.length()))+ x.charAt(0); } 希望本文所述对大家的java程序设计有所帮助.

  • Java字符串逆序方法详情

    目录 1.简述 2.代码实现 1.简述 记录下实现字符串逆序的两种方法: 第一种方法比较暴力,通过字符串的下标将字符串逆转过来,这里要用到String类的substring()方法,这个方法比较常用,就不仔细写了 第二中方法是将String类转换成StringBuffer类,通过调用StringBuffer类的reverse()方法将字符串逆转,这个方法比较简单 下面是两种方法的实现代码: public class test_2_13 {     public static void main(

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

    目录 前言 一.字符串的逆序 二.实例讲解 1.字符串的逆序输出 2.逆序字符串 3.综合实例 总结 今天我们讲解字符串的逆序和逆序输出,并且通过一个综合题型来加深印象和练手! 前言 逆序字符串和字符串的逆序输出,可能经常会有人混淆,所以今天带大家一起来看一看吧! 一.字符串的逆序 字符串的逆序输出是什么? 逆序字符串:针对一个输入的字符串数组,通过逆序,将其数组内容进行翻转逆序. 字符串的逆序输出:对于一个字符串,只需要数组创建,然后求出字符串的长度,从字符串数组最后一个元素依次输出,直到第一

  • C++实现字符串删除字符后逆序输出

    本文实例为大家分享了C++实现字符串删除字符后逆序输出的具体代码,供大家参考,具体内容如下 输入若干个字符串,和一个英文字符ch. 要求删除每个字符串中的字符ch(区分大小写),得到新的字符串,然后将新的字符串按照字典逆序排序后输出 (每个字符串的长度不超过30个字符,字符串总数不超过30) 输入: 3 abcddc sxwcdez ncvccvd c 输出: sxwdez nvvd abdd C++实现:(适用于初学者) #include <iostream> #include <cs

  • 盘点分析C语言中少见却强大的字符串函数

    目录 正片开始 字符串函数 strcpy strcat strcmp strstr strtok strerror 正片开始 字符串函数 首先神魔是字符串函数? 指的是编程语言中用来进行字符串处理的函数,如C,pascal,Visual以及LotusScript中进行字符串拷贝,计算长度,字符查找等的函数. 功能:把src所指由NUL结束的字符串复制到dest所指的 数组 中. 返回指向dest结尾处字符 (NUL)的 指针 . 像之前我写到过的 strcpy,strcat,strcmp 这些函

  • C语言求解最长公共子字符串问题及相关的算法分析

    题目:如果字符串一的所有字符按其在字符串中的顺序出现在另外一个字符串二中,则字符串一称之为字符串二的子串.注意,并不要求子串(字符串一)的字符必须连续出现在字符串二中.请编写一个函数,输入两个字符串,求它们的最长公共子序列,并打印出最长公共子序列. 例如:输入两个字符串BDCABA和ABCBDAB,字符串BCBA和BDAB都是是它们的最长公共子序列,则输出它们的长度4,并打印任意一个子序列. 分析:求最长公共子序列(Longest Common Subsequence, LCS)是一道非常经典的

  • C语言详解如何应用模拟字符串和内存函数

    目录 1.strlen 求字符串长度 使用案例: 1.计数法 2.不创建临时变量计数器-递归 3.指针-指针的方式 2.长度不受限制的字符串函数 1.strcpy 使用案例: 模拟实现: 2.strcat 使用案例: 模拟实现: 3.strcmp-比较字符串首字母的大小 使用案例: 模拟实现: 3.长度受限制的字符串函数  1.strncpy 使用案例: 2.strncat  使用案例: 3.strncmp 使用案例: 4.strstr-找子串  使用案例: 模拟实现: 5.strtok 用法:

  • C语言中时间戳转换成时间字符串的方法

    在PE格式里有个字段是文件的创建时间戳,我想把转成字符串,这样看的更直观. TCHAR buffer[50] = {0}; struct tm Tm = {0}; time_t time = (time_t)NtHeader->FileHeader.TimeDateStamp;//时间戳 gmtime_s(&Tm, &time); printf(buffer, TEXT("%d年%d月%d日 %d:%d:%d"), Tm.tm_year+1900, Tm.tm_m

  • 详解c语言中的 strcpy和strncpy字符串函数使用

    strcpy 和strcnpy函数--字符串复制函数. 1.strcpy函数 函数原型:char *strcpy(char *dst,char const *src)            必须保证dst字符的空间足以保存src字符,否则多余的字符仍然被复制,覆盖原先存储在数组后面的内存空间的数值,strcpy无法判断这个问题因为他无法判断字符数组的长度. #include <stdio.h> #include<string.h> int main() { char message

  • c语言中字符串与字符串数组详解

    目录 字符串 字符串输出 输入字符串 字符串常用方法 字符串数组 总结 字符串 用双引号引起来的就是字符串,字符串由字符组成 字符串使用%s格式化输出 字符串以\0结尾,没有\0就不是字符串 只要是用双引号括起来的都是字符串 字符串的本质就是数组 注意: 字符串变量和普通的字符数组有一定的区别,C语言规定,字符串必须以\0结尾(作为字符串的结束符号),所以字符串变量的元素个数比字符数组的元素多一个\0 #include <stdio.h> int main(int argc, const ch

  • GO语言入门学习之基本数据类型字符串

    目录 字符串 字符串转义符 byte和rune类型 修改字符串 类型转换 总结 字符串 Go语言中的字符串以原生数据类型出现. Go 语言里的字符串的内部实现使用UTF-8编码. 字符串的值为双引号(")中的内容,可以在Go语言的源码中直接添加非ASCII码字符 GO语言中字符串是用双引号包裹的 GO语言中单引号包裹的是字符 // 字符串 s := "Hello 中国" // 单独的字母.汉字.符合表示一个字符 c1 := 'h' c2 := '1' c3 := '中' //

  • Java实现数组转字符串及字符串转数组的方法分析

    本文实例讲述了Java实现数组转字符串及字符串转数组的方法.分享给大家供大家参考,具体如下: 字符串转数组 使用Java split() 方法 split() 方法根据匹配给定的正则表达式来拆分字符串. 注意: . . | 和 * 等转义字符,必须得加 \\.多个分隔符,可以用 | 作为连字符. // 字符串转数组 java.lang.String String str = "0,1,2,3,4,5"; String[] arr = str.split(",");

随机推荐