PTA打印沙漏



#include <stdio.h>

#include <stdlib.h>

#include<string.h>

 

int main()

{

   
int n,i,s1,s2=1,yushu,num,k=0,j,max;

   
char sym;

   
scanf("%d",&n);

   
getchar();

   
sym=getchar();

   
for(i=1;;i++)

    {

       
s1=s2;

       
s2=2*(i+1)*(i+1)-1;

       
if(s1<=n&&n<s2)

       
{

           
yushu=n-s1;

           
break;

       
}

    }

   
max=i;

   
while(i!=1)

    {

       
num=2*i-1;

       
i--;

       
j=k;

       
if(k!=0)

           
printf("\n");

       
while(j!=0)

       
{

           
printf(" ");

           
j--;

       
}

       
while(num!=0)

       
{

           
printf("%c",sym);

           
num--;

       
}

       
k++;

    }

   
j=k;

   
if(k!=0)

       
printf("\n");

   
while(j!=0)

    {

       
printf(" ");

      
 j--;

    }

   
printf("%c",sym);

   
k--;

   
for(i=2;i<=max;i++)

    {

       
num=2*i-1;

       
j=k;

       
printf("\n");

       
while(j!=0)

       
{

           
printf(" ");

           
j--;

       
}

       
while(num!=0)

       
{

           
printf("%c",sym);

           
num--;

       
}

       
k--;

    }

   
if(yushu!=0)

       
printf("\n%d",yushu);

   
if(yushu==1)

     
printf("\n0");

   
return 0;

}


一开始中间两个测试样例错了,以为是正好打印沙漏,余数为零的时候不用在最后一行输出余数,或者是换行格式错误,结果是忘了设置s2=1,n=1,2,…,6时无限循环了,我的脑子呀,明明写的时候还想到的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值