我正在尝试将一个句子中的单词并按字母顺序排列。它必须能够区分大写和小写字母,但是我很难让它只写小写字母。
如果我一次输入一个单词,它将按字母顺序排列,但是一旦我输入多个单词,它的表现就会很奇怪。如果我输入class A;
bit i;
function void method;
i = 1;
this.i = 2;
endfunction
endclass
,我希望收到"i need help"
;相反,我收到"i deen ehlp"
这是我的代码:
"i dnee ehlp"
答案 0 :(得分:1)
这是一个非常简单的解决方案。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
int letter_sort(const void* a, const void* b)
{
return tolower(*(const char*)a) - tolower(*(const char*)b);
}
char* sentence_sort(char* s)
{
char _[strlen(s)+1];
strcpy(_,s);
for(char* w = strtok(_, " ."); w; w = strtok(NULL, " ."))
{
qsort(w, strlen(w), !!w, letter_sort);
memcpy(s+(w-_), w, strlen(w));
}
return(s);
}
int main(void) {
char sent[101];
printf("Input a sentence with no more than 100 characters \n");
scanf("%[^\n]", sent);
printf("Sentence before sorting: %s\n", sent);
printf("Sentence after sorting: %s\n", sentence_sort(sent));
return 0;
}
Success #stdin #stdout 0s 9424KB
Input a sentence with no more than 100 characters
Sentence before sorting: The quick Brown fox Jumped over the Lazy Dogs.
Sentence after sorting: ehT cikqu Bnorw fox deJmpu eorv eht aLyz Dgos.