C语言之打印菱形

        小编最近在刷题的时候遇到很多使用循环的题目,对于这类题目,小编思维逻辑有时候也会很迷,现在来分享一下经典的案列,帮助大家锻炼一下逻辑 

   打印如图所示的菱形

 

 

 

 通过研究分析,菱形可以分为上三角部分和下三角部分

那我们就通过分部打印实现

 首先判断所要打印菱形每行的空格数和*数

在上三角中,行数定义为high,空格数通过看图可以发现随high减少,空格数(6,5,4...0)

*数满足行数乘以二减去一

for (i = 1; i <= high; i++) {//上三角
		int j;
		for (j = 1; j <=high-i ; j++) {
			printf(" ");
		}
		for (j = 1; j <=2*i-1;j++) {
			printf("*");
		}
		printf("\n");
	
	}

 下三角中空格数(1...6),*数(11....1)通过查找规律*数满足2(high-i)-1

for (i = 1; i <high; i++) {//下三角
		int j;
		for (j = 1; j <= i; j++) {
			printf(" ");
		}
		/*for (j = 1; j<=2*(high-i)-1; j++) {
			printf("*");
		}*/
		for (j = 2*(high-1-i)+1; j>0; j--) {
			printf("*");
		}
		printf("\n");

 


最后合成一串完整的代码

#include<stdio.h>

int main() {
	int high = 0;
	scanf("%d",&high);
	int i;
	for (i = 1; i <= high; i++) {//上三角
		int j;
		for (j = 1; j <=high-i ; j++) {
			printf(" ");
		}
		for (j = 1; j <=2*i-1;j++) {
			printf("*");
		}
		printf("\n");
	
	}

	for (i = 1; i <high; i++) {//下三角
		int j;
		for (j = 1; j <= i; j++) {
			printf(" ");
		}
		/*for (j = 1; j<=2*(high-i)-1; j++) {
			printf("*");
		}*/
		for (j = 2*(high-1-i)+1; j>0; j--) {
			printf("*");
		}
		printf("\n");

	}

}

注意!我所定义的i为1,j也可以为其他值,编写代码的时候可以灵活使用,理清此题目思路就可以。

  • 25
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值