【PAT】B1027 打印沙漏(20 分)

#include<cstdio>
#include<stdlib.h>
char C='*';
int qiushu(int hang){//输入行数,求出字符数
    int sum=1;
    for(int i=3;i<=hang;i+=2){
        sum+=(1+i/2*2)*2;
    }
    return sum;
}
void dayin(int hang){
    for(int i=0;i<hang/2+1;i++){
        for(int j=0;j<i;j++){
            printf(" ");
        }

        for(int k=0;k<(1+(hang/2-i)*2);k++){
            printf("%c",C);
        }
        printf("\n");
    }
    for(int i=0;i<hang/2;i++){
        for(int j=0;j<hang/2-i-1;j++){
            printf(" ");
        }
        for(int k=0;k<((i+1)*2+1);k++){
            printf("%c",C);
        }
        printf("\n");
    }
}
int main(){
    int N;
    int hang=1;
    scanf("%d %c",&N,&C);//输入总数和字符
    while(!(qiushu(hang)<=N&&qiushu(hang+2)>N)){
        hang+=2;
    }//i是要打印的行号
    dayin(hang);
    printf("%d",N-qiushu(hang));
    return 0;
}
全部评论

相关推荐

点赞 评论 收藏
分享
11-17 23:00
南昌大学 Java
我要娶个什么名:10元一天 0元提成😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务