输入行数,打印上下对称的菱形
菱形分解为上三角和下三角两部分
设菱形输入行数为n;当前行数为i;
很显然,对于上三角部分
当行数n等于1时有0空格,1“ * ”;
当行数n等于2时,第一行有1空格,1“ * ”; 第二行有0空格,3“ * ”;
当行数n等于3时,第一行有2空格,1“ * ”; 第二行有1空格,3“ * ”; 第三行有0空格,5“ * ”;
即第i行前n-i个都为空格,第i行有2i-1个“ * ”
同理,下三角也是如此推导
代码如下:
#include <stdio.h> int main() { int n,i,j; printf("请输入菱形的行数:"); scanf("%d",&n); //打印上三角 for(i=1;i<=n;i++)//打印第i行 { for(j=1;j<=n-i;j++)//打印上三角第i行“*”前n-i个空格 { printf(" "); } for(j=1;j<=2*i-1;j++)//打印上三角第i行2i-1个“*” { printf("*"); } printf("\n"); } //打印下三角 for(i=1;i<=n-1;i++)//打印下三角的n-1行 { for(j=1;j<=i;j++)//打印下三角第i行“*”前i个空格 { printf(" "); } for(j=1;j<=2*(n-i)-1;j++)//打印下三角第i行2(n-i)-1个“*” { printf("*"); } printf("\n"); } return 0; }
输出结果: