c - 在 C 中看起来像三角形的输出

标签 c loops for-loop

我写了这个程序,

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 有一个解决方案来解决您在迭代中打印两个星号的方式。在您的示例中使用标识符 rowcol 也会使事情比仅 ij 更令人困惑,尤其是因为外循环实际上是您的当前行。

你的困惑的另一种选择是(我希望这不是家庭作业,因为它没有被标记为这样):

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/

相关文章:

loops - 循环文件时数组元素被删除

javascript - 如何制作一个 for 循环,在圆形动画完成之前重新启动它,使其看起来像一个脉动的圆圈

c++ - 基于范围的语句定义冗余

Python:如果列表中的项目中有任何("str",如何使用?

c - #define 指令中的 for 或 while 循环

php - JavaScript 函数中唯一 ID 的变量

c++ - Linux/GCC 中 mmap() 和 memalign() 的组合?

java - 如何在一个循环中重新组合这些 if 条件?

c - 链表的问题)

c++ - 当我们重复执行全部命令时会发生什么?