程序员人生 网站导航

单词翻转(i am a student)--->>(student a am i)

栏目:php教程时间:2015-05-20 10:50:46

问题描写:

写1个函数将i am a student  转化为  student a am i

解题思路:


//i am a student --->--> student a am i #include<iostream> using namespace std; /*翻转函数--->利用交换*/ void words_reverse(char str[],int left,int right) { while(left < right) { str[left] += str[right]; str[right] = str[left] - str[right]; str[left] -= str[right]; left++; right--; } } int main() { char str[] = " student a am i"; /*找到数组的(最左侧)和(最右侧)后整体翻转*/ int left = 0; int right = 0; while(str[right] != '') { right++; } words_reverse(str,left,right⑴); /*找到各个单词的(最左侧)和(最右侧),将各个单词分别翻转*/ int lowflag = 0; //状态标志位:要反转的字符串的左侧是不是找到 int highflag = 0;//状态标志位:要反转的字符串的右侧是不是找到 int i = 0; while(str[i] != '') { /*寻觅单词的最左侧即低位*/ if(str[i] != ' ' && lowflag == 0)//在没有找到单词最左侧的条件下,如果发现1个非空格字符表示最左侧找到 { lowflag = 1; left = i; } /*if(str[i] == ' ' && highflag == 0)//char str[] = "i am a student "情况不适合(最后面有空格) { highflag = 1; right = i⑴; }*/ /*寻觅单词的最右侧即低位*/ if(lowflag == 1 && str[i] == ' ' && highflag == 0)//char str[] = "student a am i";情况不适合(第1个单词没翻转) { highflag = 1;//在没有找到单词最右侧的条件下,如果发现1个空格字符,则空格前1个是单词最右侧字符 right = i⑴; } /*最左侧(低位)和最右侧(高位)都找到了以后完成翻转*/ if(lowflag == 1 && highflag == 1) { words_reverse(str,left,right); lowflag = 0; highflag = 0; } i++; } cout<<str<<endl; return 0; }


------分隔线----------------------------
------分隔线----------------------------

最新技术推荐