程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 翻轉句子中單詞的順序

翻轉句子中單詞的順序

編輯:C++入門知識

題目:輸入一個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母一樣處理。

例如輸入“I am a student.”,則輸出“student. a am I”。

 

 

[cpp]
#include <iostream>  
using namespace std; 
void reverse_part(char*,int pBegin,int pEnd); 
void reverse(char *str) 

    //n為字符串長度  
    int n=strlen(str)-1; 
    reverse_part(str,0,n); 
    int pBegin=0,pEnd=0; 
 
    while(str[pEnd+1]){ 
        if(str[pEnd]!=' ' && str[pEnd]!='\0') 
            ++pEnd; 
        //找到空格  
        else{ 
            reverse_part(str,pBegin,pEnd-1); 
            //如果下一個還是空格  
            while(str[pEnd+1]!='\0' && str[pEnd+1]==' ') 
                ++pEnd; 
            pBegin=++pEnd; 
        } 
    } 
    cout<<str<<endl; 

 
void reverse_part(char *str,int pBegin,int pEnd) 

    char temp; 
    for(int i=pBegin;i<=(pEnd-pBegin)/2;++i){ 
        temp=str[i]; 
        str[i]=str[pEnd-i]; 
        str[pEnd-i]=temp; 
    } 

 
void main() 

    char str[]="I am a student."; 
    reverse(str); 
    system("pause"); 

#include <iostream>
using namespace std;
void reverse_part(char*,int pBegin,int pEnd);
void reverse(char *str)
{
 //n為字符串長度
 int n=strlen(str)-1;
 reverse_part(str,0,n);
 int pBegin=0,pEnd=0;

 while(str[pEnd+1]){
  if(str[pEnd]!=' ' && str[pEnd]!='\0')
   ++pEnd;
  //找到空格
  else{
   reverse_part(str,pBegin,pEnd-1);
   //如果下一個還是空格
      while(str[pEnd+1]!='\0' && str[pEnd+1]==' ')
    ++pEnd;
   pBegin=++pEnd;
  }
 }
 cout<<str<<endl;
}

void reverse_part(char *str,int pBegin,int pEnd)
{
 char temp;
 for(int i=pBegin;i<=(pEnd-pBegin)/2;++i){
  temp=str[i];
  str[i]=str[pEnd-i];
  str[pEnd-i]=temp;
 }
}

void main()
{
 char str[]="I am a student.";
 reverse(str);
 system("pause");
}

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved