• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-1  評(píng)論-0  文章-1  trackbacks-0

             

            題目
            把給定的字符串以單詞的方式反序,其中,給定的子串不倒轉(zhuǎn),
            比如:s[] = "The quick brown fox jumps over the lazy dog";
            子串: sub[] = "brown fox";
            結(jié)果應(yīng)該是:dog lazy the over jumps brown fox quick The.
            Code:

              1#include <stdio.h>
              2#include <stdlib.h>
              3#include <string.h>
              4
              5#define MAX 7
              6int CountOfWords(char *buf)//統(tǒng)計(jì)一個(gè)字串中有多少個(gè)單詞
              7{
              8    int nCouter=0;
              9    int flag=0;
             10    while(*buf!='\0')
             11    {
             12        if(*buf!=' ')
             13        {
             14            flag=1;
             15        }

             16        if(flag==1&&*buf==' ')
             17        {
             18            nCouter++;
             19            flag=0;
             20        }

             21        ++buf;
             22    }

             23    if(*(buf-1)!=' ')nCouter++;
             24    return nCouter;
             25}

             26int MaxlenOfString(char *strbuf)
             27{
             28    int nMax=0,flag=1,counter=0;
             29    while (*strbuf!='\0')
             30    {
             31        if(*strbuf==' '||*strbuf==','||*strbuf=='.'||*strbuf=='-')
             32            counter=0;
             33        else
             34            ++counter;
             35        if(counter>=nMax)
             36            nMax=counter;
             37        ++strbuf;
             38    }

             39    return nMax;
             40}

             41
             42int CopyString(char *pstart,char *pend,char *buf)
             43{
             44    while(*pstart!=*pend)
             45    {
             46        *(buf++)=*(pstart++);
             47    }

             48    return 0;
             49}

             50/***************************************************/
             51int FindSub(char *strbuf,char *sub)//返回要查詢(xún)的單詞在所在句中的第幾個(gè)單詞。
             52{
             53    char *pstr=NULL,*psub=NULL,*pdes=strbuf,*pbuf;
             54    while (*pdes!='\0')
             55    {
             56        if(*pdes==*sub)
             57        {
             58            pstr=pdes;
             59            psub=sub;
             60            while(*psub!='\0')
             61            {
             62                if(*psub!=*pstr)
             63                {
             64                    break;
             65                }

             66                ++psub;
             67                ++pstr;
             68            }

             69            if(*psub=='\0')
             70            {
             71                pbuf=(char *)malloc(sizeof(char)*(pdes-strbuf+1));
             72                CopyString(strbuf,pdes,pbuf);
             73                strcat(pbuf,"\0");
             74                return CountOfWords(pbuf);//返回單詞個(gè)數(shù)位置
             75                //return pdes-strbuf;返回字母?jìng)€(gè)數(shù)的位置
             76            }

             77        }

             78        ++pdes;
             79    }

             80    return 0;
             81}

             82
             83int GetWord(char *strbuf,char *outbuf,int num)
             84{
             85    int i=1,flag=0,ncounter=0;
             86    if(num>CountOfWords(strbuf))return 0;
             87    while(i<num&&*strbuf!='\0')
             88    {
             89        if(*strbuf!=' ')
             90        {
             91            flag=1;
             92        }

             93        if(flag==1&&*strbuf==' ')
             94        {
             95            ++i;
             96            flag=0;
             97        }

             98        ++strbuf;
             99    }

            100    if(i>=num)
            101    {
            102        while(*strbuf!=' ')
            103        {
            104            *(outbuf++)=*(strbuf++);
            105        }

            106        return 1;
            107    }

            108    return 0;
            109}

            110
            111int DiveString(char *strbuf,char oubuf[][MAX])
            112{
            113    int i=0;
            114    int wordssum=CountOfWords(strbuf);
            115    for(i=1;i<=wordssum;i++)
            116    {
            117        GetWord(strbuf,oubuf[i-1],i);
            118    }

            119    return 0;
            120}

            121
            122int Reverse(char buf[][MAX],int nstart,int nend)
            123{
            124    int i=0;
            125    char tembuf[10];
            126    memset(tembuf,0,sizeof(tembuf));
            127    for(i=0;i<(nend-nstart+1)/2;i++)
            128    {
            129        strcpy(tembuf,buf[i+nstart-1]);
            130        strcpy(buf[i+nstart-1],buf[nend-1-i]);
            131        strcpy(buf[nend-1-i],tembuf);
            132    }

            133    return 0;
            134}

            135
            136int ComString(char *outbuf,char inbuf[][MAX],int num)
            137{
            138    int i=0;
            139    for(i=0;i<num;i++)
            140    {
            141        strcat(outbuf,inbuf[i]);
            142        strcat(outbuf," ");
            143    }

            144    strcat(outbuf,"\0");
            145    return 0;
            146}

            147
            148void Display(char buf[][MAX],int num)
            149{
            150    int i=0;
            151    for(i=0;i<num;i++)
            152    {
            153        printf("[%s] ",buf[i]);
            154    }

            155    printf("\n");
            156}

            157int main()
            158{
            159    char buf[]="The quick brown fox jumps over the lazy dog";
            160    char sub[]="brown fox";
            161    char tet[10];
            162    char test[9][MAX];
            163    int ncounter=0,nmax=0,i=0;
            164    ncounter=CountOfWords(buf);
            165    nmax=MaxlenOfString(buf);
            166    memset(tet,0,sizeof(tet));
            167    memset(test,0,sizeof(test));
            168    printf("%s = [%d]\n",buf,CountOfWords(buf));
            169    ncounter=CountOfWords(buf);
            170    printf("%s = [%d]\n",buf,MaxlenOfString(buf));
            171
            172    printf("分解后\n");
            173    DiveString(buf,test);
            174    Display(test,9);
            175    printf("逆序之后的\n");
            176    Reverse(test,1,9);
            177    Display(test,9);
            178    Reverse(test,6,7);
            179    printf("二次逆序之后的\n");
            180    Display(test,9);
            181    printf("合并后\n");
            182
            183    ComString(buf,test,9);
            184    printf("%s\n",buf);
            185    return 0;
            186}

            結(jié)果:

             

            posted on 2009-06-13 16:16 宇馳 閱讀(208) 評(píng)論(0)  編輯 收藏 引用
            一本久久综合亚洲鲁鲁五月天| 久久国产精品偷99| 影音先锋女人AV鲁色资源网久久| 久久久黄色大片| 国产V综合V亚洲欧美久久| 久久精品国产91久久麻豆自制| 久久久久99精品成人片三人毛片| 天天做夜夜做久久做狠狠| 久久精品无码午夜福利理论片| 久久国产精品偷99| 久久久国产精品亚洲一区| 久久精品无码一区二区日韩AV | 国产亚洲欧美精品久久久| 狠狠色婷婷综合天天久久丁香 | 久久99精品久久久久久野外| 精品人妻伦九区久久AAA片69| 国产成人精品久久| 婷婷久久久亚洲欧洲日产国码AV | 国内高清久久久久久| 亚洲嫩草影院久久精品| 亚洲熟妇无码另类久久久| 久久无码人妻精品一区二区三区| AV狠狠色丁香婷婷综合久久| 久久婷婷是五月综合色狠狠| 久久久久久亚洲精品无码| 久久精品无码一区二区三区| 久久亚洲私人国产精品vA | 夜夜亚洲天天久久| 国产V综合V亚洲欧美久久| 狠狠88综合久久久久综合网| 热久久视久久精品18| 亚洲国产成人久久笫一页| 久久久久一本毛久久久| 国産精品久久久久久久| 91精品国产91久久久久久蜜臀| 99久久人妻无码精品系列 | 亚洲精品午夜国产va久久| 热综合一本伊人久久精品| 免费精品久久久久久中文字幕 | 91精品国产9l久久久久| 久久久精品一区二区三区|