标题:将一个字符数组中的字符按单词倒排,哪位大神能解决一下?
只看楼主
水晰
Rank: 3Rank: 3
来 自:新疆
等 级:论坛游侠
帖 子:39
专家分:113
注 册:2011-4-6
得分:0 
学习了,
2011-04-17 19:10
ansic
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:恍惚窈冥
等 级:城市猎人
帖 子:1543
专家分:5367
注 册:2011-2-15
得分:0 
程序代码:
#include <stdio.h>
int main (void) {
        struct word {
                char str[10];
        };
        struct word array[5];
        int i;
//input
        for(i=0;i<5;i++) { scanf("%s",array[i].str); }
//display
        for(i--;i>=0;i--) { printf ("%s\n",array[i].str); }
        return 0;
}

善人者,不善人之师;不善人者,善人之资。不贵其师,不爱其资,虽智大迷。
2011-04-17 21:42
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
得分:1 
6 楼为什么不用 strlen() ?
9 楼的方法蛮好,不过 if(Str[i] == ' ') 这个粗心了吧
楼上的童鞋也粗心了,没有注意对于标点符号的要求,而且也不许要定义 struct 吧,直接 char array[ ][ ]不就好了

[ 本帖最后由 voidx 于 2011-4-17 22:36 编辑 ]
2011-04-17 22:29
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:0 
strtok 可以拆分字符串。楼主可以试试用用,结合这个函数和递归就可以写一个比较短小的函数完成这个任务。
2011-04-18 01:02
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:5 
感觉用语言描述还是有点抽象:
不会用 strtok 的人,自己想办法搞清楚。我这只是个演示程序。
程序代码:
#include <stdio.h>
#include <string.h>

#define N 100
const char d[] = " ,.?!";       // 分隔单词的字符,如空格和一些标点。

void reverse_aux()
{
    const char *p = strtok(NULL, d);
    if (p == NULL) return;

    reverse_aux();
    printf("%s ", p);
}

void reverse(char *s)
{
    const char *p = strtok(s, d);
    reverse_aux();      // 由在处理上有一点小区别,我用了另一个函数。
    if (p) printf("%s\n", p);
}


int main(int argc, char *argv[])
{
    char s[N];
    gets(s);
    reverse(s);

    return 0;
}

2011-04-18 01:32
hui魑魅魍魉
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2012-3-23
得分:0 
hah
2012-03-23 19:37



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




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

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