簡體   English   中英

在C中打印10 - Printf的強大功能

[英]Print the power of 10 - Printf in C

我必須打印10到10的功率。 問題是當我想顯示第一個電源時,應該是1 (10^0) ,我只是不能強制printf不重復0的任何一個。 我被允許只在我的程序中使用一個printf和一個{ }塊(這是主要功能)。

#include <stdio.h>

int main(void) {
    int power = 19;
    for (int i = 0; i <= power; i++)
        printf("1%0*d\n",i, 0);
    return 0;
}

我的輸出:

10 // this should be 1, but printf still puts 0 here
10
100
1000
10000
100000
1000000
10000000
100000000
1000000000
10000000000
100000000000
1000000000000
10000000000000
100000000000000
1000000000000000
10000000000000000
100000000000000000
1000000000000000000
10000000000000000000

而不是使用%d ,使用具有可變精度的%s ,並從一串零打印。 如果精度為0,則不打印任何字符。

#include <stdio.h>

int main(void) {
    int power = 19;
    char zeros[] = "00000000000000000000";
    for (int i = 0; i <= power; i++)
        printf("1%.*s\n",i, zeros);
    return 0;
}

正如@Weather Vane評論的那樣 ,使用unsigned long long可以處理至少18,446,744,073,709,551,615或2 64 - 1的值。

int main(void) {
  unsigned long long power = 0;
  for (int i = 0; i <= 19; i++)
    printf("%d %llu\n", i, power = power ? power*10 : 1);
  return 0;
}

產量

0 1
1 10
2 100
...
17 100000000000000000
18 1000000000000000000
19 10000000000000000000

或者,如果不喜歡像"00000000000000000000"這樣的硬編碼初始化,請在同一循環中分配元素。

注意"%.*s"可以打印非空字符終止的char數組。

#define MAX10POWER 30

int main(void) {
  char zeros[MAX10POWER];
  for (int i = 0; i <= MAX10POWER; zeros[i++] = '0')
    printf("%d 1%.*s\n", i, i, zeros);
  return 0;
}

產量

0 1
1 10
2 100
...
28 10000000000000000000000000000
29 100000000000000000000000000000
30 1000000000000000000000000000000

或者風雨變異的Weather Vane很好的答案可以達到21。

int main(void) {
  for (unsigned long long power = 1, i = 0; i <= 21; i++, power *= 8)
    printf("%lld %llo\n", i, power);
}

您可以像這樣實現所需的結果:

#include <stdio.h>

int main(void) {
    unsigned long long power = 1;
    for (int i = 0; i <= 19; i++, power *= 10)
        printf("%llu\n", power);
    return 0;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM