实现字符串倒序的两种方法

第一种

  1 #include<stdio.h>
  2 #include<string.h>
  3 
  4 int main()
  5 {
  6     int i;
  7     char a[20];
  8 
  9     scanf("%s",a);
 10 
 11     int length = strlen(a);
 12 
 13     for(i = length - 1; i >= 0; i--)
 14     {
 15         printf("%c",a[i]);
 16     }                                                                                                                    
 17     printf("\n");
 18 
 19     return 0;
 20 }

这种方法就是简单的定义一个数组,输入字符串后,计算字符串长度,然后倒序输出,就完成了工作。

第二种

  1 #include <stdio.h> 
  2 #include <stdlib.h> 
  3 #include <string.h> 
  4  
  5 char *reverse(char *s)  
  6 { 
  7     int i; 
  8     char *tmp, *q; 
  9      
 10     char *ptr = (char *)malloc(sizeof(char)*20); 
 11     if (NULL == ptr) 
 12     { 
 13         perror("malloc"); 
 14     } 
 15     q = ptr; 
 16      
 17     int length = strlen(s); 
 18     tmp = s + length -1; 
 19      
 20     for(i = 0; i < length; i++ ) 
 21     { 
 22         *ptr++ = *tmp--; 
 23     } 
 24     strcpy(s,q); 
 25     free(q); 
 26     return s; 
 27  }
 28
 29 int main() 
 30 { 
 31     char *str; 
 32     char *ptr; 
 33     str = (char *)malloc(sizeof(char)*20); 
 34     if(NULL == str) 
 35     { 
 36         perror("malloc"); 
 37     } 
 38      
 39     scanf("%s",str); 
 40     ptr = reverse(str); 
 41     printf("%s\n",ptr); 
 42  
 43     free(str); 
 44     return 0; 
 45 }

这种方法就比较高级了,包含了很多东西,有指针,有调用函数,有malloc分配内存,虽然复杂,但是正因为包含的东西多,才更值得c语言初学者去写,如果能够完全理解这个程序,对c语言的基础学习会很有帮助。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
递归是一种方法,通过不断调用自身来解决问题。为了使用递归实现字符串,我们可以考虑以下步骤: 首先,定义一个递归函数reverseString,输入参数为一个字符串str。在递归函数中,我们需要处理以下两种情况: 如果输入字符串为空或长度为1,直接返回该字符串,因为无法再进行。 否则,递归地调用reverseString函数,传入除去第一个字符的子字符串,然后将得到的结果与第一个字符连接起来作为返回值。 下面是一个使用递归实现字符串的Java代码示例: ```java public class ReverseString { public static String reverseString(String str) { if (str == null || str.length() <= 1) { return str; } else { return reverseString(str.substring(1)) + str.charAt(0); } } public static void main(String[] args) { String input = "Hello World!"; String reversed = reverseString(input); System.out.println(reversed); } } ``` 在这个示例中,我们定义了一个静态方法reverseString,该方法接收一个字符串作为输入,并返回后的字符串。在main方法中,我们使用了一个示例字符串"Hello World!"来测试reverseString方法,并将结果打印输出。 当我们运行这段代码时,将会输出"!dlroW olleH",即原字符串"Hello World!"的形式。 这就是使用递归实现字符串方法,通过逐步缩小问题规模,并在每一步调用函数自身,最终得到结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值