我写了这个程序,
include <stdio.h>
int main(){
int size = 5;
int row;
int col;
for (col=0; col<size; col++){
for (row=0; row<col;row++){
printf(" ");
}
for (row=0; row <(size-col) ; row++){
printf("*");
if(col<=size){
printf("*");
}
}
printf("\n");
}
return 0;
}
它应该像一个三角形
*********
*******
*****
***
*
但是每一行都有一个额外的*。有什么问题?
非常感谢!
最佳答案
Mystical 有一个解决方案来解决您在迭代中打印两个星号的方式。在您的示例中使用标识符 row
和 col
也会使事情比仅 i
和 j
更令人困惑,尤其是因为外循环实际上是您的当前行。
你的困惑的另一种选择是(我希望这不是家庭作业,因为它没有被标记为这样):
int main(void)
{
int size = 5;
int i, j;
for (i = size; i > 0; i--) {
for (j = i; j < size; j++)
putchar(' ');
for (j = 0; j < i*2 - 1; j++)
putchar('*');
putchar('\n');
}
return 0;
}
您还可以将 i*2 - 1
放在一个变量中,这样它就不会在循环的每次迭代中计算(除非编译器发现您没有修改 i
).
关于c - 在 C 中看起来像三角形的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7974608/