C++ number程式的問題!

c++ 以下寫的

//f9執行

//我打 "1" 會出現 "ㄅ"

//我打 "2" 會出現 "ㄆ"

//我打 "12" 會出現"ㄅㄆ" 為什麼不會出現"ㄐ"

//後面需要加什麼條件滿足它.... #include

#include

using namespace std;int main() {

int a;

do {

string number ;

cout << "" ;

cin >> number ; int i , size = number.size() ;

for( i = 0 ; i < 10 ; i++ ) {if( number[i] == '1' ) cout << "ㄅ" ;

if( number[i] == '2' ) cout << "ㄆ" ;

if( number[i] == '3' ) cout << "ㄇ" ;

if( number[i] == '4' ) cout << "ㄈ" ;

if( number[i] == '5' ) cout << "ㄉ" ;

if( number[i] == '6' ) cout << "ㄊ" ;

if( number[i] == '7' ) cout << "ㄋ" ;

if( number[i] == '8' ) cout << "ㄌ" ;

if( number[i] == '9' ) cout << "ㄍ" ;

if( number[i] == '10' ) cout << "ㄎ" ;

if( number[i] == '11' ) cout << "ㄏ" ;

if( number[i] == '12' ) cout << "ㄐ" ;

if( number[i] == '13' ) cout << "ㄑ" ;

if( number[i] == '14' ) cout << "ㄒ" ;

if( number[i] == '15' ) cout << "ㄓ" ;

if( number[i] == '16' ) cout << "ㄔ" ;

if( number[i] == '17' ) cout << "ㄕ" ;

if( number[i] == '18' ) cout << "ㄖ" ;

if( number[i] == '19' ) cout << "ㄗ" ;

}

cout << "\n" ;}while(a!=1044444);

return 0 ;

}

3 Answers

Rating
  • 夏明
    Lv 4
    8 years ago
    Favorite Answer

    板大你好!

    首先要說明一下,你的程式中,

    if 要判斷字元的話,'1' 是ASCII字元沒錯,但是 '10' 並不是ASCII字元,ASCII字元是單獨一個字才能算是ASCII字元,而且 '10' 也不是字串,"10" 才是字串;但是 if 不能用字串下去比較,只能一個一個字元去比較。

    所以可將 '10' 拆開去比較,程式修改如下:

    if( (number[i] == '1') && (number[i+1] == '0') ) cout << "ㄎ" ;

    但是這樣的話,輸入10時還會再多印出一個ㄅ,因此你還要再讓 if 知道字串的第二個字元要為空字元時才能印出ㄅ,程式修改如下:

    if( (number[i] == '1') && (number[i+1] == 0) ) cout << "ㄅ" ;

    其他要修改的地方都差不多。

    2011-10-29 15:53:45 補充:

    回板大:

    同理,其實if在多加個條件就好,拿有ㄎ的那行舉例:

    if( (number[i] == '1') && (number[i+1] == '0') ) cout << "ㄎ";

    改成:

    if( (number[i] == '1') && (number[i+1] == '0') && (number[i+2] == 0) ) cout << "ㄎ";

    2011-10-29 16:01:22 補充:

    '0' 是字元,而沒引號只有 0 是空字元(其實就是ASCII空字元的數值,不同字元數值都不一樣你可以去查查看),另外你也可以用 NULL 或是 '\\0' 代替。

    2011-10-29 16:46:05 補充:

    其實有更好的程式寫法,晚點再發上來。

    2011-10-29 23:42:24 補充:

    這裡我打的程式碼給板大參考一下:

    http://codepad.org/eWz2bBNg

    2011-10-31 10:37:56 補充:

    回板大:

    你這樣問有點怪,是指儲存字串的方式或資料型態?

    這邊有個不錯的網站可以參考一下:

    http://caterpillar.onlyfun.net/Gossip/CGossip/CGos...

    2011-10-31 11:09:25 補充:

    這裡還有:

    http://caterpillar.onlyfun.net/Gossip/CppGossip/Cp...

  • 8 years ago

    也對齁 number[i] == '10' 通不過編譯 我沒想過這個問題= =

    謝謝 帕拉提斯大大^^

    2011-10-29 15:06:28 補充:

    不能補充@@

    TO 夏明大大

    重複看了好幾次 if 跟 ASCII字元 有一點懂了~~~

    若有 一大串的字串 1~100 那我要修改成 (下面其中一小段)

    if( (number[i] == '0') && (number[i+1] == '1') ) cout << "ㄅ" ;

    2011-10-29 15:06:58 補充:

    if( (number[i] == '1') && (number[i+1] == '0') ) cout << "ㄎ" ;

    if( (number[i] == '4') && (number[i+1] == '1') ) cout << "ㄋ" ;

    那我輸入 01 10 41

    會跑出 ㄅ ㄎ ㄋ

    2011-10-29 15:07:18 補充:

    那若輸入 011041 都連在一起

    後面要增加什麼程式,讓它自動空字元

    我中間還有

    if( (number[i] == '1') && (number[i+1] == '1') ) cout << "ㄏ" ;

    2011-10-29 15:07:30 補充:

    if( (number[i] == '0') && (number[i+1] == '4') ) cout << "ㄈ" ;

    會跑出 ㄅ ㄏ ㄎ ㄈ ㄋ 我卻只想要:ㄅ ㄎ ㄋ

    //那我想讓它自動輸入完一個字串 自動空白" "

    //輸入011041 輸出變成01 10 41 兩個兩個區分

    //那還要增加什麼程式

    2011-10-29 17:11:57 補充:

    開頭~

    for( i = 0 ; i < number.size() ; ++++i )

    這樣可以ㄇ

    ~~~

    課本寫的好亂 看不懂@@

    2011-10-31 09:52:30 補充:

    夏明大 3QQ

    你這個寫的很讚!!!

    我用去研究的~~~

    C++ 只能寫兩種字串ㄇ~~

    2011-10-31 11:46:09 補充:

    再回 夏明大:

    打錯字 用>> 會

    剛好老師再教, if 跟字串!!!

    只是想深入了解^^

    儲存字串和資料形態還沒教到~~

    謝謝夏明大大 提供的網頁^^

  • 其威
    Lv 7
    8 years ago

    number[i] == '10' 這種東西通得過編譯嗎?

    即使通得過,應該也會出警告。

    至少在 gcc 4.5.3 之下,這個 '10' 會變成 int...(也就是變成 12592)

Still have questions? Get your answers by asking now.