7-14 实验2_8_打印实心菱形 (100 分)

已知一个整数n,你要根据n打印出n阶的实心菱形。

输入格式:

只有一个整数n(0<n<40,代表要打印的菱形阶数)。测试用例保证合法。

输出格式:

n阶实心菱形(占2乘n-1行)。

样例">输入样例:

5

输出样例:

    *
   ***
  *****
 *******
*********
 *******
  *****
   ***
    *

代码如下:

#include<stdio.h>
int main()
{
	int i, j, k, n;
	scanf("%d", &n);//输入阶数
	//打印上半部分,就是打印三角形
	for (i = 1; i <= n; i++)
	{
		//先打印空格
		for (j = i; j < n; j++)
			printf(" ");
		for (k = 2 * i - 1; k > 0; k--)
			printf("*");
		printf("\n");
	}
	//打印下半部分
	k = 2 * n - 3;
	int zh = k;
	for (i--; i < 2 * n - 1; i++,zh-=2)
		//i--是为了抵消上个循环中的最后一次自增
	{
		for (j = i; j >= n; j--)
			printf(" ");
		for (k=zh; k > 0; k--)
			printf("*");
		printf("\n");
	}
	return 0;
}

打印菱形就是利用循环分别打印空格和*号,可以把它拆分为打印两个三角形;

寻找到规律即可

上半个三角形的规律为:

          由此推出打印空格的数量

        由此推出打印*的个数 (上图中菱形即*笔误)

下半个三角形的规律为: 

            空格的个数为行数减去阶数,*的个数为:在随着行数的增加而减少(增加一行,减少2个),并且第一行*个数为2*n-3;

经过小编的解释应该明白了!

然后在和大家分享一个问题 :        

 就是小编通常搞不明白for 循环到底对循环几次

例如:for(i=0;i<n;i++)          for(i=0;i<=n;i++)       for(i=1;i<n;i++)     for(i=1;i<n;i++)

       for(i=a;i<b;i++)           我会混淆就很迷!!

分享我的解决方法:

	int i,n = 10;
	int s1 = 0, s2 = 0, s3 = 0, s4 = 0;
	for (i = 0; i < n; i++)
		s1++;
    printf("%d\n", s1);

	for (i = 0; i <= n; i++)
		s3++;
	printf("%d\n", s3);

	for (i = 1; i < n; i++)
			s2++;
	printf("%d\n", s2);

	for (i = 1; i <=n; i++)
		s4++;
	printf("%d\n", s4);

上述代码的运行结果为:

 

所有这个只是小编的困惑,,仅供参考,

 

 

这是小编自己写的代码,不够简洁但是思路比较清晰(如有错误,欢迎指正) 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值