对于这种输出图可以先分析
1--------- 3----------- 1
2--------- 2----------- 3
3--------- 1----------- 5
4--------- 0----------- 7
5--------- 1----------- 5
6--------- 2----------- 3
7--------- 3----------- 1
把图形从第四行分开分成上下两半,上半部分字符2i+1(i为行数-1),空格从3--0递减;下半部分将第5行看作第一行,字符5-2i(i为行数-1),空格等于行数1--3递加
程序:
#include<stdio.h>
int main()
{
//---------上半部分-----------
for(int i=0i<4i++)
{
for(int j=ij<3j++)//控制空格输出个数
printf(" ")//输出空格
for(int k=0k<2i+1k++)//控制字符输出个数
printf(" * ")//输出字符
printf("\n")
}
//--------下半部分------------
for(i=0i<3i++)//下半部分只有3行定义i<3
{
for(int j=0j<i+1j++)
printf(" ")
for(int k=0k<5-2ik++)
printf(" * ")
printf("\n")
}
retutn 0
}
#include <stdio.h>#include <conio.h>
int main()
{
int i,j
char c='A'
for(i=1i<=5i++)
{
for(j=1j<=5-ij++) printf(" ")
for(j=1j<=i*2-1j++) printf("%c",c)
printf("\n")
c++//第一个填空
}
c--
for(i=4i>=1i--)//第二个填空
{
c--
for(j=1j<=5-ij++) printf(" ")
for(j=1j<=i*2-1j++) printf("%c",c)//第三个填空
printf("\n")
}
getch()
return 0
}
#include <iostream>using namespace std
int main( )
{
int i,j,n=6 //n代表上三角行数
//先输出上三角
for(i=1i<=n++i) //输出n行
{
//输出第i行
for(j=1 j<=n-i ++j) //输出n-i个空格
cout<<" "
for(j=1 j<=2*i-1 ++j) //输出2*i-1个星号
cout<<"*"
cout<<endl
}
//下面输出下三角
for(i=1i<=n-1++i) //输出n-1行
{
//输出第i行
for(j=1 j<=i ++j) //输出i个空格
cout<<" "
for(j=1 j<=2*(n-i)-1 ++j) //输出2*i-1个星号
cout<<"*"
cout<<endl
}
return 0
}