单词倒排

单词倒排(一)

#include<stdio.h>
#include<string.h>
int main()
{
    int i,j;
    char a[20][20]={0},b[1][20]={0};//字符数组创建时就立即初始化为全0(即ASCI值0---对应字符'\0')    
    for(i=0;i<20;i++)
    {
        int flag=0;
        for(j=0;;)//一个字符串的输入
        {
            char C=getchar();
            if(C=='\n') {  flag=1;   break;  }//遇到换行时停止输入,跳出双重循环
            if(C!=',' &&C!='.' &&C!=' ')    
            {
                a[i][j]=C;
                j++;
            }
            else break;//遇到标点和空格就停止输入一个字符串
        }    
        if(flag==1)    break;        
    }

    int count=0;//统计单词个数
    while(a[count][0]!='\0') count++;  
    //printf("%d\n",count);//用于调试
    for(i=0,j=count-1;j>i;i++,j--)//交换行
    {
        strcpy(b[0],a[j]);
        strcpy(a[j],a[i]);
        strcpy(a[i],b[0]);
    };
    for(i=0;i<20;i++)//输出字符串
    {
        for(j=0;j<20 &&a[i][j]!='\0';j++)                    
            printf("%c",a[i][j]);
        if(a[i][0]=='\0')    break;
        printf(" ");
    };
    printf("\n");
    return 0;
}

单词倒排(二)

#include<stdio.h>
int main()
{
    int i,j;
    int word=0,num=0;//新单词标记,单词下标
    char str[100],s[50][20]={0},c;
    gets(str);//输入字符串(多个单词)

    for(i=0;(c=str[i])!='\0';i++)//遍历字符串,拆分成多个单词,存入s[][]中
    {
        if(c==' '||c==','||c=='.')//遇到标点,说明新开始一个单词,用word标记为0
            word=0;
        else
        {
           if(word==0)//新开始一个单词
           {
               j=0;//单词中字符下标
               num++;//单词下标(第几个单词)---从1开始
               word=1;
           }
           s[num][j]=c;//
           j++;
        }
    }    
    for(i=num;i>0;i--)
        printf("%s ",s[i]);
    printf("\n");
    return 0;
}

posted on 2012-11-02 09:54  IThinktan  阅读(1484)  评论(0编辑  收藏  举报

导航