美文网首页
练习3-3&&3-4&&3-5&&3-6

练习3-3&&3-4&&3-5&&3-6

作者: Hy_Slin | 来源:发表于2016-10-28 16:13 被阅读0次

    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是数组长度。

    相关文章

      网友评论

          本文标题:练习3-3&&3-4&&3-5&&3-6

          本文链接:https://www.haomeiwen.com/subject/kizsuttx.html