编写函数diamond打印一个菱形




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

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

m=输出字符+2*空格字符。。抓住这个关系,此题就有解了。
先打印空格,再打印字符,字符后面的空格不用考虑。


就如此简单,看明白了吗

#include<stdio.h>
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
   *
  ***
 *****
*******
 *****
  ***
   *

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值