字符串反转

字符串反转

#include <stdio.h>
#include <string.h>
void fun(char a[])
{
int i,length;char t;
length=strlen(a);
for(i=0;i<length/2;i++)
{
t=a[i];
a[i]=a[length-1-i];
a[length-1-i]=t;
}
}
main()
{
char a[10];
printf("input a string:");
gets(a);
puts(a);
fun(a);
puts(a);
}
#include <stdio.h>
#include <string.h>
void fun(char a[])
{
 int i,length;char t;
  length=strlen(a); 
  for(i=0;i<length/2;i++)
  {  t=a[i]; 
   a[i]=a[length-1-i]; 
   a[length-1-i]=t; 
   }
}
main()
{ char a[10];
 printf("input a string:");
  gets(a); 
  puts(a);
   fun(a);
    puts(a);
}

 

#include <stdio.h>
int main()
{
    char m;
    m=reverse("abcdef");
      printf("%c",m);    
    return 0;
}

char reverse(char *str)
{
    char* end=str;
    char tmp;
    if(str)  
    {
        while(*end) //找出字符串末尾 
        {
                ++end;            
        }
        --end;    //回退一个,找到null 
       while(str<end)
       {
           tmp = *str;
           *str++=*end;
        *end--=tmp;    
       }     
   }
   return *str;
 
}
待测-----还没调试通

 例三:字符串反转(用递归和指针的方式)

#include <stdio.h>
void reverse(char *p)
{
    if( *p=='\0')
     return ;
     reverse(p+1);
     printf("%c",*p);    
}
int main()
{
    reverse("abcdefghjklmn");
    printf("\n");
    return 0;    
    
}

 例四:字符串的长度

#include <stdio.h>
void reverse(char *p)
{
    if( *p=='\0')
     return ;
     reverse(p+1);
     printf("%c",*p);    
}
int main()
{
    reverse("abcdefghjklmn");
//为4
    printf("%d",sizeof("abc"));
//为3 
        printf("%d",strlen("abc"));
    printf("\n");
    return 0;    
    
}

 

最后,调试通过了,如下

#include <stdio.h>
void reverse(char *str)
{   
 char *z=str;
 char *end=str;
   char tmp;
    if(str)  
    {
        while(*end) 
        {             
                ++end;           
        }
        --end;    //回退一个,找到null 
     while(str < end)
       {            
           tmp = *str;   
          *str++ = *end;
           *end--=tmp;  
       }          
   }  
 printf("%s",z); 
 
}
int main()
{
  char s[]="1234546";
    reverse(s);
//上面两句,如果直接这么写 reverse("123456789"); 就会有一个报警错误
    return 0;
}

 

例:帮助别人调试通过版

#include<stdio.h>
#include<string.h>
void inverse(char str[])
{
    char ch;
    int i,n;
    n=strlen(str);
    for(i=0;i<=(n/2);i++)
    {
        ch=str[i];
        str[i]=str[n-i-1];
        str[n-i-1]=ch;
    }
}
int main()
{

    char str[100];
    printf("input string:");
    scanf("%s",str);
    inverse(str);
    printf("inverse string:%s\n",str);
    return 0;
}

例子:字符串反转(java版本)

class Program
    {
        static void Main(string[] args)
        {
            Console.Write("请输入要进行反转的字符串:");
            string mystring =Console.ReadLine();
            string str = Strfanz(mystring);
            Console.WriteLine("反转后的字符串为:"+str);
        }
        static string Strfanz(string str)
        {
            if(str.Length==1)
                return str;
            string Strend = str.Substring(str.Length-1, 1);//取得最后一个字符(str.Length-1为取得最后一个字符的索引,1为所取长度);
            Strend += Strfanz(str.Substring(0, str.Length - 1));//将余下的字符串进行递归,并加在Strend后面;
            return Strend;
        }

    }

 


posted @ 2014-02-24 17:27  kin2321  阅读(535)  评论(0编辑  收藏  举报