打印沙漏 注释版/初学者向

昨天搜了下“打印沙漏”的代码,找到的代码注释都好少啊!身为一个菜鸟,看那种没有注释的代码体验实在太糟糕了。于是我决定做一个注释多、条理清晰的“打印沙漏”。

思路:

1、简化问题,把问题分解成5个部分(因为题目有时间限制,所以没有使用函数)。

分别是:计算三角形行数(不带尖角)、输出上三角形(不带尖的)、输出三角形的尖、输出下三角、输出剩下的字符数。

2、逐步实现每部分的功能。

代码:

#include <stdio.h>
int main(){
    int number;//输入符号的个数
    char mark;//输入的符号
    int i,j,z;//计数变量 
    int cnt = 0;//计数器:行数 
    int ood = 3;//奇数个数 
    scanf("%d %c",&number,&mark);//输入一个数和字符,以空格分隔 
    if(number == 1){//当输入1时执行 
        printf("%c\n", mark);
        printf("0");
    }
    else{
        /*求出三角形行数(不包含尖)*/
        while(number - 1 >= ood * 2){
            number -= ood * 2;
            cnt++;
            ood += 2;
            }
        ood -= 2; //减去最后一轮的加二 
        
        /*打印上三角 (不包含尖)*/ 
        for( i = 0; i < cnt; i++ ){
            for( j = 0; j < i; j++ ){//打印空格 
                printf(" ");
            }
            for( z = i * 2; z < ood; z++ ){//打印符号
                printf("%c", mark);
            }
            printf("\n");
        }
        
        /*打印尖*/
        for( i = 0; i < cnt; i++ ){
            printf(" ");
        } 
        printf("%c\n", mark);
        
        /*打印下三角*/
        for( i = 0; i < cnt; i++){
            for( j = i + 1; j < cnt; j++ ){//打印空格
                printf(" "); 
            } 
            for( z = 0; z < 3 + i * 2; z++ ){//打印字符 
                printf("%c", mark);
            }
            printf("\n");
        }
        /*打印剩下的字符数*/
        printf("%d",number - 1);//再减去一个尖 
    }
}

不足之处敬请斧正,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值