C++程序设计:从C语言到C++的发展历程

需积分: 50 0 下载量 108 浏览量 更新于2024-07-10 收藏 8.66MB PPT 举报
"输入三个字符串按大小输出。-C语言程序设计" 在C语言中,对字符串进行排序通常是基于字符的ASCII码值。ASCII码是一个7位的二进制编码,用于表示各种字符,包括字母、数字和其他符号。在ASCII码表中,小写字母的值大于大写字母,大写字母的值大于数字。因此,我们可以使用比较函数来比较字符串,然后使用冒泡排序或选择排序等基本排序算法来对它们进行排序。 以下是一个简单的C语言程序,演示如何接收三个字符串输入并按照字典顺序(即ASCII码值)输出: ```c #include <stdio.h> #include <string.h> // 比较函数,用于排序 int compare(const void *str1, const void *str2) { return strcmp((char *)str1, (char *)str2); } int main() { char str1[100], str2[100], str3[100]; // 输入三个字符串 printf("请输入第一个字符串:"); scanf("%s", str1); printf("请输入第二个字符串:"); scanf("%s", str2); printf("请输入第三个字符串:"); scanf("%s", str3); // 使用qsort函数进行排序 qsort(str1, strlen(str1), sizeof(char), compare); qsort(str2, strlen(str2), sizeof(char), compare); qsort(str3, strlen(str3), sizeof(char), compare); // 输出排序后的字符串 printf("排序后的字符串为:\n"); printf("%s\n%s\n%s\n", str1, str2, str3); return 0; } ``` 在这个程序中,我们首先定义了三个字符数组`str1`, `str2`, `str3`来存储输入的字符串。接着,通过`scanf`函数获取用户输入的三个字符串。为了排序,我们定义了一个名为`compare`的比较函数,该函数使用`strcmp`库函数来比较两个字符串。最后,我们使用`qsort`函数对每个字符串进行排序。注意,`qsort`函数适用于已知元素数量的数组,所以我们分别对每个字符串进行排序。 然而,这里的排序可能会有误,因为`qsort`期望对整个数组进行排序,而不是单个字符串。在上述代码中,我们实际上是对每个字符串的每个字符进行了单独的排序,这不是我们想要的结果。要对整个字符串数组进行排序,我们需要一个二维字符数组或一个字符串指针数组。这里是一个更正的版本: ```c #include <stdio.h> #include <string.h> #include <stdlib.h> int main() { char *strings[] = {"", "", ""}; // 字符串指针数组 int sizes[] = {0, 0, 0}; // 存储字符串长度 // 输入三个字符串 for (int i = 0; i < 3; i++) { printf("请输入第 %d 个字符串:", i + 1); fgets(strings[i], 100, stdin); sizes[i] = strlen(strings[i]) - 1; // 减1以去除末尾的换行符 } // 使用自定义比较函数 int compare(const void *str1, const void *str2) { return strcmp(*(char**)str1, *(char**)str2); } // 排序字符串指针数组 qsort(strings, 3, sizeof(char*), compare); // 输出排序后的字符串 printf("排序后的字符串为:\n"); for (int i = 0; i < 3; i++) { printf("%s\n", strings[i]); } return 0; } ``` 在这个修正的版本中,我们使用了字符串指针数组`strings`,并使用`fgets`读取带有换行符的完整输入。然后,我们使用`qsort`对整个数组进行排序。比较函数`compare`现在接受指向字符串的指针,这样`qsort`就能正确地处理字符串数组了。 总结起来,C语言中的字符串排序涉及字符编码、比较函数以及基本排序算法的应用。通过理解ASCII码和C语言的内存管理,我们可以实现字符串的正确排序。在实际编程中,需要注意字符串的边界条件、内存管理和输入验证,确保程序的稳定性和安全性。