算法一://构想交换头尾的元素,缩小头和尾
#include<stdio.h>
#define LSIZE 81
void strRev(char []);
void strRevP(char *s);
int main()
{
char str[LSIZE]="Welcome to Beijing!";
//printf("Enter string: ");
//gets(str);
printf("string is %s\n",str);
strRevP(str);
printf("\nafter reverse\n");
printf("string is %s\n",str);
return 0;
}
void strRev(char s[])
{
char stemp;
int len=0;
int i;
while (s[len]) //same as s[len]!='\0'
len++;
len--;
//len points to the last char in the string s;
for (i=0;i<=len/2;i++)
{
stemp = s[i];
s[i] = s[len-i];
s[len-i] = stemp;
}
}
void strRevP(char *s)
{
char stemp;
char *ep;
ep = s;
while (*ep)
ep++;
ep--; //end points to the last char in the string s;
while (s<ep)
{
stemp = *s;
*s = *ep;
*ep = stemp;
s++;
ep--;
}
}
算法二
构想:倒着构建一个新的数组已实现操作
#include<stdio.h>
#include<string.h>
#define LSIZE 81
int main()
{
char str[LSIZE]="Welcome to Beijing!";
char print[LSIZE]={'0'};
int j=strlen(str)-1;
for(int i=0;i<strlen(str);i++)
{
print[j]=str[i];
j--;
}
puts(print);
return 0;
}