标题:hello world都不会该如何是好,求助!
只看楼主
wzhe800
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-9-26
结帖率:80%
已结贴  问题点数:10 回复次数:9 
hello world都不会该如何是好,求助!
1009. 说反话 (20)

时间限制
400 ms
内存限制
65536 kB
代码长度限制
8000 B
判题程序
Standard
作者
CHEN, Yue
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多余的空格。

输出格式:每个测试用例的输出占一行,输出倒序后的句子。

输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello




本来就没啥编程能力。。而且很恐惧字符串。。无奈还是打了一下代码。。
按照逻辑上应该没什么错误,不过运行不出来。
那肯定里面有很大的问题。希望谁能指点一下,谢谢了
#include<stdio.h>
#include<string.h>
int main(){
    char a[100],b[100];
    int j;
    for(int i=0;getchar()!='\n';i++){
         a[i]=getchar();
        }                                     //输入整个字符串
    i--;
    for(;i>=0;i--){                                //将a数组以空格分段,逐段转移到b数组,然后输出b数组,i对a,j对b
        while(a[i]!=' '){               
        j=0;
        b[j]=a[i];
        i--;
        j++;}
        j--;
        for(;j>=0;j--){
            printf("%s",b[j]);}
        if(a[i]==' ')  putchar(' ');           //输出空格
        }//for
    return 0;
}
搜索更多相关主题的帖子: 编写程序 英文字母 hello 字符串 英语 
2016-02-02 20:07
BCCN_Stone
Rank: 1
来 自:河南
等 级:新手上路
威 望:1
帖 子:8
专家分:9
注 册:2016-2-2
得分:8 
mark

我很好,不哭不闹不炫耀,不要卑微,不要嘲笑,也不需要别人知道。
2016-02-02 23:36
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:1 
程序代码:
#include <stdio.h>

int main( void )
{
    char str[40][81];
    unsigned size=0;

    for( char c; scanf("%s%c",str[size++],&c)==2 && c==' '; );

    while( size-- )
        printf( "%s%s", str[size], " "+(size==0) );

    return 0;
}
2016-02-03 08:42
BCCN_Stone
Rank: 1
来 自:河南
等 级:新手上路
威 望:1
帖 子:8
专家分:9
注 册:2016-2-2
得分:0 
正确:
程序代码:
#include <stdio.h>
int main(void)
{
    char a[10][10];
    int i;
    for (i=0;;i++) 
    {
        scanf("%s",a[i]);
        if(getchar()=='\n') break;
    }
    for(;i>=0;i--)
    {
        printf("%s ",a[i]);
    }
    getchar();
    return 0;
}

完全倒序:
程序代码:
#include<stdio.h>
int eps(char *ss);//声明eps
#include<string.h>
int main(void)
{
    char a[10][10];//定义二维数组
    //不需要,b[100];
    //int j;
    //for(int i=0;getchar()!='\n';i++){a[i]=getchar();}  i 是循环中定义的函数,不能再循环体之外使用。
    int i;//定义循环变量
    for(i=0;;i++) 
    {
    scanf("%s",a[i]);
    if(getchar()=='\n') break;
    } //输入字符串
    putchar('\n');
    for(;i>=0;i--) 
    {
        int m=eps(a[i])-1; //调用eps函数,-1并赋给m(因为数组下标是从0开始的)
        //printf("%d\n",m);
        int t=m;//控制输出空格
        for(;m>=0;m--,t--) printf("%c",a[i][m]); //反序输出
        if(t<0) putchar(' ');//输出空格
    } //反序输出
        //i--;不明白你为何要减
        //for(;i>=0;i--){                                //将a数组以空格分段,逐段转移到b数组,然后输出b数组,i对a,j对b
        //while(a[i]!=' '){               
        //j=0; j总是等于0吗?
        //b[j]=a[i];
        //i--;
        //j++;}
        //j--;
        //for(;j>=0;j--){
        //    printf("%s",b[j]);}
        //if(a[i]==' ')  putchar(' ');           //输出空格
        // }//for
    getchar();//pause
    return 0;
}
int eps(char *ss) //定义eps函数 取得字符串有效位数长度
{
    int i;
    for(i=1;ss[i]!='\0';i++);
    return i;
}

我很好,不哭不闹不炫耀,不要卑微,不要嘲笑,也不需要别人知道。
2016-02-03 11:39
BCCN_Stone
Rank: 1
来 自:河南
等 级:新手上路
威 望:1
帖 子:8
专家分:9
注 册:2016-2-2
得分:0 
回复 4楼 BCCN_Stone
嗷,错了
那个空格,自己想办法吧,很容易的

我很好,不哭不闹不炫耀,不要卑微,不要嘲笑,也不需要别人知道。
2016-02-03 11:42
BCCN_Stone
Rank: 1
来 自:河南
等 级:新手上路
威 望:1
帖 子:8
专家分:9
注 册:2016-2-2
得分:0 
回复 楼主 wzhe800
逻辑上肯定错

我很好,不哭不闹不炫耀,不要卑微,不要嘲笑,也不需要别人知道。
2016-02-03 11:43
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:1 
程序代码:
/*
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。

输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过80的字符串。字符串由若干单词和若干空格组
成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用1个空格分开,输入保证句子末尾没有多
余的空格。

输出格式:每个测试用例的输出占一行,输出倒序后的句子。

输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello

*/

#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <conio.h>

const size_t Max_Length = 80;
const int Delimit_Char = ' ';

int main(void)
{
    char text[Max_Length + 1] = "Hello World Here I Come";

    char* ptr;
    while ((ptr = strrchr(text, Delimit_Char)) != NULL)
    {
        printf_s("%s ", ptr + 1);
        *ptr = '\0';
    }
    printf_s("%s\n", text);

    printf_s("\nPress any key to continue...");
    _getch();
    return EXIT_SUCCESS;
}


如何不斷接收行文本,自己搞定。

[此贴子已经被作者于2016-2-3 16:30编辑过]


授人以渔,不授人以鱼。
2016-02-03 16:01
wzhe800
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-9-26
得分:0 
回复 6楼 BCCN_Stone
谢谢你~很详细~
2016-02-03 19:11
wzhe800
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-9-26
得分:0 
回复 7楼 TonyDeng
有点超出我的目前水平。。 不过还是谢谢~
2016-02-03 19:11
wzhe800
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2015-9-26
得分:0 
回复 3楼 rjsp
看不懂。。
2016-02-03 19:13



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




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

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