F1:常规首位替换
#include <stdio.h>
int main()
{
char arr[] = "abcdefg";
int left = 0;
int sz = sizeof(arr) / sizeof(arr[0]);
int right = sz - 2;
while (left <= right)
{
int t = arr[right];
arr[right] = arr[left];
arr[left] = t;
left++;
right--;
}
//下面一段可以直接不要,直接打印字符串
//printf("%s",arr);
int i = 0;
for (i = 0; i < sz-1; i++)
{
printf("%c", arr[i]);
}
return 0;
}
注意最后可以直接打印字符串,也可以把字符逐个打印出来。
另一方面字符串结尾有'\0',所以有8个字符,算right下角标时比原来少2;也就是right=sz-2
F2:递归法
#include <stdio.h>
void print(char* pa)
{
if (*pa != '\0')
{
print(pa + 1);
}
printf("%c", *pa);
}
int main()
{
char arr[] = "abcdefg";
print(arr);
return 0;
}
这个相当于:
abcdefg
运行abc