自測-1 打印沙漏 (20分)

自測-1 打印沙漏 (20分)

參考

#include <stdio.h>
int main()
{
    int n;
    char c;
    scanf("%d %c",&n,&c);
    int sum=1,i=1;//sum表示沙漏需要的字符個數,i表示層數 
    while(sum<=n)
    {
        sum+=2*(2*(i+1)-1);//2n-1是一層的個數,乘以2代表兩層一共需要字符個數 
        if(sum<=n)
        {
        	i++;
        } 
    }
    for(int j=0;j<i;j++)//打印上半部分
    {
        for(int k=0;k<j;k++)//上半部分第j行爲2*(i-j-1)-1個*、j-1個空格
        {
        	printf(" ");
        }
        for(int k=0;k<2*(i-j)-1;k++)
        {
            printf("%c",c);
        }//輸出*
        printf("\n");
    }
    for(int j=2;j<=i;j++)//打印下半部分 
    {
        for(int k=0;k<i-j;k++)//下半部分第j行爲2*j-1個*、i-j個空格 
        {
        	printf(" ");
        }
        for(int k=0;k<2*j-1;k++)
        {
            printf("%c",c);
        }
        printf("\n");
    }
    printf("%d",n-(sum-2*(2*(i+1)-1)));
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章