我的第一个算法学习,菱形图案

 题目:输入一个奇数n,输出对角线长为n的实心或者空心的菱形图案

 

如当n=5时,有:
  *
 ***
*****
 ***
  *

 

=========

void myprint(int number,char mychar)

作为输出函数,第一个参数是需要输出的字符的个数,第二个参数是需要输出的字符

int n为输入的个数. int tn=1,i=1作为临时变量.

 

整个程序分为两个部分,第一个部分输出菱形的上部分:

 

  *
 ***
*****

 

第一行输出2个空格,1个*;

第二行输出1个空格,3个*;

第三行输出0个空格,5个*;

...

发现,第一行的空格数=(n-1)/2

接下来,随着行数的增加,每加一行输出的空格就少一个,直到一个也不输出.

而第一行输出的*为1个,接下来,随着行数的增加,每加一行输出的*就多两个,直到输出的*的个数=n

 

 

当一行输出n个*的时候(此时将输出0个空格),第一个循环终结(故循环判断式为i≤n则继续输出,即!(i>n) ),进入下半部分.

 

下半部分输出为:

 ***
  *

 

第一行输出1个空格,3个*;

第二行输出2个空格,1个*;

...

发现,第一行输出1个空格,接下来,随着行数的增加,每加一行输出的空格就多一个,直到输出的空格数=(n-1)/2

而第一行输出的*的个数为n-2个,接下来,随着行数的增加,每加一行输出的*就少两个,直到输出的*的个数=1(因为n是一个奇数,所以倒数第二次循环时输出的*数=3,最后一次输出的*数=1(正数),此时再-2则=-1(负数),所以用i>0来作为循环条件 ),接着第二个循环终结.

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值