C编程:用Argc用星号和破折号组成一个正方形

时间:2018-10-16 02:28:22

标签: c

我正在尝试编写一个正方形,该正方形由两个带有星号和破折号的三角形组成。输出应如下所示:

  *-----   
  **----   
  ***---   
  ****--   
  *****-

我的代码:

#include <stdio.h>
#include <stdlib.h>

int main (int argc, char *argv[])
{
  if (argc < 3)
    {
      printf ("Usage: p5 <height>\n");
      return 0;
    }
  int i, j;
  int rows = atof (argv[2]);

  for (i = 0; i < rows; i++)
    {
      for (j = 0; j <= rows; j++)
  {
    printf (j <= i ? "*" : "-");
  }

      puts ("");
    }

  return 0;
}

输出:

gcc version 4.6.3

Usage: p5 <height> 

当我编译它时,我看不到任何问题,因为它似乎可以工作,但未显示预期的输出。任何人都可以帮助我吗?我还是C编程新手。

1 个答案:

答案 0 :(得分:0)

使用命令行参数时,第一个(argv[0])是可执行文件的名称。因此,在您的情况下,您只需要两个参数,exe的名称和正方形的高度。因此,您的if条件变为:

if (argc < 2)
{
  printf ("Usage: p5 <height>\n");
  return 0;
}

行数是第二个参数。

int rows = atoi (argv[1]);

您还需要更改第二个for循环,因为正方形的高度和宽度应该相同。

for (j = 0; j < rows; j++)