问题描述
接受一个只包含小写字母的字符串,然后输出该字符串反转后的字符串。(字符串长度不超过1000)
输入描述:
输入一行,为一个只包含小写字母的字符串。
输出描述:
输出该字符串反转后的字符串。
解题分析
本题是要求实现字串翻转,在我们考虑如何翻转字符串问题之前,我们要先解决字符串的存储。
如何解决呢?简单的方法就是用数组,用scanf能直接把字符串存储到数组中。
接下来就是解决字符串翻转问题了,我们可以用两个字符串分别指向数组的首部和尾部,并把两个指针所指向字符交换。如下
每次指针left和right所指向的位置的字符交换后,left++、right--这样就可以交换下一对字符了,而当left>=right时,就结束交换, 我们可以把具体操作放到while中判断条件为(left<right)
代码实现
#include<stdio.h> int main() { char* arr[1000]; scanf("%s",arr); int len = strlen(arr);//求出字符串长度 char* left = arr; char* right= arr; right += len-1;//让right指向数组末尾 while(left<right) { char tmp = *left; *left = *right; *right = tmp; left++; right--; } printf("%s",arr); return 0; }