多文件 C 命令行工具
场景:记账的同事想要一个按类别汇总金额的命令行工具。这次没有任何现成代码:目录结构、构建方式、错误处理都由你决定。 任务:在 ~/work/tally/ 从零交付 tally:至少两个 .c、一个 .h 和 Makefile;./tally
修好成绩程序的两个 bug
场景:接手一个四文件的成绩程序:它时不时直接崩溃,崩溃修好后,报出来的最高分又偶尔不对。原作者已经联系不上了。 任务:修好 ~/work/big 里的两个问题,按各函数上方注释里的规则让输出正确,用 make 编译出 ~/work/big/
那个标准选项
用 g++ -std=c++17 -o app app.cpp 编译时,-std=c++17 的作用是【0】。
看不懂的符号名
nm 显示出 _Z5scalei 这样的名字,它叫【0】,用 nm -C 可以还原成人能读的样子。
单词计数与并列规则
用 std::map 统计一句话里每个单词出现的次数,输出 不同单词数/出现最多的单词/次数,次数并列时取字典序最小的。 (本题用 g++ -std=c++17 -O0 编译。)
第一个 C++ 词频程序
场景:判题机替你编译、替你喂输入。到了真机上,从新建源文件、调用 g++、到用重定向测试,每一步都得自己来。 任务:从空文件写 ~/work/words.cpp,用 g++ -std=c++17 编译成 ~/work/words:从标准输入
目标文件实现了哪个重载
场景:同事发来一个编译好的 lib.o 和一份列了六个重载的头文件,但没给源码。链接时总是缺一个函数,你得先弄清楚这个 .o 到底实现了哪一个。 任务:在 ~/work/lib 里找出 lib.o 真正「定义」了 lib.h 里的哪一个 s
找不到的成员函数
每个 .cpp 先各自编成 .o,再交给链接器 main.o 待找 lib.o 有定义 可执行文件 待找的符号在别处找到定义,才连得成 链接时报 undefined reference to Counter::add(int),说明【0】。
头文件里的函数
一个函数的完整定义写在头文件里、又被多个 .cpp 包含,要让链接通过又只保留一份,应该把它标成【0】。
类外定义成员函数
补全类外定义的 Counter::top():返回出现次数最多的数,并列取最小。输出 不同数个数/top。 (本题用 g++ -std=c++17 -O0 编译。)