给,已经编译运行通过:
#include<conio.h>
#include<stdio.h>
void main()
{
int n//这个就是定义的你需要输出的行数
int i,j
printf("please input the n: ")
scanf("%d",&n)//输入需要输出的行数
for(i=0i<ni++)
{
for(j=0j<2*(n-1-i)j++) printf(" ")
for(j=0j<=ij++) printf("%d",j+1)
for(j=0j<2*i-1j++) printf(" ")
for(j=i+1j>0j--)
{
if(i==0) break
printf("%d",j)
}
printf("\n")
}
getch()
}
给你一个运行的截图
这个图形有几行,就做几次循环,每次循环打印一行:for ( i=0i<Ni++ ),N=3
注意i在3行中取值:0,1,2
每行的空格计数:第1行(i=0)空格数2,第2行(i=1)空格数1,第3行(i=2)空格数0
那么在i循环中用i表示的空格数就是:总行数-当前行数-1=N-i-1
在i循环中新开一个循环来输出空格,循环几次输出几个空格
每行的星号计数:第1行(i=0)星号数1,第2行(i=1)星号数3,第3行(i=2)星号数5
那么在i循环中用i表示的星号数就是:当前行数*2+1=i*2+1
在i循环中新开一个循环来输出星号,循环几次输出几个空格
最后每行需要一个换行符号输出
最终你的程序为:
for ( i=0i<ni++ ) //这里n是行数
{ for ( j=0j<n-i-1j++ ) printf(" ")//可根据不同图形更换j的循环结束条件公式
for ( j=0j<i*2-1j++ ) printf("*")//可根据不同图形更换j的循环结束条件公式
printf("\n")
}
这样,这种问题就变成了三个公式的总结问题:行数、空格数、星号数,总结出来套到程序中相应位置即可。总结是可以把i的值、空格的值、星号的值列出来,用一点序列的知识就可归纳出公式。
行号 0,1,2
空格 2,1,0 总行号-行号
星号 1,3,5 行号*2-1,这是等差数列
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)