变式 1:名单倒过来排(z 到 a)
还是母题的程序(已经修好),这次要从 z 排到 a。例如输入: 3 lucy amy tom 输出: tom lucy amy
变式 2:按名字长短排队
迎新晚会报幕,主持人想按名字从短到长念,一样长的按输入顺序。例如输入: 4 alexander bo lucy tim 输出: bo tim lucy alexander
变式 3:只找字典序最小的那个
点名册上谁排第一?不用整份排序,扫一遍就够了。这次用一个二级指针 char **q 在指针数组 p 上走: q 指向 p 的某一格,*q 就是那一格里的字符串。输出字典序最小的名字和它是第几个输入的。例如输入: 3 lucy amy tom
变式 4:用二级指针写交换函数
把母题里的三句交换抽成函数 swap_str。可现在排完顺序没变:swap_str 换的只是自己的两个形参。 回想第 2 关的 swap(int *a, int *b):想改调用者的 int,就传 int 的地址;现在想改调用者的 char
二级 · 程序填空:二级指针带回最大值的地址
get_max 通过第三个参数把最大元素的地址带回给 main 里的 p(一样大取前面的),程序输出 91 3。请在【】处填入正确的内容。 #include <stdio.h> void get_max(int a[], in
二级 · 程序改错:菜单里名字最长的菜
函数 longest 返回指针数组 s 中最长的字符串(一样长取先出现的)。例如输入: 3 fan mian jiaozi 输出: jiaozi 程序中有两处错误。请改正 found 下面一行中的错误,不要改动其他地方,也不要增删行。
二级 · 选择:char *p[3] 和 char (*p)[3]
读程序,回答问题: #include <stdio.h> int main(void) { char *p[3] = {"ab", "cd", "ef"};
二级 · 程序设计:把名单倒过来(只换指针)
函数 fun 的功能:把指针数组 p 中的 n 个指针倒过来(只交换指针,不搬字符串)。例如输入: 3 lucy amy tom 输出: tom amy lucy main 已经写好,不要改动,只在 fun 的花括号里写代码。
作品:宿舍值日表生成器
宿舍 n 个人(不超过 6)轮流值日,这周从第 start 个人开始(从 1 数)。星期和名字都放在指针数组里。输入 n、start 和 n 个名字,例如: 4 3 老王 小李 阿杰 大刘 输出: 周一 阿杰 周二 大刘 周三 老王 周四
向系统借一块内存:malloc 与 free
malloc 向系统借一块,free 还回去 堆 ▲ p p = malloc(…):借到 3 格,p 记着开头 free(p) 之后:块已归还,p 还记着旧地址(悬空) 数组的大小要在写程序时定死。如果要等运行时才知道要多少,就向系统借: