程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 按照單詞翻轉字符串,不改變單詞內字母之間的順序

按照單詞翻轉字符串,不改變單詞內字母之間的順序

編輯:關於C語言

對於這道題,首先要將整個字符串按照字母整個進行翻轉,然後再單詞內進行翻轉,重點在與分割出單詞來,設兩個標志first和last分別表示單詞的開始和結束位置,連續空格的第一個或單一的一個空格前一個位置是前一個單詞的結尾,連續空格的最後一個空格的下一個位置是下一個單詞的開始。
#include <iostream>  
#define for if(1) for   
using namespace std;  
 
// 單詞逆序函數,用char數組傳遞  
void WordDesc(char str[]);  
 
void main(){  
    char str[]="I am a student";   
    cout<<"處理前:"<<str<<endl;  
    WordDesc(str);  
    cout<<"處理後:"<<str<<endl;  
}  
 
void WordDesc(char str[]){  
    int len=strlen(str);// 字符串長度  
    char temp;          // 臨時字符,用於交換  
 
    // 先按字符全部換一次  
    for (int i=0;i!=len/2;i++)  
    {  
        temp=str[i];  
        str[i]=str[len-i-1];  
        str[len-i-1]=temp;  
    }  
 
    // 再按每個單詞中的字符換一次  
    int first(0);   // 標記單詞開始下標  
    int last(0);    // 標記單詞結束下標  
 
    for (int i=0;i!=len;i++)  
    {  
        // 碰到空格  
        if (' '==str[i])  
        {  
            // 連續多個空格  
            if (' '==str[i-1])  
            {  
                // 移動頭指針,並進行下次循環  
                first++;  
                continue;  
            }  
 
            // 空格前是單詞  
 
            // 標記尾為上一個  
            last=i-1;  
 
            // 處理單詞  
            for (int j=first;j!=last-(last-first)/2;j++)  
            {  
                temp=str[j];  
                str[j]=str[last-j+first];  
                str[last-j+first]=temp;  
            }  
 
            // 標記頭轉移到下一個  
            first=i+1;  
        }  
 
        // 不是空格,但是到尾部  
        else if(i==len-1)  
        {  
            // 標記尾為當前  
            last=i;  
 
            // 處理單詞  
            for (int j=first;j!=last-(last-first)/2;j++)  
            {  
                temp=str[j];  
                str[j]=str[last-j+first];  
                str[last-j+first]=temp;  
            }  
        }  
 
        // 既不是空格,也沒有到尾部  
        else  
        {  
            NULL;  
        }  
    }  

運行結果:

作者“菜鳥變身記”

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