最近遇到了個離線考試, 沒辦法上網查資料, 但是作為一個高度依賴網路字典庫記憶各種庫函式的衰仔, 非常頭痛,
故而結束考試後, 嘗試編寫一個無需任何庫函式就可以實現32位的 int有符號型別 十進位制資料 反轉輸出. 如輸入123456 輸出 654321; 負數保留負號.
存此筆記, 以作個人警示.
示例程式碼中 #include <stdio.h> 單純是為了列印和 相容scanf輸入 故而實現該功能並不需要這個東西,.
#include <stdio.h> char run(int *numb) { char i; char wei[10] = {0}; wei[0] = *numb % 10; wei[1] = *numb / 10 % 10; wei[2] = *numb / 100 % 10; wei[3] = *numb / 1000 % 10; wei[4] = *numb / 10000 % 10; wei[5] = *numb / 100000 % 10; wei[6] = *numb / 1000000 % 10; wei[7] = *numb / 10000000 % 10; wei[8] = *numb / 100000000 % 10; wei[9] = *numb / 1000000000 % 10; for (i = 9; i >= 0; i--) if (wei[i] != 0) break; *numb = 0; if (i >= 0) { *numb += wei[i]; i--; } else goto end; if (i >= 0) { *numb += wei[i] * 10; i--; } else goto end; if (i >= 0) { *numb += wei[i] * 100; i--; } else goto end; if (i >= 0) { *numb += wei[i] * 1000; i--; } else goto end; if (i >= 0) { *numb += wei[i] * 10000; i--; } else goto end; if (i >= 0) { *numb += wei[i] * 100000; i--; } else goto end; if (i >= 0) { *numb += wei[i] * 1000000; i--; } else goto end; if (i >= 0) { *numb += wei[i] * 10000000; i--; } else goto end; if (i >= 0) { *numb += wei[i] * 100000000; i--; } else goto end; if (i >= 0) { *numb += wei[i] * 1000000000; i--; } else goto end; end: if (*numb > 2147483647 || *numb < -2147483648) *numb = 0; } int main() { int numb[1] = {123456089}; // scanf("%d", &numb[0]); run(numb); printf("%d\n", numb[0]); return 0; }