練習3-3&&3-4&&3-5&&3-6

3-3
依然是先循環(huán)遞增檢查s1數(shù)組并將當前元素的值復(fù)制到變量c中之后i自增
(while((c = s1[i++])))
如果當前元素(i自增之后)是‘-’符號并且下一元素大于c。
if(s1[i] == ‘-’ && s[i + 1] >= c)
滿足上面的條件則將i自增一次,將i自增后對應(yīng)的元素就是‘-’符號后的那個字符。然后將最初的那個字符c遞增復(fù)制到小于當前的那個元素為止。
之后如果之前的if表達式為假,則直接將c復(fù)制到數(shù)組s2里。
這個有一個問題我也想了一下,遞增到小于當前的元素(c < s1[i])的話這時候那個元素是不會復(fù)制到數(shù)組s2里去的,執(zhí)行完內(nèi)層的while循環(huán)后跳出到最外層的while循環(huán),s[i++]現(xiàn)在因為是后綴運算符,所以當前的元素就是那個需要擴充的最后一個元素??梢灾苯訌?fù)制到數(shù)組s2中去。

3-4
這個問題涉及到其他的一些問題,只能留待以后去印證了,代碼過一遍就可,先將n從最右側(cè)的位賦到數(shù)組s中(s[i++] = (n % 10)對10進行取余得到的就是個位的數(shù))然后將n最后一位刪除(n /= 10這里等價于n = n / 10 將n除以10就是減少一位,因為是整型數(shù)所以忽略小數(shù)位,)

3-5
先判斷n是否為正數(shù)并且保存n的值(if (sign = n) < 0) 如果為負則取其絕對值(n = -n)
然后跟上面的一樣繼續(xù)取最后一位的數(shù)賦值給j然后將j轉(zhuǎn)換成相應(yīng)的進制數(shù)。
然后也是刪除最后一位,之后再次執(zhí)行上面的過程。最后如果sign是負數(shù),那就給數(shù)組s加入'-'。之后就是顛倒數(shù)組s的順序。

3-6
這個題目也沒什么難度,與上面的itoa函數(shù)基本上一樣,只要在判斷是否要加‘-’的后面判斷轉(zhuǎn)換后數(shù)組的長度就可以,如果不夠就在數(shù)組中添加空格
while (i < w)
s[i++] = ' '
i是數(shù)組長度。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容