第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在C中將數(shù)字從1123456789格式化為1,123,456,789?

如何在C中將數(shù)字從1123456789格式化為1,123,456,789?

如何用C語言將數(shù)字從格式化1123456789為1,123,456,789?我嘗試使用,printf("%'10d\n", 1123456789);但這不起作用。你能建議什么嗎?解決方案越簡單越好。
查看完整描述

3 回答

?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超7個贊

如果您的printf支持該'標(biāo)志(POSIX 2008要求printf()),則可以僅通過適當(dāng)?shù)卦O(shè)置區(qū)域設(shè)置來實(shí)現(xiàn)。例:


#include <stdio.h>

#include <locale.h>


int main(void)

{

    setlocale(LC_NUMERIC, "");

    printf("%'d\n", 1123456789);

    return 0;

}

并運(yùn)行:


$ ./example 

1,123,456,789

在Mac OS X和Linux(Ubuntu 10.10)上進(jìn)行了測試。


查看完整回答
反對 回復(fù) 2019-10-10
?
寶慕林4294392

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個贊

您可以按以下方式遞歸執(zhí)行此操作(請注意,INT_MIN如果使用二進(jìn)制補(bǔ)碼,則需要額外的代碼來管理它):


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);

}

總結(jié):


用戶printfcomma使用整數(shù)調(diào)用,負(fù)數(shù)的特殊情況是通過簡單地打印“-”并使數(shù)字為正數(shù)來處理(這是不能使用的位INT_MIN)。

輸入時printfcomma2,小于1,000的數(shù)字將被打印并返回。

否則,遞歸將在下一級上調(diào)用(因此將調(diào)用1,234,567,先以1,234,然后是1),直到找到小于1,000的數(shù)字。

然后將打印該數(shù)字,我們將返回遞歸樹,在打印過程中打印逗號和下一個數(shù)字。

還有一個更簡潔的版本,盡管它在檢查每個級別的負(fù)數(shù)時進(jìn)行了不必要的處理(這并不重要,因?yàn)檫f歸級別的數(shù)量有限)。這是一個完整的測試程序:


#include <stdio.h>


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             : -1

0              : 0

1              : 1

999            : 999

1000           : 1,000

12345          : 12,345

123456         : 123,456

1234567890     : 1,234,567,890

一個不信任遞歸的迭代解決方案(盡管遞歸的唯一問題往往是堆??臻g,這在這里不會成為問題,因?yàn)榧词箤τ?4位整數(shù)也只有幾層深度):


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);

    }

}

這兩個產(chǎn)生2,147,483,647的INT_MAX。


查看完整回答
反對 回復(fù) 2019-10-10
  • 3 回答
  • 0 關(guān)注
  • 1073 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號