C程序设计语言(第二版)练习题
C程序设计语言(第二版)练习题
Navigator_Z
烈焰,在冰冷的海水中跳跃; 闪电,在自己的影子中熄灭。
展开
-
C //练习 8-8 编写函数bfree(p, n),释放一个包含n个字符的任意块p,并将它放入由malloc和free维护的空闲块链表中。通过使用bfree,用户可以在任意时刻向空闲块链表中添加
【代码】C //练习 8-8 编写函数bfree(p, n),释放一个包含n个字符的任意块p,并将它放入由malloc和free维护的空闲块链表中。通过使用bfree,用户可以在任意时刻向空闲块链表中添加。原创 2024-01-18 07:53:12 · 391 阅读 · 0 评论 -
C //练习 8-7 malloc接收对存储空间的请求时,并不检查请求长度的合理性;而free则认为被释放的块包含一个有效的长度字段。改进这些函数,使它们具有错误检查的功能。
【代码】C //练习 8-7 malloc接收对存储空间的请求时,并不检查请求长度的合理性;而free则认为被释放的块包含一个有效的长度字段。改进这些函数,使它们具有错误检查的功能。原创 2024-01-18 07:52:56 · 358 阅读 · 0 评论 -
C //练习 8-6 标准库函数calloc(n, size)返回一个指针,它指向n个长度为size的对象,且所有分配的存储空间都被初始化为0。通过调用或修改malloc函数来实现calloc函数。
【代码】C //练习 8-6 标准库函数calloc(n, size)返回一个指针,它指向n个长度为size的对象,且所有分配的存储空间都被初始化为0。通过调用或修改malloc函数来实现calloc函数。原创 2024-01-18 07:52:41 · 368 阅读 · 0 评论 -
C //练习 8-5 修改fsize程序,打印i结点项中包含的其他信息。
【代码】C //练习 8-5 修改fsize程序,打印i结点项中包含的其他信息。原创 2024-01-18 07:52:21 · 350 阅读 · 0 评论 -
C //练习 8-4 标准库函数int fseek(FILE *fp, long offset, int origin)类似于函数lseek,所不同的是,该函数中的fp是一个文件指针而不是文件描述符,
【代码】C //练习 8-4 标准库函数int fseek(FILE *fp, long offset, int origin)类似于函数lseek,所不同的是,该函数中的fp是一个文件指针而不是文件描述符,原创 2024-01-17 14:28:19 · 488 阅读 · 0 评论 -
C //练习 8-3 设计并编写函数_flushbuf、fflush和fclose。
【代码】C //练习 8-3 设计并编写函数_flushbuf、fflush和fclose。原创 2024-01-17 14:21:44 · 471 阅读 · 0 评论 -
C //练习 8-2 用字段代替显式的按位操作,重写fopen和_fillbuf函数。比较相应代码的长度和执行速度。
【代码】C //练习 8-2 用字段代替显式的按位操作,重写fopen和_fillbuf函数。比较相应代码的长度和执行速度。原创 2024-01-17 12:43:24 · 505 阅读 · 0 评论 -
C //练习 8-1 用read、write、open和close系统调用代替标准库中功能等价的函数,重写第7章的cat程序,并通过实验比较两个版本的相对执行速度。
【代码】C //练习 8-1 用read、write、open和close系统调用代替标准库中功能等价的函数,重写第7章的cat程序,并通过实验比较两个版本的相对执行速度。原创 2024-01-17 12:36:28 · 349 阅读 · 0 评论 -
C //练习 7-9 类似于isupper这样的函数可以通过某种方式实现以达到节省空间或时间的目的。考虑节省空间或时间的实现方式。
【代码】C //练习 7-9 类似于isupper这样的函数可以通过某种方式实现以达到节省空间或时间的目的。考虑节省空间或时间的实现方式。原创 2024-01-17 12:27:46 · 376 阅读 · 0 评论 -
C //练习 7-8 编写一个程序,以打印一个文件集合,每个文件从新的一页开始打印,并且打印每个文件相应的标题和页数。
【代码】C //练习 7-8 编写一个程序,以打印一个文件集合,每个文件从新的一页开始打印,并且打印每个文件相应的标题和页数。原创 2024-01-17 12:22:47 · 390 阅读 · 0 评论 -
C //练习 7-7 修改第5章的模式查找程序,使它从一个命名文件的集合中读取输入(有文件名参数时),如果没有文件名参数,则从标准输入中读取输入。当发现一个匹配行时,是否应该将相应的文件名打印出来?
【代码】C //练习 7-7 修改第5章的模式查找程序,使它从一个命名文件的集合中读取输入(有文件名参数时),如果没有文件名参数,则从标准输入中读取输入。当发现一个匹配行时,是否应该将相应的文件名打印出来?原创 2024-01-17 12:19:27 · 355 阅读 · 0 评论 -
C //练习 7-6 编写一个程序,比较两个文件并打印它们第一个不相同的行。
【代码】C //练习 7-6 编写一个程序,比较两个文件并打印它们第一个不相同的行。原创 2024-01-17 12:15:41 · 399 阅读 · 0 评论 -
C //练习 7-5 改写第4章中的后缀计算器程序,用scanf函数和(或)sscanf函数实现输入以及数的转换。
【代码】C //练习 7-5 改写第4章中的后缀计算器程序,用scanf函数和(或)sscanf函数实现输入以及数的转换。原创 2024-01-17 11:49:09 · 385 阅读 · 0 评论 -
C //练习 7-4 类似于上一节中的函数minprintf,编写scanf的函数的一个简化版本。
【代码】C //练习 7-4 类似于上一节中的函数minprintf,编写scanf的函数的一个简化版本。原创 2024-01-17 11:45:20 · 357 阅读 · 0 评论 -
C //练习 7-3 改写minprintf函数,使它能完成printf函数的更多功能。
【代码】C //练习 7-3 改写minprintf函数,使它能完成printf函数的更多功能。原创 2024-01-17 11:39:41 · 395 阅读 · 0 评论 -
C //练习 7-2 编写一个程序,以合理的方式打印任何输入。该程序至少能够根据用户的习惯以八进制或十六进制打印非图形字符,并截断长文本行。
【代码】C //练习 7-2 编写一个程序,以合理的方式打印任何输入。该程序至少能够根据用户的习惯以八进制或十六进制打印非图形字符,并截断长文本行。原创 2024-01-17 11:34:41 · 321 阅读 · 0 评论 -
C //练习 7-1 编写一个程序,根据它自身被调用时存放在argv[0]中的名字,实现将大写字母转换为小写字母或将小写字母转换为大写字母的功能。
【代码】C //练习 7-1 编写一个程序,根据它自身被调用时存放在argv[0]中的名字,实现将大写字母转换为小写字母或将小写字母转换为大写字母的功能。原创 2024-01-17 11:26:29 · 363 阅读 · 0 评论 -
C //练习 6-6 以本节介绍的函数为基础,编写一个适合C语言程序使用的#define处理器的简单版本(即无参数的情况)。你会发现getch和ungetch函数非常有用。
练习 6-6 以本节介绍的函数为基础,编写一个适合C语言程序使用的#define处理器的简单版本(即无参数的情况)。你会发现getch和ungetch函数非常有用。原创 2024-01-17 11:13:17 · 338 阅读 · 0 评论 -
C //练习 6-5 编写函数undef,它将从由lookup和install维护的表中删除一个变量及其定义。
练习 6-5 编写函数undef,它将从由lookup和install维护的表中删除一个变量及其定义。原创 2024-01-17 11:00:04 · 406 阅读 · 0 评论 -
C //练习 6-4 编写一个程序,根据单词的出现频率按降序打印输入的各个不同单词,并在每个单词的前面标上它的出现次数。
【代码】C //练习 6-4 编写一个程序,根据单词的出现频率按降序打印输入的各个不同单词,并在每个单词的前面标上它的出现次数。原创 2024-01-17 10:51:11 · 388 阅读 · 0 评论 -
C //练习 6-3 编写一个交叉引用程序,打印文档中所有单词的列表,并且每个单词还有一个列表,记录出现过该单词的行号。对the、and等非实义单词不予考虑。
【代码】C //练习 6-3 编写一个交叉引用程序,打印文档中所有单词的列表,并且每个单词还有一个列表,记录出现过该单词的行号。对the、and等非实义单词不予考虑。原创 2024-01-17 10:39:50 · 477 阅读 · 0 评论 -
C //练习 6-2 编写一个程序,用以读入一个C语言程序,并按字母表顺序分组打印变量名,要求每一组内各变量名的前6个字符相同,其余字符不同。字符串和注释中的单词不予考虑。请将6作为一个可在命令行
【代码】C //练习 6-2 编写一个程序,用以读入一个C语言程序,并按字母表顺序分组打印变量名,要求每一组内各变量名的前6个字符相同,其余字符不同。字符串和注释中的单词不予考虑。请将6作为一个可在命令行。原创 2024-01-17 10:25:17 · 531 阅读 · 0 评论 -
C //练习 6-1 上述getword函数不能正确处理下划线、字符串常量、注释及预处理控制指令。请编写一个更完善的getword函数。
【代码】C //练习 6-1 上述getword函数不能正确处理下划线、字符串常量、注释及预处理控制指令。请编写一个更完善的getword函数。原创 2024-01-17 09:39:39 · 797 阅读 · 1 评论 -
C //练习 5-20 扩展dcl程序的功能,使它能够处理包含其他成分的声明,例如带有函数参数类型的声明、带有类似于const限定符的声明等。
【代码】C //练习 5-20 扩展dcl程序的功能,使它能够处理包含其他成分的声明,例如带有函数参数类型的声明、带有类似于const限定符的声明等。原创 2024-01-14 11:57:28 · 458 阅读 · 0 评论 -
C //练习 5-19 修改undcl程序,使它在把文字描述转换为声明的过程中不会生成多余的圆括号。
【代码】C //练习 5-19 修改undcl程序,使它在把文字描述转换为声明的过程中不会生成多余的圆括号。原创 2024-01-14 11:54:16 · 397 阅读 · 0 评论 -
C //练习 5-18 修改dcl程序,使它能够处理输入中的错误。
【代码】C //练习 5-18 修改dcl程序,使它能够处理输入中的错误。原创 2024-01-14 11:50:43 · 413 阅读 · 0 评论 -
C //练习 5-17 增加字段处理功能,以使得排序程序可以根据行内的不同字段进行排序,每个字段按照一个单独的选项集合进行排序。(在对本书索引进行排序时,索引条目使用了-df选项,而对页码排序时
【代码】C //练习 5-17 增加字段处理功能,以使得排序程序可以根据行内的不同字段进行排序,每个字段按照一个单独的选项集合进行排序。(在对本书索引进行排序时,索引条目使用了-df选项,而对页码排序时。原创 2024-01-14 11:44:35 · 359 阅读 · 0 评论 -
C //练习 5-16 增加选项-d(代表目录顺序)。该选项表明,只对字母、数字和空格进行比较。要保证该选项可以和-f组合在一起使用。
【代码】C //练习 5-16 增加选项-d(代表目录顺序)。该选项表明,只对字母、数字和空格进行比较。要保证该选项可以和-f组合在一起使用。原创 2024-01-14 11:39:36 · 1003 阅读 · 0 评论 -
C //练习 5-15 增加选项-f,使得排序过程不考虑字母大小写之间的区别。例如,比较a和A时认为它们相等。
【代码】C //练习 5-15 增加选项-f,使得排序过程不考虑字母大小写之间的区别。例如,比较a和A时认为它们相等。原创 2024-01-12 15:46:17 · 676 阅读 · 1 评论 -
C //练习 5-14 修改排序程序,使它能处理-r标记。该标记表明,以逆序(递减)方式排序。要保证-r和-n能够组合在一起使用。
【代码】C //练习 5-14 修改排序程序,使它能处理-r标记。该标记表明,以逆序(递减)方式排序。要保证-r和-n能够组合在一起使用。原创 2024-01-12 14:57:20 · 607 阅读 · 0 评论 -
C //练习 5-13 编写程序tail,将其输入中的最后n 行打印出来。默认情况下,n 的值为10,但可通过一个可选参数改变n的值,因此,命令tail -n将打印其输入的最后n 行。无论输入
C程序设计语言 (第二版) 练习 5-13原创 2024-01-11 15:37:22 · 365 阅读 · 0 评论 -
C //练习 5-12 对程序entab和detab(第1章练习中编写的函数),使它们接收一组作为参数的制表符停止位。如果启动程序时不带参数,则使用默认的制表符停止位设置。
【代码】C //练习 5-12 对程序entab和detab(第1章练习中编写的函数),使它们接收一组作为参数的制表符停止位。如果启动程序时不带参数,则使用默认的制表符停止位设置。原创 2024-01-11 15:19:58 · 351 阅读 · 0 评论 -
C //练习 5-11 修改程序entab和decab(第1章练习中编写的函数),使它们接受一组作为参数的制表符停止位。如果启动程序时不带参数,则使用默认的制表符停止位设置。
【代码】C //练习 5-11 修改程序entab和decab(第1章练习中编写的函数),使它们接受一组作为参数的制表符停止位。如果启动程序时不带参数,则使用默认的制表符停止位设置。原创 2024-01-11 15:06:12 · 397 阅读 · 0 评论 -
C //练习 5-10 编写程序expr,以计算从命令行输入的逆波兰表达式的值,其中每个运算符或操作数用一个单独的参数表示。例如,命令expr 2 3 4 + *将计算表达式2*(3+4)的值。
【代码】C //练习 5-10 编写程序expr,以计算从命令行输入的逆波兰表达式的值,其中每个运算符或操作数用一个单独的参数表示。例如,命令expr 2 3 4 + *将计算表达式2*(3+4)的值。原创 2024-01-11 14:47:54 · 362 阅读 · 0 评论 -
C //练习 5-9 用指针方式代替数组下标方式改写函数day_of_year和month_day。
【代码】C //练习 5-9 用指针方式代替数组下标方式改写函数day_of_year和month_day。原创 2024-01-11 10:11:43 · 566 阅读 · 0 评论 -
C //练习 5-8 函数day_of_year和month_day中没有进行错误检查,请解决该问题。
【代码】C //练习 5-8 函数day_of_year和month_day中没有进行错误检查,请解决该问题。原创 2024-01-11 09:44:42 · 414 阅读 · 0 评论 -
C //练习 5-7 重写readlines,将输入的文本行存储到由main函数提供的一个数组中,而不是存储到调用alloc分配的存储空间中。该函数的运行速度比改写前快多少?
【代码】C //练习 5-7 重写readlines,将输入的文本行存储到由main函数提供的一个数组中,而不是存储到调用alloc分配的存储空间中。该函数的运行速度比改写前快多少?原创 2024-01-11 09:21:42 · 434 阅读 · 0 评论 -
C //练习 5-6 采用指针而非数组索引方式改写前面章节和练习中的某些程序,例如getline(第1、4章),atoi、itoa以及它们的变体形式(第2、3、4章),reverse(第3章)
【代码】C //练习 5-6 采用指针而非数组索引方式改写前面章节和练习中的某些程序,例如getline(第1、4章),atoi、itoa以及它们的变体形式(第2、3、4章),reverse(第3章)原创 2024-01-11 08:27:50 · 462 阅读 · 0 评论 -
C //练习 5-5 实现库函数strncpy、strncat和strncmp,它们最多对参数字符串中的前n个字符进行操作。例如,函数strncpy(s, t, n)将t中最多前n个字符复制到s中。
【代码】C //练习 5-5 实现库函数strncpy、strncat和strncmp,它们最多对参数字符串中的前n个字符进行操作。例如,函数strncpy(s, t, n)将t中最多前n个字符复制到s中。原创 2024-01-10 22:31:34 · 325 阅读 · 0 评论 -
C //练习 5-4 编写函数strend(s, t)。如果字符串t出现在字符串s的尾部,该函数返回1;否则返回0。
【代码】C //练习 5-4 编写函数strend(s, t)。如果字符串t出现在字符串s的尾部,该函数返回1;否则返回0。原创 2024-01-10 22:13:49 · 616 阅读 · 0 评论