日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > C語言強化(九)翻轉句子中單詞的順序

C語言強化(九)翻轉句子中單詞的順序

來源:程序員人生   發布時間:2015-05-28 08:38:44 閱讀次數:4952次

這是到很常見的題目,非常簡單,但你用到數據結構了嗎,或說你用對了嗎?


通過這道題,你可以掌握:

  • 如何將用戶的輸入,輸出到控制臺
  • 如何分割字符串
  • 如何正確使用數據結構


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

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


思路

1、獲得字符串

首先要能夠獲得到用戶輸入的1串字符串,有兩點需要注意:

1.如果使用cin<<,輸出時會發現空格以后的字符串不被輸出,以下圖


解決方法:使用cin.getline(str,length)

2.由于用戶輸入的字符串長度1般不會和我們創造的字符數組長度1樣,所以如果采取傳統的i<str.size()去遍歷,會發現輸出很多個“燙”,由于數組沒有初始化

以下圖


解決方法:使用strlen(str)獲得字符數組有效長度。


下面是用戶輸入輸出的代碼

<span style="font-size:14px;"> char str[100]; //輸入提示 cout<<"請輸入,長度少于100"<<endl; //用戶輸入 cin.getline(str,100); cout<<"所輸入的字符串長度為:"; //輸出長度 cout<<strlen(str)<<endl; //輸出內容 for(int i=0;i<strlen(str);i++){ cout<<str[i]; } cout<<endl;</span>

2、翻轉

實現了輸入輸出后,就是關鍵的翻轉字符串了。

怎樣進行翻轉?利用字符數組的角標變換???拜托,這不是當初我們剛剛學習C語言時采取的方法嗎,而對學過數據結構的人來講,第1反應想到的是這么個寶貝――

先進后出,這是棧的特性!這在前面C語言強化(2)設計可以求最小元素的棧講過。

把先輸入的字符串放進棧中,最后出來的順序不就翻轉了嗎?

所以我們要做的就是把字符串分割成1個個子串,然后塞進去棧中,再取出來,弄定!


翻轉函數代碼

<span style="font-size:14px;">void reverseStr(char * str){ //截取,使用棧結構實現翻轉輸出 char * p; vector<char*> vt; const char * split = " "; p = strtok (str,split); while(p!=NULL) { //cout<<p; vt.push_back(p);//塞進去棧中 p = strtok(NULL,split); //繼續分割字符串 } //利用棧結構的特性,從上往下遍歷 while(vt.size()>0){ cout<<vt[vt.size()⑴]<<" "; vt.pop_back(); } cout<<endl; }</span>


完全源代碼

<span style="font-size:14px;">#include <stdio.h> #include<stdlib.h> #include <iostream> #include<sstream> #include <vector> using namespace std; /** 翻轉句子中單詞的順序。 題目:輸入1個英文句子,翻轉句子中單詞的順序,但單詞內字符的順序不變。 句子中單詞以空格符隔開。為簡單起見,標點符號和普通字母1樣處理。 例如輸入“I am a student.”,則輸出“student. a am I”。 思路 1.用戶輸入1串字符串,把它輸出來 2.截取,使用棧結構實現翻轉輸出 */ void reverseStr(char * str){ //截取,使用棧結構實現翻轉輸出 char * p; vector<char*> vt; const char * split = " "; p = strtok (str,split); while(p!=NULL) { //cout<<p; vt.push_back(p);//塞進去棧中 p = strtok(NULL,split); //繼續分割字符串 } //利用棧結構的特性,從上往下遍歷 while(vt.size()>0){ cout<<vt[vt.size()⑴]<<" "; vt.pop_back(); } cout<<endl; } void main() { /* 輸入輸出 */ char str[100]; //輸入提示 cout<<"請輸入,長度少于100"<<endl; //用戶輸入 //cin>>str;//不可以這樣! cin.getline(str,100); cout<<"所輸入的字符串長度為:"; //輸出長度 cout<<strlen(str)<<endl; //輸出內容 //cout<<str<<endl; /* //不能這樣輸出! for(int i=0;i<100;i++){ cout<<str[i]; } */ for(int i=0;i<strlen(str);i++){ cout<<str[i]; } cout<<endl; reverseStr(str); system("pause"); }</span>

之所以要學習數據結構,就是由于很多現實問題都是滿足數據結構模型的。比如此題的【翻轉――棧】
生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 性欧美xxxxporn| 国产伦精品一区二区三区照片 | 亚洲天堂影院 | 欧美性大战久久久久久久蜜臀 | 99国产超薄肉色丝袜交足的后果 | 99视频免费 | 久久55| 亚洲视频精品在线 | 81精品国产乱码久久久久久 | 福利视频一区二区三区 | 亚洲自拍偷拍网站 | 日批免费视频 | av中文字幕一区二区 | 国产成人久久精品 | 免费看久久| 91福利视频导航 | 亚洲精品一二三 | 一区在线免费观看 | 国产精品久久久久久久 | 日韩在线一区二区 | 中文,亚洲,欧美 | 亚洲精品乱码久久久久久蜜桃动漫 | 一级黄色电影网站 | 九九综合久久 | 91精品啪在线观看国产81旧版 | 97视频免费在线 | 在线一区二区三区四区 | 蜜臀av网站 | 欧美性一区 | 精品国产凹凸成av人导航 | 精品99久久久久久 | 99久久精品国产一区二区野战 | 欧美视频在线一区 | 视频在线精品 | 精品视频在线免费观看 | 中文字幕在线不卡 | 欧美精品国产 | 九九九九精品九九九九 | 亚洲欧美中文日韩在线v日本 | 日韩精品免费一区二区在线观看 | 久久久久久穴 |