全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1794
推到 Plurk!
推到 Facebook!

又是另ㄧ種字串反轉問題??

答題得分者是:mypcweb
fj9071
一般會員


發表:8
回覆:4
積分:2
註冊:2005-01-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-22 15:02:23 IP:61.221.xxx.xxx 未訂閱
#include #include void reverse(char s[]); void main(void){ char str1[]="abc xyz pqr"; printf("字串內容為:%s\n",str); reverse(str); printf("測試字串 1 經處理後的內容 => %s\n", str1); } void reverse(char s[]) { 這裡要怎麼寫阿?? } 輸出為cba zyx rqp, 也可不用函式寫
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-22 15:39:00 IP:61.66.xxx.xxx 未訂閱
fj9701你好    你的問題可分3個部份 1. char str1[]="abc xyz pqr";用strtok把他拆成3個字串 http://delphi.ktop.com.tw/topic.php?topic_id=57671 【BCB】【問題】字串拆解的問題 2. 用strrev將3個字串反轉
 
#include 
#include     int main(void)
{
   char *forward = "string";       printf("Before strrev(): %s\n", forward);
   strrev(forward);
   printf("After strrev():  %s\n", forward);
   return 0;
}
3. 把3個字串利用strcat結合為1個字串後再傳回去
 #include 
#include     int main(void)
{
   char destination[25];
   char *blank = " ", *c = "C  ", *Borland = "Borland";       strcpy(destination, Borland);
   strcat(destination, blank);
   strcat(destination, c);       printf("%s\n", destination);
   return 0;
}
fnk
高階會員


發表:40
回覆:149
積分:102
註冊:2004-01-02

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-22 16:01:32 IP:140.124.xxx.xxx 未訂閱
不好意思...插個花...    
//反轉副函式 
void reverse(char *src)
  {
  int i,j,num;
  char Result[30];      num = strlen(src);
  for(i=(num-1),j=0;i>=0;i--,j  )  Result[j] = src[i];
  Result[num] = 0;
  strcpy(src,Result);
  }    //測試程式
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char str1[]="abc xyz pqr";
Form1->Canvas->TextOutA(0,0,str1);  // 顯示反轉前
reverse(str1);
Form1->Canvas->TextOutA(0,30,str1); // 顯示反轉後
}
=========== 有興趣,就能進步 ===========
taishyang
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-22 18:27:15 IP:210.68.xxx.xxx 未訂閱
fj9071您好: PO程式碼的方式請參考版規說明,煩請修改謝謝配合 < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48259">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48259
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-22 19:58:34 IP:61.66.xxx.xxx 未訂閱
fnk你好 你的方法我試了一下,就是strrev(),也就是把整個字串倒轉 不過他要的比較複雜,他要的是把字串中的三個字串分別倒轉 fj9071你好 我提供的只是方法,要利用這種方法去解 範例是從HELP中抓下來的,給你參考
fnk
高階會員


發表:40
回覆:149
積分:102
註冊:2004-01-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-22 20:16:58 IP:140.124.xxx.xxx 未訂閱
哈...不好意思... 沒看清楚題目.... 謝謝blk5743大大的指教...對不起哦...>"< 我是來搞笑的..>"< =========== 有興趣,就能進步 ===========
mypcweb
一般會員


發表:0
回覆:2
積分:5
註冊:2005-03-22

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-22 22:26:20 IP:220.138.xxx.xxx 未訂閱
     
 #include < stdio.h >    void reverse(char *s)
{
   //firsti 記錄遇到空白前的第一個 i
   //nowi   記錄目前運算到的 i 
   //rem    用來判斷是否開始記錄 firsti ,如果 rem 等於 0 則記錄 firsti 
   int firsti,nowi,i;
   int j,rem,num = strlen(s);
   rem = 0;
   //因為需要判斷到字串結尾的'\0'所以小於等於字串長度 
   for (i = 0; i <= num ; i  )
   {
      if (rem == 0) 
      {
         rem = 1;
         firsti = i;          }
      //如果遇到空白或結束時,開始倒印出之前的字母 
      if (s[i] == '\0' || s[i] == ' ')
      {
         nowi = i;
         nowi--;             for ( j = nowi ; j >= firsti ; j--)
         {
            printf("%c",s[j]);
         }
         //如果是陣列內容是空白則印出空白 
         if (s[i] == ' ') printf (" ");
      
      rem = 0;   
      }             }    
}    main()
{
    char str1[]="abc xyz pqr";
    printf("字串內容為: %s\n",str1);
    printf("測試字串 1 經處理後的內容 => ");
    reverse(str1);
    getch();
}
發表人 - mypcweb 於 2005/03/22 22:29:55
fj9071
一般會員


發表:8
回覆:4
積分:2
註冊:2005-01-07

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-23 00:01:17 IP:61.221.xxx.xxx 未訂閱
謝謝各位大大熱心回覆^^
系統時間:2024-05-19 14:41:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!