如何使文本向右移动?

时间:2015-04-08 02:20:36

标签: c

我编写了一个代码,输出应该向右移动一点,如下所示: http://imageshack.com/a/img537/9765/7uQXuY.jpg

但我的代码结果是这样的:

http://imageshack.com/a/img540/2117/mpK85j.jpg

这是我的代码:

#include <stdio.h>

int main()
{
  int n, c, k, space = 1;
  char ch='a';

  printf(" Enter the size of the diamond:\t");
  scanf("%d", &n);

  space = n - 1;

  for (k = 1; k <= n; k++)
  {
    for (c = 1; c <= space; c++)
      printf(" ");

    space--;
    ch='`'; /* starting from the Asci code num 096 */


    for (c = 1; c <= 2*k-1; c++)

      if (c <= k)
      {ch++;
      printf("%c", ch);
      }

      else
      {
      ch--;
      printf("%c", ch);}

    printf("\n");
  }


  space = 1;


  for (k = 1; k <= n - 1; k++)
  {
    for (c = 1; c <= space; c++)
      printf(" ");

    space++;
    ch='`';

    for (c = 1 ; c <= 2*(n-k)-1; c++)
      if (c <= n-k)
      {ch++;
      printf("%c", ch);
      }

      else
      {
      ch--;
      printf("%c", ch);}

    printf("\n");
  }

  return 0;
}

在这种情况下我该怎么办?我在C语言方面不是很有经验。我尝试了很多东西,但每次都破坏了整个代码。我成功地只移动了第一条线!但是下面的字母无法移动。 还有一个问题:

如何让黑色照片中的数字9显示在距离右侧9个空格的距离上,如果我输入的数字为4,那么数字会在右边出现4个空格?

2 个答案:

答案 0 :(得分:0)

您的循环for (c = 1; c <= space; c++)会将' '从1添加到space等于space。您接收的输出与您想要的输出相差一个空格。你可以做两件事:

在循环之前将space = n - 1; 设置为n:

space = n;

变为

c

或在循环中将for (c = 0; c <= space; c++) 设置为零。

{{1}}

答案 1 :(得分:0)

space

添加1
for (c = 1; c <= space+1; c++)

for (c = 1; c <= space+1; c++)

输出

enter image description here