已知顺序表 A 和 B 中各存放一个英语单词,字母均为小写。请设计 一个判别哪一个单词在字典中排在前面的算法。 基于c语言上
时间: 2024-09-27 16:04:11 浏览: 74
为了设计一个简单的C语言算法来判断两个字符串(代表单词)在字典中的相对顺序,我们可以比较它们的长度和每个字符的ASCII码值。如果长度相等,则从第一个字符开始逐个对比,直到找到第一个不同的字符;若长度不同,较短的字符串在字典排列在前。
以下是一个基本的C语言函数实现这个功能:
```c
#include <stdio.h>
#include <string.h>
int compare_words(const char* wordA, const char* wordB) {
int lenA = strlen(wordA);
int lenB = strlen(wordB);
if (lenA == lenB) { // 如果长度相同
for (int i = 0; i < lenA; i++) {
if (wordA[i] != wordB[i]) {
return (wordA[i] < wordB[i]) ? -1 : 1; // 按ASCII值返回-1、0或1
}
}
return 0; // 长度相等且内容相同,返回0表示相等
} else {
return lenA < lenB ? -1 : 1; // 长度不同直接按长度排序
}
}
int main() {
char wordA[] = "apple";
char wordB[] = "banana";
int result = compare_words(wordA, wordB);
if (result > 0)
printf("%s is lexicographically after %s.\n", wordA, wordB);
else if (result < 0)
printf("%s is lexicographically before %s.\n", wordA, wordB);
else
printf("%s and %s are the same in dictionary order.\n", wordA, wordB);
return 0;
}
```
阅读全文