首页 > 解决方案 > 金字塔的 C 程序

问题描述

这是我的星号金字塔代码,但我的输出与我们讲师给定的输出不同。它里面有空格,左右两边都有下划线。有人请帮忙

_ _ _ _ * _ _ _ _

_ _ _ * * * _ _ _

_ _ * * * * * _ _

_ * * * * * * * _

* * * * * * * * *
#include<stdio.h>
#include<conio.h>
int main()
{
 int num,s,co,tt=1;
 printf("Enter loop repeat number(rows): ");
 scanf("%d", &num);
 printf("\n");
 for(; num>=1; num--,tt++)
 {
  for(s=1; s<=num; s++)
    printf("_");
  for(co=tt; co>1; co--)
    printf("*");
  for(co=tt; co>1; co--)
    printf("*");
  for(co=num; co>=1; co--)
    printf("_");
  printf("\n");
 }
 return 0;
}

标签: c

解决方案


如果你看到金字塔图案,星号(*)的数量应该比前一个循环多打印 2,下划线(_)的数量应该2比前一个循环少。

由于您有 2 个用于打印星号的 for 循环,因此您的金字塔从2.

以下面的代码为例。

int main()
{
   int num,co;
   printf("Enter loop repeat number(rows): ");
   scanf("%d", &num);
   printf("\n");
  int asterisk = 1;
  for(; num>=1; num--)
  {
    for(co=0; co<num; co++)
      printf("_");
    for(co=0; co<asterisk ; co++)
      printf("*");
    asterisk +=2; //Increase the number of asterisk by 2. 
    for(co=num; co>=1; co--)
      printf("_");
    printf("\n");
  }
   return 0;
 }

输出:

Enter loop repeat number(rows): 10

__________*__________
_________***_________
________*****________
_______*******_______
______*********______
_____***********_____
____*************____
___***************___
__*****************__
_*******************_

推荐阅读