题目链接
链接: link
这个是倒置字符串题目的链接,有兴趣做的小伙伴可以点击前往
解题思路
- 思维方式:
下面我们将逐步进行对问题的分析:
1.我们可以先自定义一个逆序函数reverse;
2.我们可以先将每个单词进行逆序;
这里请注意输入函数scanf如果不加以说明是不会接受空格的,也就是说当输入一个字符串的时候如果输入空格,scanf会在空格处截止对字符串的输入
2.在完成对每个单词的逆序后,我们再将整个字符串进行逆序;
指针解法
#include<stdio.h>
#include<string.h>
void reverse(char*start,char*end)//这个是我们的逆序函数
{
//下面的代码就是我们逆序函数的实现过程
while(start<end)
{
char tmp = *start;
*start = *end;
*end = tmp;
start++;
end--;
}
}
int main()
{
char str[101]={0};//这里我们创建一个字符型数组
gets(str);//运用字符串输入函数gets
char*cur = str;//这里我们创建一个指针变量来观察我们的每个单词
while(*cur)//*cur的意思是当*cur为'\0'时跳出循环
{
char*start = cur;//规定一个单词的起始指针变量
char*end = cur;//规定一个单词的终止变量
while((*end!=' ')&&(*end!='\0'))
{
end++;//end的指针读取的不是空格时,指针+1,这样就可以完成对单词的读取
}//这个循环出来的时候,end要不就是指向空格,要不就是指向\0
reverse(start,end-1);//对一个单词进行逆序
if(*end != '\0')
cur = end + 1;//这个是为了对单词逆序的终止,同样也是进行对下一个单词的读取
else
cur = end;
}
//对整个字符串进行逆序
int len = strlen(str);
reverse(str,str+len-1);
printf("%s\n",str);
return 0;
}