【发布时间】:2017-03-25 05:55:35
【问题描述】:
我是 C 新手,我有这个程序,我试图根据它的高度打印一个三角形:
/\
/__\
所以如果高度为2,那么'/'、'\'和'_'有2个。
所以我写了这些代码:
#include <stdio.h>
int main(void)
{
int noOfRows;
printf("Enter height: ");
scanf("%d", &noOfRows);
int counter, rowNumber;
for (rowNumber = 0 ; rowNumber < noOfRows; rowNumber++)
{
// For each row, insert numberOfRows - N spaces before printing
for (counter = 0 ; counter < noOfRows- rowNumber ; counter++)
printf(" ");
// For each row, print N times the character
printf("/");
for (counter = 0; counter < noOfRows; counter++)
printf("\\");
printf(" ");
printf("\n");
}
return 0;
}
但是当我输入 3 作为高度时,它会给我这样的输出。
/\\\
/\\\
/\\\
我想在每个新行出现时获得更多空间的“\”,但我不确定应该如何修改 for 循环以正确形成三角形。请让我知道我是否应该添加更多问题以使其更清楚。
我对代码进行了更改,目前有这个:
#include <stdio.h>
int main(void)
{
int noOfRows;
printf("Enter height: ");
scanf("%d", &noOfRows);
int counter, rowNumber;
for (rowNumber = 0 ; rowNumber < noOfRows; rowNumber++)
{
// For each row, insert numberOfRows - N spaces before printing
for (counter = 0 ; counter < noOfRows- rowNumber ; counter++)
printf(" ");
// For each row, print N times the character
printf("/");
for (counter = 0 ; counter < rowNumber ; counter++)
if(rowNumber >= 1)
for(int j=0; j<counter +1; j++)
printf(" ");
if(rowNumber != 0)
printf(" ");
printf("\\");
printf("\n");
}
return 0;
}
现在我当前的输出是这样的:
Height: 3
/\
/ \
/ \
Height: 5
/\
/ \
/ \
/ \
/ \
我在代码中做错了什么导致某些“\”走得更远?
【问题讨论】:
-
这是你的大学作业吗?我建议你多一些耐心,尝试自己解决这个问题,如果你在没有任何人帮助的情况下解决它会给你带来更多的乐趣。否则肯定有人会用循环和打印语句来回答这个问题。
-
为什么要循环打印
\\?每行只有一个。您需要一个循环来打印/和\\之间的空格,类似于您用来打印/之前的空格的循环。 -
最后一行你需要打印
_而不是空格。 -
@Barmar 谢谢你,我采纳了你的建议并编辑了代码,请参阅上面我现在发布的代码编辑版本。
标签: c triangle-count