void drawTriangle(int size){
int k = 0;
for(int i = 1; i <= size; i++){
for(int j = 1; j <= size - i; j++){
printf(" ");
}
while(k != 2*i-1){
printf("* ");
k++;
}
k = 0;
printf("\n");
}
}
}
int main(void){
drawTriangle(5);
return EXIT_SUCCESS;
}
输出:
*
* * *
* * * * *
* * * * * * *
* * * * * * * * *
我期望获得的输出是:
*
***
*****
我做错了什么?它基于宽度而不是行。任何帮助都会很棒。
感谢。
答案 0 :(得分:1)
只需更改这两个printf语句:
printf(" ");
//... ^^ Note 2 spaces
printf("* ");
到此:
printf(" ");
//...
printf("*");
将您的函数调用更改为:
drawTriangle(3);
//^ If you want 3 layers and not 5
答案 1 :(得分:0)
如果我理解得很好,您希望函数drawTriangle(int size)
绘制size
星号的基础。
如果是这样,那么你应该改变整个循环的工作方式。一旦在一行上打印了size
个星号,您的功能就应该停止,而不是在您打印size
行时。
此外,正如评论和其他答案中所述,如果您希望输出看起来与您放置的输出完全相同,那么您应该删除printf("* ");
中的尾随空格。