编写函数diamond打印一个菱形




编写函数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
   *
  ***
 *****
*******
 *****
  ***
   *

你可能感兴趣的:(编写函数diamond打印一个菱形)