寒假万恶之源1.打印沙漏

#include <iostream> //换一种形式的开头吧
using namespace std;//想试用一下c++语法的开头,狗血的是,c++的语法开头,内容竟然是c语言的结构体嗝呵,这里使用了一个关于叫“类”的语句

int main()
{
    int n;  //n代表沙漏打印的个数
    char c; //c是自行选择的符号
    scanf("%d %c",&n,&c);
    int sum=1;//表示沙漏需要的字符个数
    int i=1;//i代表行数
    while(sum<=n)//使用while循环段对沙漏两层进行编译
    {
        sum+=2*(2*(i+1)-1);//2*(i+1)-1代表上半部分的符号个数,乘以2代表两半部分
        if(sum<=n)
            i++;
    }
    int j,k;
    for(j=0;j<i;j++)
    {
            for(k=0;k<j;k++)
            printf(" "); //记得将空格打印出来还是最重要的,因为没有空格,等腰三角形状是出不来的
        for(k=0;k<2*(i-j)-1;k++)
        {
            printf("%c",c);
        }
        printf("\n");
    }//至此为止是对上半部分进行打印
    for(j=2;j<=i;j++)
    {
           for(k=0;k<i-j;k++)
            printf(" ");
        for(k=0;k<2*j-1;k++)
        {
            printf("%c",c);
        }
        printf("\n");
    }//至该处即对下半部分进行打印
    printf("%d",n-(sum-2*(2*(i+1)-1)));//输出没有用掉的符号
}

猜你喜欢

转载自www.cnblogs.com/wonzenkei/p/10296153.html