字符串反序操作,可以分为两种类型,一种是将字符串的反序存储,一种是将字符串反序输出。
对于前一种,假设字符串长度为n,可以从第1个字符到第floor(n/2) (取整函数,取得不超过某个数的最大整数)个字符,依次将第i个字符和第n+1-i个字符交换位置。这一结束后,字符串就反序存储了。
对于后一种,可以采取两种方法。第一种方法是从字符串的最后一个字符逆序遍历到第一个字符,依次打印每个字符。第二种方法是采用递归方法,这里先不做解释,稍后会在具体例子中说明。采用前一种方法简单直观,后一种方法则更加巧妙。
下面来看一个C语言编写的具体例子。
对于前一种,假设字符串长度为n,可以从第1个字符到第floor(n/2) (取整函数,取得不超过某个数的最大整数)个字符,依次将第i个字符和第n+1-i个字符交换位置。这一结束后,字符串就反序存储了。
对于后一种,可以采取两种方法。第一种方法是从字符串的最后一个字符逆序遍历到第一个字符,依次打印每个字符。第二种方法是采用递归方法,这里先不做解释,稍后会在具体例子中说明。采用前一种方法简单直观,后一种方法则更加巧妙。
下面来看一个C语言编写的具体例子。
#include <stdio.h>
#include <string.h>
void inversePrint(const char * const);//将字符串反序打印
void invert(char * const);//将字符串反转存储
int main()
{
char str[15]="I love China";
//将原字符串反序存储
invert(str);
printf("反序后的字符数组为:\n%s\n", str);
//将原字符串反序输出
printf("反序打印的结果为:\n");
inversePrint(str);
return 0;
}
void invert(char * const str)
{
int n = strlen(str);
int m = n / 2 - 1;//计算中间值的序号
int i = 0;
char ch;
for(i = 0; i <= m; i++)
{
//交换对称的数组元素
ch = str[i];
str[i] = str[n-1-i];
str[