介绍
在这个项目中,你将学习如何使用冒泡排序算法来组织编程课程列表。课程将按字典顺序排序,这样你就能轻松查看和总结你所学的编程语言。
👀 预览
$ gcc courses.c -o courses
$./courses
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP
🎯 任务
在这个项目中,你将学习:
- 如何正确计算数组的长度
- 如何修改排序函数的参数类型
- 如何纠正排序算法中的比较和交换逻辑
🏆 成果
完成这个项目后,你将能够:
- 使用冒泡排序算法组织编程课程列表
- 理解正确计算数组长度和函数参数类型的重要性
- 在排序算法中应用正确的比较和交换逻辑
- 展示你按照分步说明修改现有代码以实现预期结果的能力
修正数组长度计算
在这一步中,你将学习如何正确计算 courses 数组的长度。
打开位于
/home/labex/project/目录下的courses.c文件。找到以下代码行:
int n = strlen(courses);这一行使用
strlen函数来计算courses数组的长度,这是不正确的。strlen函数用于计算字符串的长度,而不是数组的长度。将上述代码行替换为以下内容:
int n = sizeof(courses) / sizeof(courses[0]);这一行使用
sizeof运算符来计算courses数组的总大小,然后将其除以单个元素的大小,以得到数组中的元素数量。
更改排序函数的参数类型
在这一步中,你将学习如何更改 sort 函数的参数类型。
在
courses.c文件中,找到sort函数定义:void sort(char p[], int n)将参数类型从
char p[]更改为char *p[]。更新后的函数定义应如下所示:void sort(char *p[], int n)进行此更改是因为我们处理的是字符串数组(指针数组),而不是单个字符串。
修正比较和交换逻辑
在这一步中,你将学习如何修正 sort 函数中的比较和交换逻辑。
在
sort函数中,找到以下代码:if (k!= j) { tmp = p[k]; p[k] = p[i]; p[i] = tmp; }将条件
if (k!= j)替换为if (k!= i)。更新后的代码应如下所示:if (k!= i) { tmp = p[k]; p[k] = p[i]; p[i] = tmp; }进行此更改是为了检查在当前迭代(由
i索引)中是否找到了最小元素。
完成这三个步骤后,你的 courses.c 文件就可以进行编译和执行了。现在你可以进入下一步。
在
sort函数中,按如下方式完成// TODO:部分:{ if (strcmp(p[j], p[k]) < 0) { k = j; } }执行以下命令:
gcc courses.c -o courses
./courses
- 验证程序是否产生预期输出。
ASP
ASP.NET
BASIC
C
C#
C++
COBOL
JAVA
PASCAL
PHP
总结
恭喜你!你已经完成了这个项目。你可以在 LabEx 中练习更多实验来提升你的技能。



