c语言按字母顺序对单词排序
时间: 2023-08-19 14:38:46 浏览: 316
可以使用C语言中的qsort函数对单词进行排序,具体实现可以参考以下代码:
```c
#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() {
char words[10][20];
int i, n;
printf("Enter number of words: ");
scanf("%d", &n);
printf("Enter %d words:\n", n);
for(i = 0; i < n; i++)
scanf("%s", words[i]);
qsort(words, n, sizeof(words[0]), cmp);
printf("\nIn lexicographical order: \n");
for(i = 0; i < n; i++)
printf("%s\n", words[i]);
return 0;
}
```
在这个代码中,我们使用了qsort函数进行排序,cmp函数用于比较两个字符串的大小。在主函数中,我们先输入需要排序的单词,然后使用qsort函数进行排序,最后输出排序后的结果。
相关问题
c语言对单词进行26字母排序
在C语言中,对单词进行26字母排序通常会涉及到字符串处理和字符数组的操作。首先,你需要将单词转换成字符数组,然后逐个比较每个字符,根据ASCII值进行排序。这里是一个简单的步骤:
1. 定义一个函数,比如`sort_word(char* word)`,接收一个指向单词首字符的指针作为输入。
2. 遍历整个单词,忽略非字母字符,只考虑小写字母,因为ASCII值是区分大小写的。
3. 对包含的字母创建一个新的字符数组,并按照ASCII顺序存放字母。
4. 使用内置的字符串排序算法或者自定义冒泡、选择或插入排序等简单排序算法对新数组进行排序。
5. 将排序后的字母复制回原单词数组,替换原始位置的字符。
6. 最后返回排序后的单词指针,或者直接在原数组上进行修改,无需分配新的内存。
```c
#include <stdio.h>
#include <ctype.h>
void sort_alpha(char *word) {
int len = strlen(word);
char sorted[len];
for (int i = 0; i < len; i++) {
if (isalpha(word[i])) { // 检查是否为字母
sorted[i] = tolower(word[i]); // 转换为小写并存储
} else {
continue;
}
}
// 简单排序,例如冒泡排序
for (int i = 0; i < len - 1; i++) {
for (int j = 0; j < len - 1 - i; j++) {
if (sorted[j] > sorted[j + 1]) {
char temp = sorted[j];
sorted[j] = sorted[j + 1];
sorted[j + 1] = temp;
}
}
}
// 把排序后的字母复制回原单词
for (int i = 0, k = 0; i < len; i++) {
if (isalpha(word[i])) {
word[k++] = sorted[i];
}
}
}
int main() {
char word[] = "Hello World! C Programming";
sort_word(word);
printf("Sorted word: %s\n", word);
return 0;
}
用c语言单词按字母排序
以下是一个简单的C语言程序,可以将一组单词按字母顺序排序:
```c
#include <stdio.h>
#include <string.h>
#define MAX_WORDS 100
#define MAX_LENGTH 50
void sortWords(char words[][MAX_LENGTH], int n);
int main()
{
char words[MAX_WORDS][MAX_LENGTH];
int n, i;
printf("Enter the number of words: ");
scanf("%d", &n);
printf("Enter %d words:\n", n);
for (i = 0; i < n; i++) {
scanf("%s", words[i]);
}
sortWords(words, n);
printf("\nThe sorted words are:\n");
for (i = 0; i < n; i++) {
printf("%s\n", words[i]);
}
return 0;
}
void sortWords(char words[][MAX_LENGTH], int n)
{
char temp[MAX_LENGTH];
int i, j;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (strcmp(words[i], words[j]) > 0) {
strcpy(temp, words[i]);
strcpy(words[i], words[j]);
strcpy(words[j], temp);
}
}
}
}
```
该程序首先提示用户输入要排序的单词数量,然后提示用户逐个输入这些单词。程序使用 `scanf()` 函数读取每个单词,并将它们存储在一个二维字符数组 `words` 中。接下来,程序调用名为 `sortWords()` 的函数,该函数使用嵌套的循环比较每对单词,并按字母顺序排序它们。最后,程序打印出排好序的单词列表。
请注意,该程序使用了 C 语言库函数 `strcmp()` 来比较两个字符串的大小关系,并使用 `strcpy()` 函数来交换两个字符串。
阅读全文