练习3-1&&3-2
2016-10-28 本文已影响0人
Hy_Slin
3-1这个练习感觉没什么意义,当时我也想到过,思路就是判断是x的值与v[]数组中间元素那个值是大了还是小了如果相等则结束循环,然后在循环外将结果返回。
全当扩展思路了。
3-2第一个目的挺好实现的,循环递增数组i(for (i - j = 0; t[i] != '\0'; i++))然后判断当前的元素(switch(t[i])) 如果是换行符(case ‘\n’) 则将\n这个换行符拆分放入数组j中(s[j++] = '\' s[j++] = 'n')“\”是因为\是转义字符会把后面的'转换成普通字符,要想单纯的表示“\”就需要将这个单斜杠转义所以就要“\”,后面的“\t”同理。
之后就是将当前数组i中的元素复制到数组j中(s[j++] = t[i])。最后给数组j加上一个'\0'用以表示数组结束。
这个有个概念是用单个字符要用‘’单引号,用“”双引号就是字符串不等价于单个字符。
至于第二个目的了解了第一个目的之后也是挺好实现的,但是当时我对于字符和字符串是发懵的,以至于我知道应该怎么去实现,但是实际操作却操作不出来。
依然是将数组循环递增,然后判断数组的当前元素是否为‘\’如果不是则讲当前字符复制到数组s中,如果是则判断下一个字符是否是‘n’或者‘t’,如果是则将其对应的转义字符加入到数组s中。最后的defalut部分湿处理跟在反斜杠或的其他字符,因为题目并没有要求将其他字符转义,所以将其完整输出,就是两个反斜杠加一个当前字符就好了。
另一个解法的思路是一样的。但是实现方式不一样。同样是递增数组i,然后判断当前字符,如果是反斜杠则继续向下判断,是否为‘n’或者‘t’,如果是则执行相应的操作,如果不是,将其完整输出。