论坛风格切换
正版合作和侵权请联系 sd173@foxmail.com
 
  • 帖子
  • 日志
  • 用户
  • 版块
  • 群组
帖子
购买邀请后未收到邀请联系sdbeta@qq.com
  • 3735阅读
  • 13回复

[原创文章]求编程达人编写这个算法 [复制链接]

上一主题 下一主题
离线kitt80
 
发帖
*
今日发帖
最后登录
1970-01-01
只看楼主 倒序阅读 使用道具 楼主  发表于: 2010-05-14 21:58:00
— 本帖被 加贝518 执行锁定操作(2010-07-01) —
波兰表达式变换问题

«问题描述:
后缀形式(波兰形式)的表达式与通常的中缀形式的表达式不同。在后缀形式的表达式
中,2元运算的运算符出现在2个变量之后。例如,通常的表达式“a+b”,用后缀形式表示为
“a b +”。在通常的中缀形式的表达式中,需要用括号来表示运算的优先级。而在后缀形式
的表达式中,不需要用括号来表示运算的优先级,只要依次从左到右计算。例如,中缀形式
的表达式“15*(((9+18)*(4+6)+7)”的后缀形式为“15 9 18 + 4 6 * * 7 + *”。

«编程任务:
给定一个中缀形式的表达式,将其变换为等价的后缀形式的表达式。

«数据输入:
由文件 input.txt给出输入数据。第一行是给定的中缀形式的表达式。

«结果输出:
将计算出的后缀表达式输出到文件output.txt。

输入文件示例 输出文件示例
input.txt output.txt
15*(((9+18)*(4*6))+7) 15 9 18 + 4 6 * * 7 + *

麻烦达人会的话,帮忙用C++编一下,VC编译
离线wanzhu4218
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 沙发  发表于: 2010-05-15 00:39:40
有能力的会员来看看大家试一下!
离线sjp1800
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 板凳  发表于: 2010-05-15 09:30:15
看都看不懂
离线suy1000
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 地板  发表于: 2010-05-15 09:45:37
这个还真不是很了解,第一次看到后缀形式!
离线策衍
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 地下室  发表于: 2010-05-15 10:20:24
这个偶真不会啊   等高手来
离线亮剑
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 5 发表于: 2010-05-15 10:41:10
//token.h
// token.h: interface for the Ctoken class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_TOKEN_H__877B901A_31EC_480B_888B_228676A239EF__INCLUDED_)
#define AFX_TOKEN_H__877B901A_31EC_480B_888B_228676A239EF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
// extern char *oplist;
// extern char *allsplit;

#include<afx.h>

class Ctoken  
{
public:
    CString GetTokenLeft(LPCTSTR separate);
    char split;//上次gettoken的分隔符
    int Trimleft(LPCTSTR str);
    int GetNextSection();
    BOOL GetRP();
    int GetOP(LPCTSTR op);
    int CP;
    char *_Line;
    char *_Token;

    int TOKENSIZE;
    int LINECHAR;
    BOOL quotword;
    int GetToken(LPCTSTR separate,BOOL fullLRP=FALSE);
    Ctoken();
    virtual ~Ctoken();

};

#endif // !defined(AFX_TOKEN_H__877B901A_31EC_480B_888B_228676A239EF__INCLUDED_)
//token.cpp
// token.cpp: implementation of the Ctoken class.
//
//////////////////////////////////////////////////////////////////////



#include "token.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

Ctoken::Ctoken()
{
    TOKENSIZE=1024;
    LINECHAR=8192;
    CP=0;
    _Line=0;
    _Token=new char[TOKENSIZE];
    split=0;
}

Ctoken::~Ctoken()
{
    delete _Token;
}
// char *oplist="~!%^&*_+=-:<>/?|";
// char *allsplit="~!%^&*_+=-:<>/?| \t()[]";
int Ctoken::GetToken(LPCTSTR separate,BOOL fullLRP/*保持()完整*/)
{
    split=0;
    quotword=0;
    int TmpCP;
    int i;
    char *pBeginStr,*pEndStr;
    
    _Token[0]='\0' ;
    
    
    while(((_Line[CP] ==' ' )|| (_Line[CP] =='\t')) && (CP < LINECHAR)) CP++  ;
    
    if (CP >= LINECHAR)  goto TokError ;
    




    switch(_Line[CP]){

    case '"' :                        // parsing string
        pBeginStr=_Line+CP;
        pEndStr=strchr(pBeginStr+1,'"');
        if( pEndStr != NULL){
            CP= pEndStr-_Line+1;
            strncat(_Token,pBeginStr+1,pEndStr-pBeginStr-1);
            quotword=1;
        }
        else
        {
            strcat(_Token,"\"");
            CP++;
        }
        
        return 1;
        break;
    default:
        break;
    };

    TmpCP=CP;
    i=strlen(_Line);

    {
        int sl=strlen(separate);
        BOOL bsl=0;
        int lpcount=0;
        while(1)
        {
            if(_Line[CP]==0)break;
            if(fullLRP)
            {
                if(_Line[CP]=='(')
                {
                    lpcount++;
                }
                else if(_Line[CP]==')')
                {
                    lpcount--;
                }
            }
            if(lpcount>0)
            {
                CP++;
                continue;
            }
            bsl=_Line[CP] !=separate[0];
            for(int sn=1;sn<sl;sn++)
            {
                bsl=bsl&&(_Line[CP] !=separate[sn]);
            }
            if(bsl&&(CP<i))
            {
//                if((_Line[CP]=='!') )
//                    break ;
//                else
                
    
                    CP++ ;
                    
            }
            else
            {
                split=_Line[CP];
                break;
            }
            
        }
    }

    if (CP >= i)  goto TokError ;
    //if (CP >= LINECHAR)  goto TokError ;
    
    if((CP-TmpCP) >(TOKENSIZE-1))
    {
        strncat(_Token,&(_Line[TmpCP]),(TOKENSIZE-1));  
        CP++;
    }
    else
    {
        strncat(_Token,&(_Line[TmpCP]),(CP-TmpCP));        
        CP++;
    }
    return TRUE ;
    
TokError:
    strcat(_Token,_Line+TmpCP);        // error function    

    return FALSE ;


}

int Ctoken::GetOP(LPCTSTR op)
{
    char*p=_Line+CP;
    int oplen=strlen(op);
    _Token[0]=0;
    int l=0;
    int bok=1;
    while(*p)
    {
        bok=1;
        for(int i=0;i<oplen;i++)
        {
            if(*p==op)
            {
                _Token[l++]=*p;
                bok=0;
                break;
            }
        }
        if(bok)
        {
            _Token[l]=0;
            break;
        }
        p++;
    }
    _Token[l]=0;
    CP=p-_Line;
    return 1;
        
}

BOOL Ctoken::GetRP()
//取得匹配的右括号
{
    int count=0;
    int l=0;
    _Token[0]=0;
    while(_Line[CP])
    {
        if(_Line[CP]=='(')count++;
        else if(_Line[CP]==')')count--;
        _Token[l++]=_Line[CP];
        if(count==-1)
        {
            _Token[l-1]=0;
            CP++;
            return 1;
        }
        CP++;
    }
    return 0;
}

int Ctoken::GetNextSection()
//取得下一个{}段
{
    int count=0;
    int l=0;
    _Token[0]=0;
    while(_Line[CP])
    {
        if(_Line[CP]==' '||_Line[CP]=='\t')CP++;
        else break;
    }
    if(_Line[CP]!='{')
    {
        GetToken(";");
        return 1;
    }
    while(_Line[CP])
    {
        if(_Line[CP]=='{')count++;
        else if(_Line[CP]=='}')count--;
        _Token[l++]=_Line[CP];
        if(count==0)
        {
            _Token[l-1]=0;
            CP++;
            return 1;
        }
        else if(count==-1)return -1;
        CP++;
    }
    return 0;
}

int Ctoken::Trimleft(LPCTSTR str)
{
    int l=strlen(str);
    BOOL bok=0;
    while(_Line[CP])
    {
        bok=1;
        for(int i=0;i<l;i++)
        {
            if(_Line[CP]==str)
            {
                CP++;
                bok=0;
                break;
            }
        }
        if(bok)break;
    }
    return CP;


}



CString Ctoken::GetTokenLeft(LPCTSTR separate)
{
    char*p=_Line+CP-1;
    int l=strlen(separate);
    while((*p==' '||*p=='\t')&&p>_Line)p--;
    char*q=p;
    while(q>=_Line)
    {
        for(int i=0;i<l;i++)
        {
            if(*q==separate)
            {
                CString re;
                strncpy(re.GetBufferSetLength(p-q),q+1,p-q);
                return re;
            }
        }
        q--;
    }
    if(q<_Line&&CP>0)
    {
        CString re;
        strncpy(re.GetBufferSetLength(CP),_Line,CP);
        return re;
    }
    return "";
}
//cpp.cpp
// #define _DLL
// #define _AFXDLL
// #define _MT
#define _DLL
#define _AFXDLL
#define _MT
#include <afxtempl.h>
#include <stdio.h>
#include "token.h"

int pri(char c)
{
    switch(c)
    {
    case '+':
    case '-':
        return 1;
    case '*':
    case '/':
        return 2;
    }
    return 0;
}
BOOL isop(char c)
{
    if(c=='+'||c=='-'||c=='*'||c=='/')return 1;
    return 0;
}
BOOL isnum(char*str)
{
    int i=strlen(str);
    if(i==0)return 0;
    for(int j=0;j<i;j++)
    {
        if(!isdigit(str[j]))return 0;
    }
    return 1;
}
CStringList opstk;
CStringList valstk;

const char*toks="+-*/()";

void f(char*p)
{
    int prepri=0;
    CString str;
    Ctoken tok;
    tok._Line=p;
    BOOL re;
    while(1)
    {
        re=tok.GetToken(toks);
        if(tok.split=='(')
        {

            prepri=0;
        }

            
        if(isnum(tok._Token))
        {
            printf("%s",tok._Token);
            if(isop(tok.split))
            {
                int pr=pri(tok.split);
                if(pr>prepri)
                {
                    opstk.AddHead((CString)tok.split);
                }
                else
                {
                    if(opstk.GetCount())printf("%s",opstk.RemoveHead());
                }
                prepri=pr;
            }
            else if(tok.split==')')
            {
                prepri=99999;
                if(opstk.GetCount())printf("%s",opstk.RemoveHead());
            }
        }
        else if(isop(tok.split))
        {
            opstk.AddHead(tok.split);
        }
        else if(tok.split==')')
        {
            prepri=99999;
            if(opstk.GetCount())printf("%s",opstk.RemoveHead());
        }

next:
        if(!re)break;
        
    }
    while(opstk.GetCount())printf("%s",opstk.RemoveHead());

}
void main()
{
    char*str="15*(((9+18)*(4*6))+7)";
    f(str);
}
1条评分
加贝518 电魂 +4 闪电联盟因你而精彩! 2010-05-15
离线亮剑
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 6 发表于: 2010-05-15 10:42:03
回 楼主(kitt80) 的帖子
这样转换没什么意义啊
离线加贝518

发帖
26274
今日发帖
最后登录
2015-10-24
只看该作者 7 发表于: 2010-05-15 10:56:08
回 5楼(亮剑) 的帖子
编程高手
离线wanzhu4218
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 8 发表于: 2010-05-15 11:18:35
算法是判断优先级,如果比前一个高就push前一个运算符,否则就print出来,如果遇到')'则pop出一个运算符用来print,最后把opstk剩余运算符都print出来
Ctoken可作为通用的词法分析器。
不过觉得这样转换没什么意义,若要做计算器用双栈法,做编译器用语法树,都不用后缀
  1. //token.h
  2. // token.h: interface for the Ctoken class.
  3. //
  4. //////////////////////////////////////////////////////////////////////
  5. #if !defined(AFX_TOKEN_H__877B901A_31EC_480B_888B_228676A239EF__INCLUDED_)
  6. #define AFX_TOKEN_H__877B901A_31EC_480B_888B_228676A239EF__INCLUDED_
  7. #if _MSC_VER > 1000
  8. #pragma once
  9. #endif // _MSC_VER > 1000
  10. // extern char *oplist;
  11. // extern char *allsplit;
  12. #include<afx.h>
  13. class Ctoken  
  14. {
  15. public:
  16.     CString GetTokenLeft(LPCTSTR separate);
  17.     char split;//上次gettoken的分隔符
  18.     int Trimleft(LPCTSTR str);
  19.     int GetNextSection();
  20.     BOOL GetRP();
  21.     int GetOP(LPCTSTR op);
  22.     int CP;
  23.     char *_Line;
  24.     char *_Token;
  25.     int TOKENSIZE;
  26.     int LINECHAR;
  27.     BOOL quotword;
  28.     int GetToken(LPCTSTR separate,BOOL fullLRP=FALSE);
  29.     Ctoken();
  30.     virtual ~Ctoken();
  31. };
  32. #endif // !defined(AFX_TOKEN_H__877B901A_31EC_480B_888B_228676A239EF__INCLUDED_)
  33. //token.cpp
  34. // token.cpp: implementation of the Ctoken class.
  35. //
  36. //////////////////////////////////////////////////////////////////////
  37. #include "token.h"
  38. #ifdef _DEBUG
  39. #undef THIS_FILE
  40. static char THIS_FILE[]=__FILE__;
  41. #define new DEBUG_NEW
  42. #endif
  43. //////////////////////////////////////////////////////////////////////
  44. // Construction/Destruction
  45. //////////////////////////////////////////////////////////////////////
  46. Ctoken::Ctoken()
  47. {
  48.     TOKENSIZE=1024;
  49.     LINECHAR=8192;
  50.     CP=0;
  51.     _Line=0;
  52.     _Token=new char[TOKENSIZE];
  53.     split=0;
  54. }
  55. Ctoken::~Ctoken()
  56. {
  57.     delete _Token;
  58. }
  59. // char *oplist="~!%^&*_+=-:<>/?|";
  60. // char *allsplit="~!%^&*_+=-:<>/?| \t()[]";
  61. int Ctoken::GetToken(LPCTSTR separate,BOOL fullLRP/*保持()完整*/)
  62. {
  63.     split=0;
  64.     quotword=0;
  65.     int TmpCP;
  66.     int i;
  67.     char *pBeginStr,*pEndStr;
  68.     
  69.     _Token[0]='\0' ;
  70.     
  71.     
  72.     while(((_Line[CP] ==' ' )|| (_Line[CP] =='\t')) && (CP < LINECHAR)) CP++  ;
  73.     
  74.     if (CP >= LINECHAR)  goto TokError ;
  75.     
  76.     switch(_Line[CP]){
  77.     case '"' :                        // parsing string
  78.         pBeginStr=_Line+CP;
  79.         pEndStr=strchr(pBeginStr+1,'"');
  80.         if( pEndStr != NULL){
  81.             CP= pEndStr-_Line+1;
  82.             strncat(_Token,pBeginStr+1,pEndStr-pBeginStr-1);
  83.             quotword=1;
  84.         }
  85.         else
  86.         {
  87.             strcat(_Token,"\"");
  88.             CP++;
  89.         }
  90.         
  91.         return 1;
  92.         break;
  93.     default:
  94.         break;
  95.     };
  96.     TmpCP=CP;
  97.     i=strlen(_Line);
  98.     {
  99.         int sl=strlen(separate);
  100.         BOOL bsl=0;
  101.         int lpcount=0;
  102.         while(1)
  103.         {
  104.             if(_Line[CP]==0)break;
  105.             if(fullLRP)
  106.             {
  107.                 if(_Line[CP]=='(')
  108.                 {
  109.                     lpcount++;
  110.                 }
  111.                 else if(_Line[CP]==')')
  112.                 {
  113.                     lpcount--;
  114.                 }
  115.             }
  116.             if(lpcount>0)
  117.             {
  118.                 CP++;
  119.                 continue;
  120.             }
  121.             bsl=_Line[CP] !=separate[0];
  122.             for(int sn=1;sn<sl;sn++)
  123.             {
  124.                 bsl=bsl&&(_Line[CP] !=separate[sn]);
  125.             }
  126.             if(bsl&&(CP<i))
  127.             {
  128. //                if((_Line[CP]=='!') )
  129. //                    break ;
  130. //                else
  131.                 
  132.     
  133.                     CP++ ;
  134.                     
  135.             }
  136.             else
  137.             {
  138.                 split=_Line[CP];
  139.                 break;
  140.             }
  141.             
  142.         }
  143.     }
  144.     if (CP >= i)  goto TokError ;
  145.     //if (CP >= LINECHAR)  goto TokError ;
  146.     
  147.     if((CP-TmpCP) >(TOKENSIZE-1))
  148.     {
  149.         strncat(_Token,&(_Line[TmpCP]),(TOKENSIZE-1));  
  150.         CP++;
  151.     }
  152.     else
  153.     {
  154.         strncat(_Token,&(_Line[TmpCP]),(CP-TmpCP));        
  155.         CP++;
  156.     }
  157.     return TRUE ;
  158.     
  159. TokError:
  160.     strcat(_Token,_Line+TmpCP);        // error function    
  161.     return FALSE ;
  162. }
  163. int Ctoken::GetOP(LPCTSTR op)
  164. {
  165.     char*p=_Line+CP;
  166.     int oplen=strlen(op);
  167.     _Token[0]=0;
  168.     int l=0;
  169.     int bok=1;
  170.     while(*p)
  171.     {
  172.         bok=1;
  173.         for(int i=0;i<oplen;i++)
  174.         {
  175.             if(*p==op[i])
  176.             {
  177.                 _Token[l++]=*p;
  178.                 bok=0;
  179.                 break;
  180.             }
  181.         }
  182.         if(bok)
  183.         {
  184.             _Token[l]=0;
  185.             break;
  186.         }
  187.         p++;
  188.     }
  189.     _Token[l]=0;
  190.     CP=p-_Line;
  191.     return 1;
  192.         
  193. }
  194. BOOL Ctoken::GetRP()
  195. //取得匹配的右括号
  196. {
  197.     int count=0;
  198.     int l=0;
  199.     _Token[0]=0;
  200.     while(_Line[CP])
  201.     {
  202.         if(_Line[CP]=='(')count++;
  203.         else if(_Line[CP]==')')count--;
  204.         _Token[l++]=_Line[CP];
  205.         if(count==-1)
  206.         {
  207.             _Token[l-1]=0;
  208.             CP++;
  209.             return 1;
  210.         }
  211.         CP++;
  212.     }
  213.     return 0;
  214. }
  215. int Ctoken::GetNextSection()
  216. //取得下一个{}段
  217. {
  218.     int count=0;
  219.     int l=0;
  220.     _Token[0]=0;
  221.     while(_Line[CP])
  222.     {
  223.         if(_Line[CP]==' '||_Line[CP]=='\t')CP++;
  224.         else break;
  225.     }
  226.     if(_Line[CP]!='{')
  227.     {
  228.         GetToken(";");
  229.         return 1;
  230.     }
  231.     while(_Line[CP])
  232.     {
  233.         if(_Line[CP]=='{')count++;
  234.         else if(_Line[CP]=='}')count--;
  235.         _Token[l++]=_Line[CP];
  236.         if(count==0)
  237.         {
  238.             _Token[l-1]=0;
  239.             CP++;
  240.             return 1;
  241.         }
  242.         else if(count==-1)return -1;
  243.         CP++;
  244.     }
  245.     return 0;
  246. }
  247. int Ctoken::Trimleft(LPCTSTR str)
  248. {
  249.     int l=strlen(str);
  250.     BOOL bok=0;
  251.     while(_Line[CP])
  252.     {
  253.         bok=1;
  254.         for(int i=0;i<l;i++)
  255.         {
  256.             if(_Line[CP]==str[i])
  257.             {
  258.                 CP++;
  259.                 bok=0;
  260.                 break;
  261.             }
  262.         }
  263.         if(bok)break;
  264.     }
  265.     return CP;
  266. }
  267. CString Ctoken::GetTokenLeft(LPCTSTR separate)
  268. {
  269.     char*p=_Line+CP-1;
  270.     int l=strlen(separate);
  271.     while((*p==' '||*p=='\t')&&p>_Line)p--;
  272.     char*q=p;
  273.     while(q>=_Line)
  274.     {
  275.         for(int i=0;i<l;i++)
  276.         {
  277.             if(*q==separate[i])
  278.             {
  279.                 CString re;
  280.                 strncpy(re.GetBufferSetLength(p-q),q+1,p-q);
  281.                 return re;
  282.             }
  283.         }
  284.         q--;
  285.     }
  286.     if(q<_Line&&CP>0)
  287.     {
  288.         CString re;
  289.         strncpy(re.GetBufferSetLength(CP),_Line,CP);
  290.         return re;
  291.     }
  292.     return "";
  293. }
  294. //cpp.cpp
  295. // #define _DLL
  296. // #define _AFXDLL
  297. // #define _MT
  298. #define _DLL
  299. #define _AFXDLL
  300. #define _MT
  301. #include <afxtempl.h>
  302. #include <stdio.h>
  303. #include "token.h"
  304. int pri(char c)
  305. {
  306.     switch(c)
  307.     {
  308.     case '+':
  309.     case '-':
  310.         return 1;
  311.     case '*':
  312.     case '/':
  313.         return 2;
  314.     }
  315.     return 0;
  316. }
  317. BOOL isop(char c)
  318. {
  319.     if(c=='+'||c=='-'||c=='*'||c=='/')return 1;
  320.     return 0;
  321. }
  322. BOOL isnum(char*str)
  323. {
  324.     int i=strlen(str);
  325.     if(i==0)return 0;
  326.     for(int j=0;j<i;j++)
  327.     {
  328.         if(!isdigit(str[j]))return 0;
  329.     }
  330.     return 1;
  331. }
  332. CStringList opstk;
  333. CStringList valstk;
  334. const char*toks="+-*/()";
  335. void f(char*p)
  336. {
  337.     int prepri=0;
  338.     CString str;
  339.     Ctoken tok;
  340.     tok._Line=p;
  341.     BOOL re;
  342.     while(1)
  343.     {
  344.         re=tok.GetToken(toks);
  345.         if(tok.split=='(')
  346.         {
  347.             prepri=0;
  348.         }
  349.             
  350.         if(isnum(tok._Token))
  351.         {
  352.             printf("%s",tok._Token);
  353.             if(isop(tok.split))
  354.             {
  355.                 int pr=pri(tok.split);
  356.                 if(pr>prepri)
  357.                 {
  358.                     opstk.AddHead((CString)tok.split);
  359.                 }
  360.                 else
  361.                 {
  362.                     if(opstk.GetCount())printf("%s",opstk.RemoveHead());
  363.                 }
  364.                 prepri=pr;
  365.             }
  366.             else if(tok.split==')')
  367.             {
  368.                 prepri=99999;
  369.                 if(opstk.GetCount())printf("%s",opstk.RemoveHead());
  370.             }
  371.         }
  372.         else if(isop(tok.split))
  373.         {
  374.             opstk.AddHead(tok.split);
  375.         }
  376.         else if(tok.split==')')
  377.         {
  378.             prepri=99999;
  379.             if(opstk.GetCount())printf("%s",opstk.RemoveHead());
  380.         }
  381. next:
  382.         if(!re)break;
  383.         
  384.     }
  385.     while(opstk.GetCount())printf("%s",opstk.RemoveHead());
  386. }
  387. void main()
  388. {
  389.     char*str="15*(((9+18)*(4*6))+7)";
  390.     f(str);
  391. }


以上答案转自:电脑爱好者俱乐部
http://bbs.cfanclub.net/read-htm-tid-414241.html
感谢那里的 forestfairy 版主为我回答!
[ 此帖被wanzhu4218在2010-05-15 11:24重新编辑 ]
1条评分
hailand 电魂 +4 辛苦了。 2010-05-15
离线ljboss

发帖
13158
今日发帖
最后登录
2021-03-02
只看该作者 9 发表于: 2010-05-15 13:24:40
回 8楼(wanzhu4218) 的帖子
我还以为是玩主你写地呢。。   
离线wanzhu4218
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 10 发表于: 2010-05-15 15:32:13
Re:回 8楼(wanzhu4218) 的帖子
引用第9楼ljboss于2010-05-15 13:24发表的 回 8楼(wanzhu4218) 的帖子 :
我还以为是玩主你写地呢。。 [表情]  [表情]

我也不可能什么都那么精通啊!为了会员服务没办法的时候我也得帮会员想办法啊?这样不好吗?
离线kitt80
发帖
*
今日发帖
最后登录
1970-01-01
只看该作者 11 发表于: 2010-05-15 18:19:38
感谢各位热心的网友,但是有点太专业了,我太菜了,看不懂额!
离线加贝518

发帖
26274
今日发帖
最后登录
2015-10-24
只看该作者 12 发表于: 2010-05-15 20:05:50
回 11楼(kitt80) 的帖子
你们会看懂的,慢慢来

发帖
2421
今日发帖
最后登录
2016-09-15
只看该作者 13 发表于: 2010-05-17 17:53:16
用户被禁言,该主题自动屏蔽!