我是C的新手,我一直试图以正确的对齐方式打印使用for循环和printf()的金字塔;像这样;
*
**
***
我只能这样做
*
**
***
答案 0 :(得分:1)
#include<stdio.h>
int main()
{
int i,j,k;
for(i=1;i<=5;i++)
{
for(j=5;j>i;j--)
{
printf(" ");
}
for(k=1;k<=i;k++)
{
printf("*");
}
printf("\n");
}
return 0;
}
这里第一个for循环创建的行为5.第二个for循环执行间距,第三个for循环打印星号。
当 i = 1; j从5变为2并打印空格。在此k = 1之后,它打印出一颗星。
i = 1; j = 5,4,3,2; k = 1
i = 2; j = 5,4,3 ; k = 1,2
.
.
i = 5; j = 0; k = 1,2,3,4,5
这里&#34; - &#34;代表一个空白区域。 所以它就像这样:
----*
---**
--***
-****
*****
答案 1 :(得分:1)
您可以使用注释中提到的printf格式说明符技巧,也可以使用基本for循环执行此操作。逐步分解问题。首先是给定行数的循环,然后是每行中空格的循环,然后是每行中星号的循环。这是代码:
#include <stdio.h>
int main(){
int max_stars = 3;
// for every line
for(int i=1; i<=max_stars; ++i){
// print max_stars - i spaces
for(int j=1; j<= max_stars-i; ++j){
printf(" ");
}
// print i stars
for(int j=1; j<=i; ++j){
printf("*");
}
//print a new line
printf("\n");
}
return 0;
}
答案 2 :(得分:0)
#include <stdio.h>
#include <string.h>
void f(int n)
{
int x = 1 , y , var ;
while( n > 0 )
{
for( var = n-1 ; var > 0 ; var-- )
{
fputc(' ',stdout);
}
for( y = 0 ; y < x ; y++ )
{
fputc('*',stdout);
}
fputc('\n',stdout);
n--;
x++;
}
}
int main(void)
{
f(3);
return 0;
}