2

我想在每个新行的开头添加一个额外的空间。当前输出为:

$****
 $***
  $**
   $*
    $
     Press any key to continue . . .

我想要的是:

$****
 $***
  $**
   $*
    $
Press any key to continue . . .

我添加了for循环!它看起来几乎完美,除了“按任意键继续...”消息是选项卡。如何解决这个问题?

代码:

for(r=1; r<=5; r++) {
  printf("$");
  for(c=1; c<=5;c++) {
    if(6-r<=c) {
      printf(" ");
    } else {
      printf("*");
    }
  }
  printf("\n");
  n++;
  for (f=0;n>f;f++)
    {
        printf(" ");
    }
}
4

4 回答 4

2

编写以下代码时可以使用变量左填充的技巧$

printf("%*s", r, "$");

字符串格式字段中的*允许您指定填充宽度。

于 2012-10-24T01:58:57.793 回答
1

最简单的形式:只打印空格,然后是'$',然后是星号。

int r, c;
for(r=0; r<5; r++) {
  for(c=0; c<r; c++){
    printf(" ");
  }
  printf("$");
  for(c=r+1; c<5;c++) {
      printf("*");
  }
  printf("\n");
  n++;//What is this here for?
}

你可以用一个很棒的 printf 技巧来减少它(已经由其他人提交,所以我不会在这里讨论:

int r, c;
for(r=0; r<5; r++) {
  printf("%*s", r+1, "$");
  for(c=r+1; c<5;c++) {
      printf("*");
  }
  printf("\n");
  n++;//What is this here for?
}

但是等等,还有更多!使用句点 ( .),您可以强制截断字符串,因此:

int r;
for(r=1; r<6; r++) {
  printf("%*s%.*s\n", r, "$", 5-r, "*****");
}

砰!把整个事情归结为一个声明!

于 2012-10-24T01:58:20.807 回答
1

目前你n++;什么都不做。到print(" ")n 次你需要使用类似 for 循环的东西。一种方法:打印空格的数量,然后打印你需要的星星数量,应该是 4 - n。

#include <stdio.h>

int main(int argc, char *argv[]) {
    int r;
    int c;
    int n = 0;
    for(r=1; r<=5; r++)
    {
        for (int i = 1; i<=n; i++) { //Print " " n number of times.
            printf(" ");
        }
        printf("$"); //Print dollar sign.
        for(c=0; c<(4-n);c++) //Print * 4-n times.
        {
            printf("*");
        }
        printf("\n");
        n++;

    }
}
于 2012-10-24T02:02:40.467 回答
1

好吧,您的问题本身就得到了答案,“如何说 printf(" "); 'n' times" 说 printf 'n' 次的最简单方法是运行它 'n' 次,就像您问程序打印'*'(6-r)次!

那么这里有一个非常简单的代码来帮助你得到你想要的输出

#include<stdio.h>
void main()
{
    int r,c,n=0;

    for(r=1; r<=5; r++)
    {
        for(c=n;c>0;c--)
        {
            printf(" ");

        }
        printf("$");
        for(c=1; c<=5;c++)
        {
            if((6-r)<=c)
            {
                printf(" ");
            }
            else
            {
                printf("*");
            }
        }

        printf("\n");
        n++;

    }
}

如果您想查看代码,只需在此处访问 Codepad.org,您可以运行您的代码并查看输出

于 2012-10-24T02:10:55.330 回答