#include <QCoreApplication>
#include <iostream>
using namespace std;
void swap_(char* pstr, char* end){
char t;
t = *pstr;
*pstr = *end;
*end = t;
return;
}
void swap(char& a, char& b){
a = a + b;
b = a - b;
a = a - b;
}
//腾讯笔试
//i am from shanghai
//变成 shanghai from am i
//方法:第一轮将字符串i am from shanghai 全部转换一次变成iahgnahs morf ma i
//第二轮将转换过的字符串单词内转换一次变成 shanghai from am i
void RecStr(char* pstr, int iLen){
char*start = pstr;
char*end = pstr + iLen -1;
while(start < end){
swap(*start++, *end--);
}
puts(pstr);
start = pstr;//start指针回到原始位置
char * pTemp = pstr; //遍历指针
end = pstr + iLen - 1; //end 回到末位置位置
while(*pTemp++ != '\0' ){
if(*pTemp == ' ' || *pTemp == '\0' ){
end = pTemp - 1; //指向需要转换单词的末尾
while(start < end){ //单词内部转换
swap(*start++, *end--);
}
start = pTemp + 1; //指向下一个单词的开头
}
}
puts(pstr);
}
int main(int argc, char *argv[])
{
QCoreApplication a1(argc, argv);
//char *pstr ="i am from shanghai";//有段错误,"i am from shanghai"是个常量
char pstr[] ="i am from shanghai";
RecStr(pstr, strlen(pstr));
return a1.exec();
}
revStr
最新推荐文章于 2022-09-09 20:17:16 发布