方法一:创建两个数组,第一个用来存放需要逆序的字符串,第二个用来接收逆序之后的字符串
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[20] = { 0 };//数组1
char arr2[20] = { 0 };//数组2
int i = 0;
int len = 0;
gets(arr1); //gets函数 输入我们需要逆序的字符串
len = strlen(arr1);//strlen函数用来计算字符串的长度(strlen计算字符串长度时,遇到"\0"停止,计算 出的结果不包含“\0”)
for (i = 0; i < len; i++) //使用循环将数组1中的字符按照从右向左的顺序分别放入数组2
{
arr2[i] = arr1[len - i-1];
}
for (i = 0; i <=len; i++)//遍历数组2 将逆序后的字符串打印出来
{
printf("%c", arr2[i]);
}
}
方法二:创建函数,交换字符串中的字符
#include<stdio.h>
#include<string.h>
reverse(char *arr)//
{
char* left = arr;//数组传参 传的为首个字符的地址,所以*left就是字符串中的第一个字符
char* right = arr + strlen(arr) - 1;//*right为字符串的最后一个字符,因为下标从0开始的,所以需 要我们减一才能得到最后一个字符
while (left < right)
{
char tmp = *left; //使用tmp存放第一个字符
*left = *right; //将最后一个字符放到字符串的第一个位置
*right = tmp; //将存放在tmp中的第一个字符放到字符串的末尾
left++; //循环交换第二个和倒数第二个,一直循环到全部交换完成
right--; //在这里需要要明白如果字符串为偶数,全部交换完成,如果为奇数,中间的不 动,交换两边;列如:abcdef 交换后为fedcba;abcde交换后为fecba
}
}
int main()
{
char arr[20] = { 0 }; //创建数组
gets(arr); //gets函数 输入我们需要逆序的字符串
int a = strlen(arr); //计算字符串的长度
reverse(arr);
for (int i = 0; i < a; i++)//遍历数组2 将逆序后的字符串打印出来
{
printf("%c", arr[i]);
}
}