用c语言单词按字母排序
时间: 2024-03-13 12:17:08 浏览: 159
以下是一个简单的C语言程序,可以对输入的单词按字母顺序进行排序:
```c
#include <stdio.h>
#include <string.h>
int main() {
char word[100];
int i, j, n;
printf("Enter a word: ");
scanf("%s", word);
n = strlen(word);
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (word[i] > word[j]) {
char tmp = word[i];
word[i] = word[j];
word[j] = tmp;
}
}
}
printf("Sorted word: %s\n", word);
return 0;
}
```
该程序首先从用户输入中获取一个单词,然后使用嵌套的循环对该单词进行排序。在外部循环中,我们遍历单词中的每个字符(除了最后一个字符),而在内部循环中,我们比较当前字符与后面的所有字符,并在需要时交换它们的位置。最后,程序输出已排序的单词。
相关问题
C语言单词首字母排序
在C语言中,如果你需要对字符串数组按照单词的首字母进行排序,通常我们会先将整个字符串分割成单个单词,然后比较每个单词的首字母。这涉及到字符串处理函数如`strtok()`用于分割,以及字符数组比较。以下是一个简单的步骤:
1. 定义一个辅助函数,比如`strcmp_words()`, 使用`strcasecmp()`进行大小写不敏感的比较,因为`strtok()`默认会忽略大小写。
```c
int strcmp_words(const char *word1, const char *word2) {
return strcasecmp(word1, word2);
}
```
2. 创建一个结构体,包含指向字符串的指针和一个表示是否已排序的标志,用于链式存储和排序。
```c
typedef struct {
char *word;
int is_sorted;
} Word;
Word words[arraysize];
```
3. 使用`strtok()`逐个读取单词并添加到结构体数组中。
```c
char *current_word = "your_string_to_sort"; // 或从用户输入获取
while (current_word != NULL) {
words[index].word = current_word;
words[index].is_sorted = 0; // 初始设置为未排序
index++;
current_word = strtok(NULL, " ");
}
```
4. 对数组进行冒泡排序,如果两个相邻的单词首字母不同,则交换它们的位置,直到数组完全有序。
```c
for (int i = 0; i < arraysize - 1; i++) {
for (int j = 0; j < arraysize - 1 - i; j++) {
if (!words[j].is_sorted && !words[j + 1].is_sorted && strcmp_words(words[j].word, words[j + 1].word) > 0) {
swap(&words[j], &words[j + 1]);
words[j].is_sorted = words[j + 1].is_sorted = 1;
}
}
}
```
5. 最终,你可以遍历排序后的数组打印出单词。
c语言按字母顺序对单词排序
可以使用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函数进行排序,最后输出排序后的结果。
阅读全文