使用C中的嵌套for循环打印星号图案

时间:2018-03-27 05:03:42

标签: c loops for-loop

此代码用于打印带有星号的模式 如果输入数字,例如5 然后程序应该打印以下模式。它应该根据给定的数字按顺序打印*然后减少

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

但它只打印一行。请告诉我这里有什么问题。

#include<stdio.h>

int main()
{
    int lines,lines2;

    printf("Enter the number of lines : ");
    scanf("%d",&lines);

    lines2=lines;
    for(;lines>0;lines--) {
        for(;lines2>0;lines2--){
            printf("*");
        }
    }
    printf("\n");

    return 0;
}

4 个答案:

答案 0 :(得分:1)

首先:以下行应放在两个循环之间:

lines2=lines;

第二名:以下一行应放在外部循环的{之前:

printf("\n");

最终解决方案是:

#include<stdio.h>
int main()
{ 
int lines,lines2;
printf("Enter the number of lines : ");
scanf("%d",&lines);

   for(;lines>0;lines--)
  {    
       lines2=lines;
       for(;lines2>0;lines2--)
       { 
           printf("*");
       }
       printf("\n");
  } 
  return 0;
}

答案 1 :(得分:0)

lines2=lines;
for(;lines>0;lines--)
{    for(;lines2>0;lines2--)

您只需在外循环之前初始化lines2;这就是为什么超过第一行它始终为零。您应该按每行重置它,指定当前值lines。这可能是你想要做的:

for(; lines > 0; --lines) {
    for(lines2 = lines; lines2 > 0; --lines2) {

答案 2 :(得分:0)

看到这个! 它有效!

#include<stdio.h>
main()
{ int lines,lines2;
printf("Enter the number of lines : ");
scanf("%d",&lines);
lines2=lines;
for(;lines>0;lines--)
{    for(lines2=lines;lines2>0;lines2--)
   { printf("*");
   }
printf("\n");
}
}

答案 3 :(得分:0)

你刚改变了几行的地方。你需要将换行符放到第一个循环中:

<div class="selector-wrap">
  <div>
    <span>12</span>
    <div class="control-wrap">
      <div class="caret-wrap">
        <span class="caret">&#9650;</span>
      </div>

      <div class="caret-wrap">
        <span class="caret">&#9660;</span>
      </div>
    </div>
  </div>

  <div>
    <span>30</span>
    <div class="control-wrap">
      <div class="caret-wrap">
        <span class="caret">&#9650;</span>
      </div>

      <div class="caret-wrap">
        <span class="caret">&#9660;</span>
      </div>
    </div>
  </div>

  <div>
    <span>AM</span>
  </div>
</div>