c语言中123 234 345 456,如何在C中将数字从1123456789格式化为1,123,456,789?
寶慕林4294392
您可以按以下方式遞歸執行此操作(請注意,INT_MIN如果使用二進制補碼,則需要額外的代碼來管理它):void printfcomma2 (int n) {? ? if (n < 1000) {? ? ? ? printf ("%d", n);? ? ? ? return;? ? }? ? printfcomma2 (n/1000);? ? printf (",%03d", n%1000);}void printfcomma (int n) {? ? if (n < 0) {? ? ? ? printf ("-");? ? ? ? n = -n;? ? }? ? printfcomma2 (n);}總結:用戶printfcomma使用整數調用,負數的特殊情況是通過簡單地打印“-”并使數字為正數來處理(這是不能使用的位INT_MIN)。輸入時printfcomma2,小于1,000的數字將被打印并返回。否則,遞歸將在下一級上調用(因此將調用1,234,567,先以1,234,然后是1),直到找到小于1,000的數字。然后將打印該數字,我們將返回遞歸樹,在打印過程中打印逗號和下一個數字。還有一個更簡潔的版本,盡管它在檢查每個級別的負數時進行了不必要的處理(這并不重要,因為遞歸級別的數量有限)。這是一個完整的測試程序:#include void printfcomma (int n) {? ? if (n < 0) {? ? ? ? printf ("-");? ? ? ? printfcomma (-n);? ? ? ? return;? ? }? ? if (n < 1000) {? ? ? ? printf ("%d", n);? ? ? ? return;? ? }? ? printfcomma (n/1000);? ? printf (",%03d", n%1000);}int main (void) {? ? int x[] = {-1234567890, -123456, -12345, -1000, -999, -1,? ? ? ? ? ? ? ?0, 1, 999, 1000, 12345, 123456, 1234567890};? ? int *px = x;? ? while (px != &(x[sizeof(x)/sizeof(*x)])) {? ? ? ? printf ("%-15d: ", *px);? ? ? ? printfcomma (*px);? ? ? ? printf ("\n");? ? ? ? px++;? ? }? ? return 0;}輸出為:-1234567890? ? : -1,234,567,890-123456? ? ? ? : -123,456-12345? ? ? ? ?: -12,345-1000? ? ? ? ? : -1,000-999? ? ? ? ? ?: -999-1? ? ? ? ? ? ?: -10? ? ? ? ? ? ? : 01? ? ? ? ? ? ? : 1999? ? ? ? ? ? : 9991000? ? ? ? ? ?: 1,00012345? ? ? ? ? : 12,345123456? ? ? ? ?: 123,4561234567890? ? ?: 1,234,567,890一個不信任遞歸的迭代解決方案(盡管遞歸的唯一問題往往是堆棧空間,這在這里不會成為問題,因為即使對于64位整數也只有幾層深度):void printfcomma (int n) {? ? int n2 = 0;? ? int scale = 1;? ? if (n < 0) {? ? ? ? printf ("-");? ? ? ? n = -n;? ? }? ? while (n >= 1000) {? ? ? ? n2 = n2 + scale * (n % 1000);? ? ? ? n /= 1000;? ? ? ? scale *= 1000;? ? }? ? printf ("%d", n);? ? while (scale != 1) {? ? ? ? scale /= 1000;? ? ? ? n = n2 / scale;? ? ? ? n2 = n2? % scale;? ? ? ? printf (",%03d", n);? ? }}這兩個產生2,147,483,647的INT_MAX。
總結
以上是生活随笔為你收集整理的c语言中123 234 345 456,如何在C中将数字从1123456789格式化为1,123,456,789?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos7安装php5.2yum源操
- 下一篇: [Leetcode456]132模式 -