我编写了一个代码,输出应该向右移动一点,如下所示: 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个空格?
答案 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
for (c = 1; c <= space+1; c++)
和
for (c = 1; c <= space+1; c++)
输出