【每日一题】OR62

前言:简单题

题目展示:

字符逆序

在这里插入图片描述
这个题目跟我今天要讲的题很类似,可以说是一摸一样的体型,而本体中则是让我们将所有的字符逆序,这则很简单。

#include <stdio.h>
#include <assert.h>
 
 
void reverse(char* left, char* right)
{
    
    
    assert(left && right);
    while (left < right)
    {
    
    
        char tmp = *left;
        *left = *right;
        *right = tmp;
        left++;
        right--;
    }
}
 
 
 
 
int main()
{
    
    
    char arr[101] = {
    
     0 };
    
    gets(arr);
   
    int len = strlen(arr);
    
    reverse(arr, arr + len - 1);
    printf("%s", arr);
}

通过找到数组中的最后一位和第一位进行交换。

题目展示

题目如下:

OR62倒置字符串

题目分析

在这里插入图片描述
在这里插入图片描述
这两个题进行对比发现
我们可以在第一道题的基础上,再进行了一次逆序。

方法一

方法一相当简单,我们会用代码一的代码进行继续编写。
在这里插入图片描述
通过用逆序每个单词的方式写出代码

#include<stdio.h>
#include<assert.h>
void Rev(char*left,char*right)
{
    
    
	assert(right && left);
	while (left > right)
	{
    
    
		int bmp = *left;
		*left = *right;
		*right = bmp;
		left++;
		right--;

}
}
int main()
{
    
    
	char arr[101] = {
    
     0 };
	gets(arr);//获取arr字符
	int len = strlen(arr);
	//整体逆序
	Rev(arr, arr + len - 1);
	//个别单词逆序

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

}

通过先逆序两次字符串的方式,写出代码。
注意:'\0’和‘ ’需要考虑到位,否则会越位访问。

扫描二维码关注公众号,回复: 14578096 查看本文章

方法二

投机的方法

#include<stdio.h>
void reverse() {
    
    
	char *arr[101];
	if (scanf("%s",arr)!= EOF) {
    
    
		reverse();
		printf("%s ", arr);
	}
}
int main() {
    
    
	reverse();
	return 0;
}

通过用递归的方式写出代码。

猜你喜欢

转载自blog.csdn.net/m0_73228832/article/details/129088642