你的工作是使用for循环来打印出明星金字塔。你的程序应该使用整数作为参数,并打印出一个带有所提供大小的基数的星号金字塔。例如,如果用户输入为3,则应打印出您的程序:
*
**
***
这就是我所做的。该程序没有任何错误,但它不打印出金字塔并按预期返回。一旦我开始工作,我将添加更多的if语句来解释更大的金字塔。
#include <stdio.h>
void main(int size){
if (size == 0)
{return;
};
if (size == 1)
{printf("*\n");
};
if (size == 2)
{printf("**\n");
};
if (size == 3)
{printf("***\n");
};
if (size = 4)
{printf("****\n");
};
if (size == 5)
{printf("*****\n");
};
if (size ==6)
{printf("******\n");
};
main(size-1);}
答案 0 :(得分:0)
这不是很好,但应该有效
#include <stdio.h>
void main(){
int size = 3,i; //you can't just pass a value into main like that so I've initialised size here
while (size){ //loop controlling line output
i = 0;
while (i++<size){//loop controlling * output within line
putchar('*');//output a *
}
putchar('\n'); //output a newline (go to next line)
size--;
}
}
如果你检查for
循环的语法,你应该能够翻译它以便很容易地使用它们(我很好,但我仍然不会在盘子上给你完整的任务)
答案 1 :(得分:0)
颠倒是因为主要电话的位置是持续的。
#include <stdio.h>
int main(int argc, char **argv){
if(argc){
int i;
(void)main(argc-1, argv);
for(i=0;i<argc;++i)
putchar('*');
putchar('\n');
}
return 0;
}
答案 2 :(得分:0)
打印行列“图形”是一个二维问题,因此您需要一个2D解决方案:两个循环,一个嵌套在另一个中。您可以使用一个循环 - 在一行中打印星号(星号),并在尝试时重新调用程序 - 除了每次结果都会变小。要变大,您需要两个程序参数:max size和current row。在这种情况下,您无法摆脱对两个数据的需求。
请尝试使用其他人在评论中建议的循环。
我会将所需的结果称为“三角形”,因为对我来说,“金字塔”必须从左到右对称,所以只能有奇数行。