1.用下标访问数组元素
#include<stdio.h>
#include<windows.h>
void ReverseString(char arr[], int len)
{
int i = 0;
int j = len - 1;
char tmp = 0;
for (i = 0, j = len - 1; i < j; i++, j--){
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
for (i = 0; i < len; i++){
printf("%c ", arr[i]);
}
printf("\n");
}
int main()
{
char arr[] = "abcdef";
int len = sizeof(arr) / sizeof(arr[0])-1;
ReverseString(arr,len);
system("pause");
return 0;
}
2.用指针访问数组元素
#include<stdio.h>
#include<windows.h>
void ReverseString(char *arr, int len)
{
char *left = arr;
char *right = arr + len - 1;
int i = 0;
while(left<right){
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
for (i = 0; i < len; i++){
printf("%c ", arr[i]);
}
printf("\n");
}
int main()
{
char arr[] = "abcdef";
int len = sizeof(arr) / sizeof(arr[0])-1;
ReverseString(arr,len);
system("pause");
return 0;
}
3.利用递归:
#include<stdio.h>
#include<windows.h>
void reverse_string(char *str)
{
int len = strlen(str);
char tmp = *str;
*str = *(str + len - 1);
*(str + len - 1) = '\0';
if (strlen(str+1) > 1){
reverse_string(str +1);
}
*(str + len - 1) = tmp;
}
int main()
{
char arr[] = "abcdef";
reverse_string( arr);
printf("%s\n", arr);
system("pause");
return 0;
}