在C中打印10-Printf的幂

在C中打印10-Printf的幂,c,printing,printf,C,Printing,Printf,我必须打印10的幂,从0到19。问题是,当我想显示第一次幂时,它应该是1(10^0),我无法强制printf不重复0。我只允许在我的程序中使用一个printf和一个{}块(这是主函数) 不要使用%d,而是使用精度可变的%s,并从一串零开始打印。如果精度为0,则不打印字符 #include <stdio.h> int main(void) { int power = 19; char zeros[] = "00000000000000000000"; for

我必须打印10的幂,从0到19。问题是,当我想显示第一次幂时,它应该是1
(10^0)
,我无法强制
printf
不重复0。我只允许在我的程序中使用一个
printf
和一个
{}
块(这是主函数)


不要使用
%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;
}
#包括
内部主(空){
整数倍=19;
字符零[]=“00000000000000”;
对于(int i=0;i,请使用
unsigned long long
,可以处理至少18446744073709551615或264-1的值


或者,如果您不喜欢硬编码初始化stings,如
“00000000000000”
,请在同一循环中分配元素

“%.*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;
}

或者是一个狡猾的好答案的变体,上升到21

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

对于(unsigned long power=1,i=0;i您可以实现如下所示的预期结果:

#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;
}
#包括
内部主(空){
无符号长幂=1;

对于(int i=0;i哦,我明白了,所以它只需要字符的一定范围。非常聪明,谢谢。OP的要求是一对大括号,
main
:(@WeatherVane返回到1组
{}
)。
0 1
1 10
2 100
...
17 100000000000000000
18 1000000000000000000
19 10000000000000000000
#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
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;
}