在C

时间:2017-10-22 16:31:58

标签: c

我参加了我的第一个编程课程,并对我们已经完成的作业提出了一些问题。

我试图将以下图案打印到屏幕上:

   *
  ***
 *****
*******

该图案应该包含5行,每个后续行在上面的行中有2个额外的星号,大致呈金字塔形状。

我一直在努力创建使用for循环执行此操作的代码(这是说明的一部分),这是我目前所拥有的:

int main ()
{
    int row;
    int col;

    for (row = 1; row <= 5; row++) //rows
    {
        for (col = 1; col <= row; col++) //columns
        {
            printf_s("*");
        }
        printf_s("\n");
    }
    return 0;
} 

我的代码的问题是我没有考虑所需的空格来正确对齐。使用上面的当前代码,输出结果如下:

*
**
***
**** 
*****

我希望有人可以指出我正确的方向,如何重新编写我的代码,以获得正确的对齐方式和正确的前导空格数。

提前谢谢。

3 个答案:

答案 0 :(得分:0)

外部循环用于每一行,内部循环在行中打印许多星号。你在行之前省略了合适数量的空格。

如果将外循环更改为更常规:

for (row = 0; row < 5; row++)

它使字符计算算法更简单。

  • 内部循环应该在前面由另一个循环打印4 - row个空格。

  • 星号循环需要打印row * 2 + 1星号。

答案 1 :(得分:0)

您有一个循环来打印星号,但在此之前您没有打印出任何空格。

您打印的星号数不正确。例如,当应该是3时,你的输出在第二行只有2 *

你可以做到

printf("%*s", NUM, "");

打印NUM空格而不是使用单独的循环。

这样的东西
for (row = 0; row < ROWS ; row++) //rows
{
    printf("%*s", ROWS-1-row, "");
    for (col = 0; col < row*2+1; col++) //columns
    {
        printf("*");
    }
    printf("\n");
}

如果行编号从0开始,则每行中的星号数是行号的两倍多。

ROWS表示要打印的行数。

答案 2 :(得分:0)

试试这个:
r - 行数

s - 增量
i - 行索引
j - 列索引
开始 - 开始计数*

    { //
      //      Some session logic 
      //
     } 
        Client client = ClientBuilder.newClient();
        WebTarget baseTarget =
        client.target("https");
        /
        MultivaluedMap<String, String> formData = new 
        MultivaluedHashMap<String, String>();
        formData.add("usr", "@gmail.com");
        formData.add("pwd", "mat");
        Response response = baseTarget.request().post(Entity.form(formData))  
        System.out.println("----Second-time--method invoked GET-------");

        Response resp_sec = base2Target.request().get(); //second time in session perform action client side