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

来源:互联网 发布:微信域名防封 编辑:程序博客网 时间:2024/06/06 08:41

 题目:输入一个奇数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来作为循环条件),接着第二个循环终结.

 

 

 

原创粉丝点击