線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4292
推到 Plurk!
推到 Facebook!

C++字串反轉輸出問題

尚未結案
kk1985825
一般會員


發表:1
回覆:4
積分:1
註冊:2005-09-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-09-30 02:02:25 IP:219.80.xxx.xxx 未訂閱
輸入一些字串或數字,遇到@則反轉輸出(不用按ENTER)    使用迴圈方式.... 把字串當陣列來看 substring()可擷取字串中的字元    例如(1):12345@ 答案:54321 例如(2):abcd@ 答案:dcba 有哪位大大知道可以替小弟解答嗎??     提示.....這是直接反轉的觸發...如何穿插反轉的程式... #include main() { char i; printf("請輸入字串:"); do{ i=getche(); }while(i != '@'); printf("\n"); }
zcecil
初階會員


發表:0
回覆:28
積分:45
註冊:2003-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-09-30 12:34:58 IP:220.130.xxx.xxx 未訂閱
#include < string >
#include < iostream >
using namespace std;
int main()
{        string input = "";
    char i;
    do {
        cin.get(i);
        if( i == '\n' ) continue;
        if( i == '@' ) break;
        input = input   i;
    }while(1);
    string::const_iterator it;
    for( it=input.end(); it!=input.begin(); it--){
        cout <<*it;
    }
    cout<<*it<< endl;        return 0;
}
發表人 - zcecil 於 2005/09/30 12:36:09 發表人 - zcecil 於 2005/09/30 12:36:53
kk1985825
一般會員


發表:1
回覆:4
積分:1
註冊:2005-09-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-30 13:40:50 IP:219.80.xxx.xxx 未訂閱
好複雜 >< 有哪位大大有最簡單的解法嗎><
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-09-30 15:34:13 IP:140.127.xxx.xxx 未訂閱
您好! 字串反轉可用strrev()函式來做! 您可用substring()來取字串中的字元,取到@時,就把字串放到strrev裡面! 作法: 1.先取得字串長度,如:(12345@,長度=6)。 2.然後用substring()來取字元,如:substring(1,字串長度-1) 3.str = 12345 4.strrev(str); 要用迴圈來找@,找到@時,要計算從第1個字元到@中間有幾個字元,也就是要計算字串長度,然後把第1個字元到@-1個字元存到字串,就是str,再把str代入strrev函式! 字串反轉可參考: http://delphi.ktop.com.tw/topic.php?topic_id=73931
kk1985825
一般會員


發表:1
回覆:4
積分:1
註冊:2005-09-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-09-30 18:31:08 IP:219.80.xxx.xxx 未訂閱
ㄜ~~~~~~字串是任意輸入的..... 並非侷限12345
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-09-30 18:44:43 IP:210.68.xxx.xxx 未訂閱
引言: ㄜ~~~~~~字串是任意輸入的.....
您是否試過前輩們的程式呢
kk1985825
一般會員


發表:1
回覆:4
積分:1
註冊:2005-09-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-09-30 18:46:12 IP:219.80.xxx.xxx 未訂閱
那些太深奧了.....我才剛入門... 能否幫小弟解答一下
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-09-30 18:51:14 IP:210.68.xxx.xxx 未訂閱
引言:那些太深奧了.....我才剛入門...
怎樣算不深澳
kk1985825
一般會員


發表:1
回覆:4
積分:1
註冊:2005-09-30

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-09-30 19:22:01 IP:219.80.xxx.xxx 未訂閱
我們才剛敎到迴圈><
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-09-30 22:30:21 IP:211.22.xxx.xxx 未訂閱
下面的範例已經是最簡單的寫法了,全部都使用標準輸出入函數,不過沒有作錯誤檢查喔,請參考~其實應該用指標PERFORMANCE比較好! < class="code"> #include #include #include int main(void) { char TempStr[256]; int i,j; printf("請輸入字串:"); gets(TempStr); if ( ! strlen(TempStr) ) exit(-1); i = strlen(TempStr); for ( j=0 ; j < i ; j ) if ( TempStr[j] == '@' ) break; for ( i=j-1 ; i >= 0 ; i-- ) putch(TempStr[i]); getch(); } ---------------------------------------------- We will either find a way, or make one. -Hannibal -。
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-09-30 22:48:06 IP:211.22.xxx.xxx 未訂閱
這一版應該更符合你的需求~同樣沒有作錯誤檢查喔! < class="code"> /--------------------------------------------------------------------------- #include #include #include int main(void) { char i,TempStr[256]; int j; j = -1; printf("請輸入字串:"); while ( 1 ) { i = getche(); if ( i == '@' || j >=254 ) break; TempStr[ j] = i; } if ( j >= 0 ) { puts("\r\n"); for ( ; j >= 0 ; j-- ) putch(TempStr[j]); getch(); } } ---------------------------------------------- We will either find a way, or make one. -Hannibal -。
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-10-03 21:24:37 IP:211.76.xxx.xxx 未訂閱
我提供一個教科書上比較"標準"的解法好了
#include 
#define MAX_STR 100
void main(void)
{
        char StrTmp[MAX_STR],StrAns[MAX_STR],ch;
        int i,j,StrLen=-1;
        do{
                ch = getchar();
                if(ch =='@')
                        break;
                StrTmp[  StrLen] = ch;
        }while(1);
        for(i=0;i<=StrLen;i  )
        {
                StrAns[StrLen-i] = StrTmp[i];
        }
        printf("%s",StrAns);
}
==================================== 懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@
haman
中階會員


發表:46
回覆:137
積分:56
註冊:2005-03-10

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-10-03 21:30:46 IP:211.76.xxx.xxx 未訂閱
呃..沒注意不用按enter@@" 更正了一下^^"
#include 
#include 
#define MAX_STR 100
void main(void)
{
        char StrTmp[MAX_STR],StrAns[MAX_STR],ch;
        int i,StrLen=-1;
        printf("請輸入字串:");
        do{
                ch = getche();
                if(ch =='@')
                        break;
                StrTmp[  StrLen] = ch;
        }while(1);
        putchar('\n');
        for(i=0;i<=StrLen;i  )
        {
                StrAns[StrLen-i] = StrTmp[i];
        }
        printf("%s\n",StrAns);
}
==================================== 懂的不多,卻想學的更多,搞得不自覺的將問題複雜化@@
系統時間:2024-06-29 16:51:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!