gpt4 book ai didi

c - 如何在c中将输出数字(或文本)向右对齐?

转载 作者:行者123 更新时间:2023-11-30 18:12:03 24 4
gpt4 key购买 nike

我的任务是从用户那里获取一个正整数,然后打印一个如下所示的三角形(例如整数 5):

          1
1 2
1 3 5
1 4 7 10
1 5 9 13 17

这是我设法制作的代码:

int num, line,addition,sum,termNum;
printf("Enter a positive integer: ");
scanf("%d",&num);

printf("%d\n",1);

for (line=2;line<=num;line++)
{
addition = line-1;
termNum=1;
printf("%d ",termNum);

for (sum=2;sum<=line;sum++)
{
termNum+=addition;
printf("%d ",termNum);
}
printf("\n");

}

但是输出没有右对齐,它看起来像这样:

1
1 2
1 3 5
1 4 7 10
1 5 9 13 17

我无法创建函数或使用数组,只能使用循环和 if,以及各种控制字符,例如 %c %s %d %-12c 等...变量类型必须是 int、double、char。 (不是字符串或 char* 等)

有什么想法吗?谢谢。

最佳答案

OP a 需要微调来预先计算最大线宽。

下面的填空代码计算了最大线宽,这似乎是OP的绊脚石。

int main(void) {
int x = 5;
int width = 0;
for (int col = 0; col < ___ ; col++) { // How many iterations?
int value = col* ___ + ___; // Determine each value: 1 5 9 13 17
// find print width
do {
width++; // add 1 per digit
value /= ___; // What base is the number displayed?
} while (value > ___); // When to quit (hint: not much)
width++; // add 1 for ' ' separator
}
printf("%d\n", width); // Should be a dozen
}

替代方案

  for (int col = 0; col < ___ ; col++) {
int value = col* ___ + ___;
width += snprintf(NULL, 0, "%d ", value);
}

关于c - 如何在c中将输出数字(或文本)向右对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41521476/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com