[英]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.