gpt4 book ai didi

c - C中单词从最少字符到最多字符排序

转载 作者:行者123 更新时间:2023-11-30 16:31:55 25 4
gpt4 key购买 nike

我的任务是使用指针数组解决以下问题:

为一个函数编写两个原型(prototype),该函数根据以下条件对字符串列表进行排序字符串长度——从最短到最长。首先,该函数应该期望一个输入/输出参数是一个二维字符数组,其中字符串最多包含 STRSIZ 个字符。在第二个中,该函数应该期望输入/输出参数是一个指针数组。

我目前已经为它编写了这段代码,但似乎无法告诉我为什么它不能正常工作:

int number;
int a;
int b;
char placeholder;
char words[100];
char wordscopy[100];

printf("Enter the amount of words or names you wish to sort (0 - 100) :\n");
scanf_s("%d", &number);

printf("Enter names or words on separate lines\n");
for (a = 0; a < number; ++a)
scanf_s("%s", &words[a]);

for (a = 0; a < number; ++a)
words[a] = wordscopy[a];

for (a = 0; a < number; ++a)
{
for (b = a + 1; b < number; ++b)
{
if (strlen(wordscopy[a]) < strlen(wordscopy[b]))
{
placeholder = wordscopy[a];
wordscopy[a] = wordscopy[b];
wordscopy[b] = placeholder;
}
}
}
printf("\n\n%-30s%5c%-30s\n\n", "Original Order", ' ',"Least Letters to Most Letters");
for (a = 0; a < number; ++a)
printf("%-30s%5c%-30s\n", words[a], ' ', wordscopy[a]);
printf("\n\n");


return 0;

我对编码相当陌生,我似乎无法找出为什么该程序不适合我。

输出应该是:

Original Order               Least Letters to Most Letters
Brad Brad
Matthew Megan
Brandon Brandon
Megan Matthew
Melissa Melissa

最佳答案

您可以使用 qsort 按字符串大小对字符串进行排序

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define MAXLEN 25

int compare (const void * a, const void * b) {
size_t fa = strlen((const char *)a);
size_t fb = strlen((const char *)b);
return (fa > fb) - (fa < fb);
}

int main() {

int num_words;
scanf("%d", &num_words);

char word[MAXLEN];


char input[num_words][MAXLEN];
for(int i = 0; i < num_words; i++ ) {
scanf("%s", word);
strcpy(input[i], word);
}

qsort(input, num_words, MAXLEN, compare);
for(int i = 0; i < num_words; i++)
printf("%s\n", input[i]);
return 0;
}

按字符串大小排序的结果:

Input:              Output:

Brad Brad
Matthew Megan
Brandon Brandon
Megan Melissa
Melissa Matthew

关于c - C中单词从最少字符到最多字符排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50373329/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com