第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

c或c++里面字符數(shù)組,字符串之間的關系?

c或c++里面字符數(shù)組,字符串之間的關系?

慕田峪7331174 2019-02-25 02:05:32
天梯賽的一道題,題目如下: 給定一個長度不超過10000的、僅由英文字母構(gòu)成的字符串。請將字符重新調(diào)整順序,按“GPLTGPLT....”這樣的順序輸出,并忽略其它字符。當然,四種字符(不區(qū)分大小寫)的個數(shù)不一定是一樣多的,若某種字符已經(jīng)輸出完,則余下的字符仍按GPLT的順序打印,直到所有字符都被輸出。 輸入格式: 輸入在一行中給出一個長度不超過10000的、僅由英文字母構(gòu)成的非空字符串。 輸出格式: 在一行中按題目要求輸出排序后的字符串。題目保證輸出非空。 輸入樣例:pcTclnGloRgLrtLhgljkLhGFauPewSKgt輸出樣例:GPLTGPLTGLTGLGLL 在csdn上面找到的別人用c++的做法,代碼如下: #include <iostream> #include <string> using namespace std; int main() { string str; int G, P, L, T; G = P = L = T = 0; cin >> str; for( int i = 0; i < str.size(); i++ ) { switch( str[i] ) { case 'g': case 'G': G++; break; case 'p': case 'P': P++; break; case 'l': case 'L': L++; break; case 't': case 'T': T++; break; } } while( G || P || L || T ) { if( G ) { cout << "G"; G--; } if( P ) { cout << "P"; P--; } if( L ) { cout << "L"; L--; } if( T ) { cout << "T"; T--; } } return 0; } 我發(fā)現(xiàn)好像大部分有關字符串的問題都可以用字符數(shù)組來接收,比如: char a[10005]; char b[10005]; gets(a); gets(b); 這小段代碼里面,定義了字符數(shù)組,但是卻用輸入整個字符串的方式來讀入的(這小段代碼是別的程序里面的)上面那個完整的代碼,不明白的地方又兩處:1.定義的字符串str,卻可以當做字符數(shù)組來用2.while循環(huán)里里為什么可以直接判斷? 請問這里面的實現(xiàn)是否和內(nèi)存存儲方式有關,java中會有類似的實現(xiàn)機制嗎?
查看完整描述

4 回答

?
梵蒂岡之花

TA貢獻1900條經(jīng)驗 獲得超5個贊

  1. C++支持操作符重載

  2. C++可以使用int做為條件僅當值為0時是false,非0即是true的

注:Java 不支持操作符重載,所以自定義類型無法使用[]這種方式取值(只有數(shù)組可用[]),其次Java中條件判斷必須是boolean類型是無法使用int類型當作判定條件的。

查看完整回答
反對 回復 2019-03-01
?
呼喚遠方

TA貢獻1856條經(jīng)驗 獲得超11個贊

C/C++ 與 Java 的不同就是,C/C++ 的任何字符串類本質(zhì)上都是對 C 風格字符串即 char 數(shù)組的包裝,而且這個 char 數(shù)組仍嚴格要求必須額外儲存一個尾 0 字符 (不是字符 '0')。這是由 C 最初設計字符串的方式?jīng)Q定的,C 的字符串就以字符數(shù)組的形式實現(xiàn),其中末尾必須包含一個 0 字符作為結(jié)束符。不像 Java 設計之初就是通過長度來確定 String 對象的長度,其不需要尾 0 字符。所以,遍歷一個字符串也可以用非 0 的循環(huán)進行判斷。

int i = 0;
while ( str[i] ) {
    char c = str[i++];
    switch ( c ) {
        //
    }
}
for ( int i = 0; str[i] != 0; i++ ) {
    char c = str[i];
    switch ( c ) {
        //
    }
}

如上面其他幾位所說,這些類提供了 [] 重載,使得你通過下標可以遍歷 string 類內(nèi)部的字符數(shù)組。Java 打印任何對象,包括 String,都調(diào)用了其 toString() 方法。C/C++ 打印字符串的方式和最初 C 設計字符串的方式一樣,從字符指針開頭開始,逐個字符打印,直到遇到 0 字符方才結(jié)束。

第二個問題,C/C++ 的 while、if 等可以將任何數(shù)值,包括指針,隱式轉(zhuǎn)換為 bool。

查看完整回答
反對 回復 2019-03-01
  • 4 回答
  • 0 關注
  • 608 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號