标题:字母倒置
只看楼主
tangjingwei
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-11-6
 问题点数:0 回复次数:7 
字母倒置
给出一个句子,把每一个字母倒置,但不改变单词的顺序。

输入:

这个题有多个CASE。第一行给出一个正整数N(N<500),然后紧接着一个空行,再紧接着N个数据块,。每一个数据块,包括一个正整数T与T行英语句子。句子总长不超过300。每两个数据块之间有一个空行。每个句子只包含大写字母与小写字母。

输出:

对于每个数据块 一行一句输出。每两个数据块之间用一个空行分隔。

输入样例:

1

3
I am happy today
To be or not to be
I want to win the practice contest



输出样例:

I ma yppah yadot
oT eb ro ton ot eb
I tnaw ot niw eht ecitcarp tsetnoc

字母怎么倒置啊
搜索更多相关主题的帖子: 字母 倒置 
2010-10-09 23:06
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
得分:0 
#include <iostream>
#include <vector>
#include <string>
#include<sstream>
usingnamespacestd;
int main(void)
{
    vector <string>result;s
    tringstr,temp;
    stringstream ss;
    getline(cin, str);
    ss < <str < <endl;
    while(ss>>temp) result.push_back(temp);
    for(inti=result.size(); i; cout < <result[--i] < <'');
    return0;
}

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-09 23:39
tangjingwei
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-11-6
得分:0 
回复 2楼 vandychan
用C怎么做
2010-10-10 00:24
zghnxzdcx
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:550
专家分:1176
注 册:2010-4-6
得分:0 
用四维字符数组做

char chars[数据块数][数据块中的最大句子数][句子最大的单词数 +1(\n)][单词最大的字符数+1 (\0)];

对于字符串的反序,是一个很简单的问题,自己解决吧

你永远不可能战胜一个纯傻子,因为他会把你的智商拉到和他同一个水平,然后用他的丰富经验打败你。
2010-10-10 07:32
cacker
该用户已被删除
得分:0 
提示: 作者被禁止或删除 内容自动屏蔽
2010-10-10 13:15
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
得分:0 
程序代码:
# include <string.h>
# include <stdio.h>

int
main()
{
    char string[500][300] ;
    char *reverse_string;
    int count , i = 0 ;
    scanf( "%d" ,&count ) ;
    fflush( stdin ) ;
    for( i = 0 ; i < count ;i++ )
    {
        gets( string[i] ) ;
    }
    for( i = 0 ;i < count ;i++ )
    {
        for( reverse_string = strtok( string[i], " " ) ; \
            reverse_string != NULL ; \
            reverse_string = strtok( NULL , " " ) )
        {
            strrev( reverse_string ) ;
            printf( "%s " , reverse_string ) ;
        }
        printf( "\n" ) ;
    }
    return 0;
}
这是我写的代码,不很否符合你的要求!!!
我调用了一个库函数,strtok来将字符分开处理!然后再调用strrev来将分开的每一个字符倒序输出来!!!

下面的是我同学写的代码:
程序代码:
#include <stdio.h>
int main()
{
    int n,t,i,j,k;
    char ch[310],str[310];
    scanf("%d",&n);
    while(n--)
    {
    scanf("%d",&t);
    getchar();
    while(t--)
    {
        gets(ch);
        i=0;
        j=0;
        while(ch[i])
        {
        if(ch[i]!=' ')
        {
            str[j]=ch[i];
            j++;
        }
        else
        {
            j--;
            while(j>=0)
            {
            printf("%c",str[j]);
            j--;
            }
            printf(" ");
            j=0;
        }
        i++;
        }
        j--;
        while(j>=0)
        {
        printf("%c",str[j]);
        j--;
        }
        printf("\n");
    }
    }
    return 0;
}


[ 本帖最后由 我菜119 于 2010-10-10 16:41 编辑 ]

愿用余生致力编程
2010-10-10 16:37
tangjingwei
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2009-11-6
得分:0 
回复 6楼 我菜119
多谢
2010-10-10 17:03
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
得分:0 
这时我用C++写的
程序代码:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
const int N=20;
void f(string s,int n)
{
    cout<<s[n-1];
    if(n>1)
        f(s,--n);
}
int main()
{
    string s[N];
    int i=0;
    while(cin>>s[i])
        i++;
    cin.clear();
   
     cin.sync();
    cout<<"原先的句子为:"<<endl;
    for(int j=0;j<i;j++)
    {
        cout<<setw(8);
        cout<<s[j];
       
    }
    cout<<"\n置换后句子为:"<<endl;
    for(int k=0;k<i;k++)
    {
        int n=s[k].length();
        f(s[k],n);
        cout<<setw(2);
    }
    cout<<endl;

}



If You Want Something, Go Get It, Period.
2010-10-10 17:13



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-322393-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022694 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved