只用简易for循环就能解决无数菱形问题

#include"stdio.h"
int main(){
	int n,i,j;
	printf("设置一个有n行的菱形");  //由菱形这一条件我们可以知道n为奇数
	scanf("%d",&n);
	for(i=1;i<=(n+1)/2;i++){
		for(j=1;j<=(n+1)/2-i;j++){
			printf(" ");
	}                                   //通过两个for循环去控制上半三角形空格的数量 
	for(j=1;j<=2*i-1;j++){
		printf("*");
	}                                 //用*号输出上半三角形 
		printf("\n");
	} 
	for(i=n;i>(n+1)/2;i--){
		for(j=1;j<=n-i+1;j++){
			printf(" ");
		}                             //下半三角形空格数量 
		for(j=1;j<=2*i-n-2;j++){
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

总体思路:1.首先将菱形分成两个三角形来进行分步解决。

2.我们可以发现当我们需要n行的菱形时,*号最多的数也是n。我们可以仔细发现,上半个三角形空格的数量有一定的规律得出(n+1)/2-i。

3.这样的题目,我们需要找到数据中空格数量变化的规律,与*号数量的规律就能进行解决。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值