【C语言和Java】P216 例5.写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串

  P216 例5.写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串

方法一:通过数组逆序的方法

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

int main() {
	void reverse(char string[]);
	char str[50] = {0};//定义字符串数组时要确定数组长度,如果不确定,可能会发生越界访问
	printf("请输入一个字符串:");
	/*scanf("%s", str);*/
	gets(str);
	reverse(str);
	printf("\n反序存放后:");
	printf("%s\n",str);
	return 0;
}

void reverse(char string[]) {
	int len = strlen(string);
	int left = 0;
	int right = len - 1;
	char tmp;
	while (left < right) {
		tmp = string[left];
		string[left] = string[right];
		string[right] = tmp;
		left++;
		right--;
	}

}

 运行结果:

方法二:运用指针

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

int main() {
	/*void reverse(char string[]);*/
	void reverse(char *stirng);
	char str[50] = {0};//定义字符串数组时要确定数组长度,如果不确定,可能会发生越界访问
	printf("请输入一个字符串:");
	/*scanf("%s", str);*/
	gets(str);
	reverse(str);
	printf("\n反序存放后:");
	printf("%s\n",str);
	return 0;
}

void reverse(char* string) {
	int len = strlen(string);
	char tmp;
	char* left = string;
	char* right = string + len - 1;
	while (left < right) {
		tmp = *left;
		*left = *right;
		*right = tmp;
		left++;
		right--;
	}

}

运行结果:

方法三:指针+递归方法

#include<stdio.h>

int my_strlen(char * p) {
	int count = 0;
	while (*p != '\0') {
		count++;
		p++;
	}

	return count;
}
void reverse_string(char*str) {
	int len = my_strlen(str);
	char temp = *(str);
	*str = *(str + len - 1);
	*(str + len - 1) = '\0';
	if( my_strlen(str+1) >= 2) {
		reverse_string(str + 1);
	}
	*(str + len - 1) = temp;
}
int main() {
	char arr[30] = {"0"};
	gets(arr);
	reverse_string(arr);
	printf("%s\n", arr);
	return 0;
}

运行结果:

②Java实现

import java.util.Scanner;

public class ReverseString {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("Enter a string:");
        String input = scanner.nextLine();

        String reversed = reverseString(input);

        System.out.println("Reversed string: " + reversed);

        scanner.close();
    }

    public static String reverseString(String str) {
        StringBuilder reversed = new StringBuilder();
        for (int i = str.length() - 1; i >= 0; i--) {
            reversed.append(str.charAt(i));
        }
        return reversed.toString();
    }
}

运行结果:

  • 5
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值