作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的任务是从用户那里获取一个正整数,然后打印一个如下所示的三角形(例如整数 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/
我是一名优秀的程序员,十分优秀!