c语言:输出一个菱形图案!
给定一个正的奇数n,要求输出一个高为n的正菱形,
如上图所示,是一个11行高的菱形。
怎么设计:
首先把这个图分成三个部分:
1,上半部分
2.中间最长的一部分
3.下半部分
准备:
分别找出每一行需要打印多少空格,多少**,然后又是多少空格(和前面数量一样)。
if(line<=n/2)star_num=2*line-1;else if(line==n/2+1)star_num=n;else if (line>n/2+1){ int deline=line-n/2-1;star_num=n-deline*2;}//求出这一行要打印的星星有多少。int pro_space = (n-star_num)/2;//当前行在打印星星前,要打印的空格数
设置接收n大小的变量
int n;//要求n为一个正的奇数scanf("%d",&n);
打印:
int k=1;//控制循环次数的变量 for (k=1;k<=pro_space;k++){printf(" ");add++ ;}//打印出来星星前面的空格 int m=1;//控制循环次数的变量 for(m=1;m<=star_num;m++){printf("*");add++ ;} //打印出来这一行的***。for (k=1;k<=pro_space;k++){printf(" "); add++ ;}//打印出来后面的空格 if(add==n)printf("\n");//判断是否当前行打印完成,是的话换行。
完整代码:
#include<stdio.h>int main ()
{int n;//要求n为一个正的奇数scanf("%d",&n);
//int line=1;for (line=1;line<=n;line++)//从第一行开始循环打印每一行,直到第n行。 {int add=0;//计算当前这一行打印多少字符了,是否需要换行。int star_num=0;//这一行需要打印的星星数 if(line<=n/2)star_num=2*line-1;else if(line==n/2+1)star_num=n;else if (line>n/2+1){ int deline=line-n/2-1;star_num=n-deline*2;}//求出这一行要打印的星星有多少。int pro_space = (n-star_num)/2;//当前行在打印星星前,要打印的空格数
/ int k=1;//控制循环次数的变量 for (k=1;k<=pro_space;k++){printf(" ");add++ ;}//打印出来星星前面的空格 int m=1;//控制循环次数的变量 for(m=1;m<=star_num;m++){printf("*");add++ ;} //打印出来这一行的***。for (k=1;k<=pro_space;k++){printf(" "); add++ ;}//打印出来后面的空格 if(add==n)printf("\n");//判断是否当前行打印完成,是的话换行。
/} return 0;
}