3-3
依然是先循环递增检查s1数组并将当前元素的值复制到变量c中之后i自增
(while((c = s1[i++])))
如果当前元素(i自增之后)是‘-’符号并且下一元素大于c。
if(s1[i] == ‘-’ && s[i + 1] >= c)
满足上面的条件则将i自增一次,将i自增后对应的元素就是‘-’符号后的那个字符。然后将最初的那个字符c递增复制到小于当前的那个元素为止。
之后如果之前的if表达式为假,则直接将c复制到数组s2里。
这个有一个问题我也想了一下,递增到小于当前的元素(c < s1[i])的话这时候那个元素是不会复制到数组s2里去的,执行完内层的while循环后跳出到最外层的while循环,s[i++]现在因为是后缀运算符,所以当前的元素就是那个需要扩充的最后一个元素。可以直接复制到数组s2中去。
3-4
这个问题涉及到其他的一些问题,只能留待以后去印证了,代码过一遍就可,先将n从最右侧的位赋到数组s中(s[i++] = (n % 10)对10进行取余得到的就是个位的数)然后将n最后一位删除(n /= 10这里等价于n = n / 10 将n除以10就是减少一位,因为是整型数所以忽略小数位,)
3-5
先判断n是否为正数并且保存n的值(if (sign = n) < 0) 如果为负则取其绝对值(n = -n)
然后跟上面的一样继续取最后一位的数赋值给j然后将j转换成相应的进制数。
然后也是删除最后一位,之后再次执行上面的过程。最后如果sign是负数,那就给数组s加入'-'。之后就是颠倒数组s的顺序。
3-6
这个题目也没什么难度,与上面的itoa函数基本上一样,只要在判断是否要加‘-’的后面判断转换后数组的长度就可以,如果不够就在数组中添加空格
while (i < w)
s[i++] = ' '
i是数组长度。