空心菱形(C语言)

题目:编写一个C语言程序,输入一个自然数n,打印一个宽和高均为2*n+1的空心菱形,菱形的边界用 * 显示,其余部分使用 . 来填充。

题目示范图
分析:打印一个宽和高均为2n+1的空心菱形,我们可以先打印2n+1行,每一行再打印2*n+1个点或星。技巧:从n数到-n的值等于2×n+1。示例:
4×2+1=9.
示例
接下来我们要思考每一行要做什么,技巧:从题目示范图可以看出(首尾行
需要在m+1的位置输出一个星号)但中间行就要输出两个星号,而且两个星号之间的距离从一开始逐次加二直到该值等于2×n-1,再依次递减2直到等于1。
具体细节请看代码:

#include<stdio.h>

int main() {
	int n,m,b=0;//b是两个星号距离的增量 
	scanf("%d",&n);
	for(int i=n; i>=(-n); i--) {//循环2*n+1行 
		m=i; //m的初始值是n ,会依次减到0 
		if(m<0) m=-m;//m是i的绝对值 
		for(int j=1; j<=2*n+1; j++) {//每一行要打印2*n+1个'.'或'*' 
			if(m<n) { //判断是否为中间行
				if(j==m+1||j==m+1+b) {//中间行要做的事情 
					printf("*");
				} else {
					printf(".");
				}
			} else { //首尾行要做的事情 
				if(j==m+1) {//在首尾行的时候,位于n+1这个位置时打印'*' 
					printf("*");
				} else {
					printf(".");
				}
			}
		}
		if(i>0) { //判断b需要增加还是减少 
			b=b+2;
		} else {
			b=b-2;
		}
		printf("\n");//每行打印结束后注意要换行 
	}
	return 0;
}

版权声明:本文为weixin_51387341原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。