2 liaohuongxing liaohuongxing 于 2016.02.13 23:30 提问

菜鸟求助!按字典顺序排列问题

输入若干英文单词,将每个单词的首字母转换成大写字母,其他字母为小写,并按字典顺序排列

4个回答

caozhy
caozhy   Ds   Rxr 2016.02.14 06:37
已采纳
 #include <stdio.h>
#include <stdlib.h>
#include <string.h>

int cmp(const void * a, const void * b)
{
    return strcmp(*(char **)a, *(char **)b);
}

int main(int argc, char* argv[])
{
    int n = 0;
    int i;
    printf("how many words?\n");
    scanf("%d", &n);
    char ** s = new char *[n];
    for (i = 0; i < n; i++)
    {
        s[i] = new char[100];
        scanf("%s", s[i]);
        char * t = s[i];
        while (*t != '\0')
        {
            if (t == s[i] && (*t >= 'a' && *t <= 'z')) *t = *t - 'a' + 'A';
            if (t > s[i] && (*t >= 'A' && *t <= 'Z')) *t = *t - 'A' + 'a';
            t++;
        }
    }
    qsort(s, n, sizeof(char *), cmp);
    for (i = 0; i < n; i++)
    {
        printf("%s\n", s[i]);
    }
    return 0;
}
 how many words?
5
wORd
HellO
yEllow
she
APPLE
Apple
Hello
She
Word
Yellow
Press any key to continue
caozhy
caozhy   Ds   Rxr 2016.02.14 06:43

图片说明

collin18
collin18   2016.02.18 19:35

(1)单词字母大小转换比较容易实现。
(2)字符串比较可以用strcmp函数。
(3)选一种常见的排序算法(如冒泡),用strcmp函数对字符串进行比较,然后排序即可实现。

91program
91program   Ds   Rxr 2016.02.14 00:43

这是两个需求,第一个简单:字母大写小写转换;第二个排序:排序算法很多,网上查一下就有答案。在字母大写小写转换时统计一下个数,排序时用。

91program
91program 回复caozhy: 你不知道说明你很“牛”,孙子曹。你跟你爷爷的回答,是不是很高兴?来叫什么爷爷听一下。
接近 2 年之前 回复
caozhy
caozhy 而且“字母大写小写转换时统计一下个数,排序时用”这个真心不知道排序的时候有什么用。
接近 2 年之前 回复
91program
91program 回复caozhy: 孙子曹,你又来找骂!爷爷说过你跟我的回复一下、爷爷就骂一次。这是我对你的“承诺”!无论我的回答正确与否,也无论你的跟的正确与否。骂人,以后升级了:我会骂一片,包括你的家人。Are you ready!天作孽犹可活,自作孽不
接近 2 年之前 回复
91program
91program 回复caozhy: 孙子曹,我还是真的很佩服你。你爷爷用手机只能给出思路,不像孙子你可以给出“搜索”结果。
接近 2 年之前 回复
caozhy
caozhy 请管理员删除这种毫无意义的答案
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片