欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【C语言打印“菱形”,(仅支持单数行数)】

程序员文章站 2022-05-28 11:08:15
...

目录

代码

#include <stdio.h>
int main(){
//输入行数打印菱形
int i;
int n; //行数
printf("输入奇数行数,如5,7,9等数(偶数不能打印对称的菱形): \n");
scanf("%d",&n);

/*   寻找规律 
printf("     *\n"); //1
printf("    ***\n"); //2
printf("   *****\n"); //3
printf("  *******\n"); //4
printf(" *********\n"); //5
printf("***********\n"); //6
printf(" *********\n"); //7
printf("  *******\n"); //8
printf("   *****\n"); //9
printf("    ***\n"); //10
printf("     *\n"); //11
*/

/*   同理,得到规律。 
	第1行:   	5个空格,    	 1个*
	第2行:   	4个空格,    	 3个*
	第3行:   	3个空格,    	 5个*
	第4行:   	2个空格,    	 7个*
	第5行:   	1个空格,    	 9个*
	第6行:   	0个空格,    	 11个*
	第i行:   (n+1)/2-i个空格, *个数=2i-1;		
	
	第7行:  	1个空格,  		9个*
	第8行:  	2个空格,  		7个*
	第9行:		3个空格,  		5个*
	第10行:		4个空格,  		3个*
	第11行: 	5个空格,  		1个*
	第i行: 	i-(n+1)/2 个空格, *个数=2*n-(2*i-1);
*/

for(i=1;i<=n;i++){
	//每次循环打印一行
	if(i<=(n+1)/2){
		//打印空格,空格数是(n+1)/2-i
		for(int j=0;j<(n+1)/2-i;j++){
			printf(" ");
		}
		//打印*个数是2i-1
		for(int j=0;j<2*i-1;j++){
			printf("*");
		}										
	}
	if(i>(n+1)/2){
		//打印空格,空格数是i-(n+1)/2
		for(int j=0;j<i-(n+1)/2;j++){
			printf(" ");
		}
	
		//打印*个数是2*n-(2*i-1)
		for(int j=0;j<2*n-(2*i-1);j++){
			printf("*");
		}			
	}
	//打印换行符
	printf("\n");		
}
return 0;
} 

演示

(1)输入偶数时 如 16(不对称)
【C语言打印“菱形”,(仅支持单数行数)】
(2)输入奇数时 如 17(对称)
【C语言打印“菱形”,(仅支持单数行数)】