首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在C中使用strcmp和bubblesort 2d数组进行排序

在C中使用strcmp和bubblesort 2d数组进行排序
EN

Stack Overflow用户
提问于 2014-12-03 00:19:24
回答 1查看 3.3K关注 0票数 1

我需要按行排序给定的2d数组(char crossword40)。

crossword40包含:

代码语言:javascript
复制
TYPE
GUITARIST
VAIN
ROME
MARRIAGE
NOODLE
ANT
IN
PETROL
CUT
LIE
ATOM
MOUTH
ENVELOPE
IN
AT
AGE
ART
INTERIOR
AT
ROBBERY
AT
AIR
STIR
NO
IT
SMILE
NIGHT
ACE
MANDATORY
TO
NY
DO
OZONE
ON
UNDERWATER
NOUN

所以crossword=TYPE,crossword1=GUITARIST等。

必须转换成这样的辞典顺序:

代码语言:javascript
复制
ACE  
ANT  
...  
...  
...  
VAIN

当然,我知道如何设置一个一维数组,但是像上面这样的2d会发生什么呢?

我只想要行,所以单词的字母保持原样。如果代码包含strcmp,我会很感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-12-03 00:42:00

int strcmp ( const char * str1, const char * str2 );

返回str1 < str2的负值、str1 > str2的正数和str1 = str2的零值。

听起来很有用。记住,C中的单词只是char数组。因此,我们可以为索引遍历执行strcmp (...)的单词。

现在,我们几乎在一维数组中排序整数的水平上。

我们还需要一个临时变量(就像整数的标准气泡排序一样)。在交换对象时,请记住使用strcpy()

因此,我们的代码将按照

代码语言:javascript
复制
#define MAX 40

int i, j;

char temp[20];
for (i = 0; i < MAX-1; ++i)
{
    for (j = i+1; j < MAX; ++j)
    {
        if (strcmp (words[i], words[j]) > 0)
        {
            strcpy (temp, words[i]);
            strcpy (words[i], words[j]);
            strcpy (words[j], temp);
        }
    }
}

注意:-还没有被我测试过。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27261490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档