字符串反转
字符串反转
#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; } }