正三角
假設行數m=4.
星号的數量與行下标的關系:
第一行i=0, *=1個, 前空格=3
第二行i=1, *=3個, 前空格=2
第三行i=2, *=5個, 前空格=1
第四行i=3, *=7個, 前空格=0
*
***
*****
*******
是以*個數=2*i+1
而 前空格個數=(m-i)-1
倒三角
假設行數n=5
********* 9
******* 7
***** 5
*** 3
* 1
星号的數量與行下标的關系:
第一行i=0, *=9個, 前空格=0
第二行i=1, *=7個, 前空格=1
第三行i=2, *=5個, 前空格=2
第四行i=3, *=1個, 前空格=3
是以*個數=2*(n-i)-1
而 前空格個數=i
将正三角與倒三角合在一起
(一下注意正三角往右挪了一個空位 與 倒三角對其)
/*
輸出行數為num的菱形
*/
#include<stdio.h>
int main()
{
int n,i,j,m,num;
scanf("%d",&num);
m=num/2;
n=num-m;
//輸出正三角
for(i=0;i<m;i++)
{
for(j=0;j<(m-i);j++)//for(j=0;j<(m-i)-1;j++)正三角
printf(" ");
for(j=0;j<2*i+1;j++)
printf("*");
printf("\n");
}
//輸出倒三角
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
printf(" ");
for(j=0;j<2*(n-i)-1;j++)
printf("*");
printf("\n");
}
return 0;
}
空心菱形
/*
輸出行數為num的菱形
*/
#include<stdio.h>
int main()
{
int n,i,j,m,num;
scanf("%d",&num);
m=num/2;
n=num-m;
//輸出正三角
for(i=0;i<m;i++)
{
for(j=0;j<(m-i);j++)//for(j=0;j<(m-i)-1;j++)正三角
printf(" ");
for(j=0;j<2*i+1;j++)
{
if(j==0||j==2*i)
printf("*");
else
printf(" ");
}
printf("\n");
}
//輸出倒三角
for(i=0;i<n;i++)
{
for(j=0;j<i;j++)
printf(" ");
for(j=0;j<2*(n-i)-1;j++)
{
if(j==0||j==2*(n-i)-1-1)//星号的第一和最末輸出星号
printf("*");
else
printf(" ");//中間為空
}
printf("\n");
}
return 0;
}
15
*
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
* *
*