#### 问题描述 编写一个函数strrindex(s, t),用于返回字符串t在s中最右出现的位置,如果 s中不 包含t,那么返回-1。 ------ #### 问题分解 - 主函数main - 工具函数 get_line(s, max), 注意不能按照书上的getline,因为getline 已经在头文件stdio.h定义了 - 核心函数 strr...
#### 问题描述 编写函数itob(n, s, b) ,用于把整数n转换成以b为基数的字符串并存到字符串s中。例如, itob(n, s, 16) 表示将n转换成16进制数,并存入s中。 ------ #### 问题分解 - 主函数main - 工具函数reverse(s) ,用来逆置字符串 - 核心函数 itob(n, s, b)。这道题其实也...
#### 问题描述 在数的反码表示中,上述的 itoa 函数不能处理最大的负数,即 n 等于-2^(字长-1) 的情况。请解释其原因。修改该函数,使它在任何机器上运行时都能打印出正确的值。 ------ #### 问题分解 - 主函数main - 核心函数 itoa(n, s)。先来看原文的函数实现: - - ```C void itoa...
#### 问题描述 编写函数expand(s1, s2),将字符串s1中类似于a-z一类的速记符号在字符串s2中扩展为等价的完整列表abc...xyz。该函数可以处理大小写字母和数字,并可以处理a-b-c、a-z0-9与-a-z等类似的情况。作为前导和尾随的-字符原样打印。 ------ #### 问题分解 - 主函数main - - 核心函数 expa...
#### 问题描述 在求反码时,表达式 x &= (x - 1) 用于把x最右边的值为1的位删除掉。请解释一下这样做的道理。用这一方法重写bitcount函数 ,使之执行得更快一点。 ------ #### 问题分解 - 主函数main - 核心函数 bitcount(x)。我们先来看看书中例子 bitcount的算法实现: ```c ...
#### 问题描述 编写一个函数rightrot(x, n),该函数返回将x循环右移n位所得到的值。 这个问题的理解是: 将x进行右移n位,每次移动都将右侧的最后一位移到左侧第一位。 ------ #### 问题分解 - 主函数main - 核心函数 rightrot(x, n)。 这道题需要我们留心观察右移的规律,首先常规的右移很好表示,因此难点...
###问题描述 编写一个函数setbits(x, p ,n, y),该函数返回对x执行下列操作后的结果值: 将x中从第p位开始的n个(二进制)位设置为y中最右边n位的值,x的其余各位保持不变。 ###问题分解 1. 主函数main 2. 核心函数 setbits(x, p ,n, y), 此函数是算法核心,要做的事情就是通过一系列的位运算达到目的。大概分为以下几个步...
#### 问题描述 编写一个函数 invert(x, p, n),该函数返回对 x 执行下列操作后的结果值:将 x 中从第 p 位开始的 n 个(二进制)位求反(即,1 变成 0,0 变成 1),x 的其余各位保持不变。 ------ #### 问题分解 - 主函数main - 工具函数 setbits(x,p,n,y), 算法解析可以看上一篇文章 ...
###问题描述 编写函数squeeze(s1, s2), 把字符串s1中与字符串s2中字符匹配的所有字符都删除。 ###问题拆分 - 主函数 main - 接收用户输入字符串函数 get_line (注意不能按照书本上的getline,因为此函数已在stdio.h 中定义了) - 从s1中移除s2中包含的字符 函数 squeeze ###代码实现 ```c ...
###问题描述 编写函数htoi(s), 把由十六进制数字组成的字符串(包含可选的前缀0X和0x),转化为与之等价的整数值, 字符串中包含的字符可以是0 - 9,A - F,a - f。 ###问题拆分 - 主函数main - 接收用户输入字符串函数 get_line (注意不能按照书本上的getline,因为次函数已在stdio.h 中定义了) - 将十六进制字符串...