zoukankan      html  css  js  c++  java
  • 校内赛(单词倒置)

    单词倒置

    Time Limit:1000MS  Memory Limit:65536K
    Total Submit:68 Accepted:8

    Description

    请编制程序实现下面的功能:将一篇英文文章中的以空格或标点符号为分隔的所有单词进行倒排,同时去除标点符号,之后输出已处理的英语文章(应不含标点符号)。

    Input

    有多组数据,每组一行,每组就是一篇小文章。每篇小文章都由大写字母、小写字母、空格及标点符号组成,遇到#时表示输入结束。

    Output

    每组输出其对应的字符串,其单独成行。

    Sample Input

    You He Me
    I am a student.
    #
    

    Sample Output

    Me He You
    student a am I
    //关键点: 处理将单词倒置外,空格也需要倒置

    View Code
    #include"iostream"
    using namespace std;
    int main()
    {
    char ch[100];
    char a[100][100];
    char b[100][100];
    char ss[100],ee[100];


    int i,j;
    while(gets(ch))
    {
    if(strcmp(ch,"#")==0) break;

    int L=strlen(ch);
    int k=0;
    int start=0,end=L;

    for(i=0;i<L;i++)
    if((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z')) {start=i ; break;}

    for(i=L-1;i>=0;i--)
    if((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z')) {end=i ; break;}

    //**********************************
    int p=0,q=0;

    for(i=0;i<=start;i++)
    if(ch[i]<'a'||ch[i]>'z'||ch[i]<'A'||ch[i]>'Z')
    {
    if(ch[i]==' ')
    ss[p
    ++]=' ';
    }
    else break;
    for(i=L-1;i>=end;i--)
    if(ch[i]<'a'||ch[i]>'z'||ch[i]<'A'||ch[i]>'Z')
    {
    if(ch[i]==' ') ee[q++]=' ';}
    else break;
    //***********************************

    if(q) //末尾有空格
    {
    for(i=0;i<q;i++)
    printf(
    "%c",ee[i]);
    }
    //******************************

    for(i=start;i<=end;i++)
    {
    if(ch[i]==' '||(ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z'))
    ch[k
    ++]=ch[i];
    }
    //*********************************
    memset(a,0,sizeof(a));
    memset(b,
    0,sizeof(b));
    int s=0,t=0;
    int f=0,g=0;

    for(i=0; i<k; i++) //保证是以字母开始
    {
    if((ch[i]>='a'&&ch[i]<='z')||(ch[i]>='A'&&ch[i]<='Z')) a[s][t++]=ch[i];
    if(ch[i]==' '&&ch[i+1]!=' ')
    {
    s
    ++;
    t
    =0;
    }
    if(ch[i]==' ') b[f][g++]=' ';
    if(ch[i]!=' '&&ch[i+1]==' ')
    {
    f
    ++;
    g
    =0;
    }
    }
    for(i=0;i<=s;i++)
    {
    printf(
    "%s",a[s-i]);
    printf(
    "%s",b[s-i]);
    }
    //***************************

    if(p) //前面有空格
    {
    for(i=0;i<p;i++)
    printf(
    "%c",ss[i]);
    }
    //**************************
    cout<<endl;
    }
    return 0;
    }
  • 相关阅读:
    react.js
    shell if,case,for,while语法
    shell判断文件类型和权限
    shell编程之sed语法
    php魔术方法__SET __GET
    git 忽略文件.gitignore
    php设置错误,错误记录
    linux ifconfig显示 command not found
    数据库备份与恢复
    mysql主要技术
  • 原文地址:https://www.cnblogs.com/FCWORLD/p/2012772.html
Copyright © 2011-2022 走看看