Chinaunix首页 | 论坛 | 博客
  • 博客访问: 856124
  • 博文数量: 254
  • 博客积分: 5350
  • 博客等级: 大校
  • 技术积分: 2045
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-27 13:27
文章分类

全部博文(254)

文章存档

2015年(1)

2014年(9)

2013年(17)

2012年(30)

2011年(150)

2010年(17)

2009年(28)

2008年(2)

分类: C/C++

2011-09-08 00:57:20

编写函数diamond打印一个菱形(linux 上c语言编程)

此为c一站式学习书上的一道习题,想了很久终于有解,将方法贴出来,方便以后学习时用:
总结:
1。对于打印一类题目始终应该考虑字符的输出顺序,如此题中应该先输出空格再输出定义的字符,所以写时先考虑空格输出,再考虑特殊字符输出。
2.找出数字规律,按规律合理拆分。此图实际可以看成上,下两个部分;从中间输入数显示得到最长的行拆分开来,上半部分空格由大到小,字符由小到大;下半部分空格由小到大,字符由大到小。找到这个关键点将程序一分为二来做就简单了(我一开始没有找到这点,弄了半天无果);再者找到空格与实体输出字符的关系为:m=输出字符+2*空格字符。。这样此题就有解了。
就如此简单,看明白了吗

#include
void diamond(int m,char c){
        int j,k,n;
        for(k=(m-1)/2;k>0;k--){
                for(n=k;n>0;n--)
                        printf(" ");
                for(j=(m-2*k);j>0;j--)
                        printf("%c",c);
                printf("\n");
                }
        for(k=0;k<=(m-1)/2;k++){
                for(n=k;n>0;n--)
                        printf(" ");
                for(j=(m-2*k);j>0;j--)
                        printf("%c",c);
                printf("\n");

        }
}
int main(void){
        diamond(7,'*');
        return 0;
}

运行结果:
[root@ethanTest cstudy]# ./6_2_excise.out
   *
  ***
 *****
*******
 *****
  ***
   *
阅读(2760) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~