打印沙漏

1.实验代码

 1 #include <stdio.h>
 2 int main(int argc, char *argv[]) 
 3 {
 4     int i,su,k,j,m,n,kong,ge;
 5     char fuhao;
 6     while(1) 
 7     {
 8         scanf("%d %c",&su,&fuhao);
 9         if(su>0&&su<=1000)
10                     break;
11     }
12     k=su-1;
13     for (i=3;k>=2*i;i+=2) 
14     {
15         k=k-2*i;
16     }
17     i-=2;
18     n=i;
19     for (kong=0;i>=1;i-=2,kong++) 
20     {
21         for (j=0;j<kong;j++)
22                     printf(" ");
23         for (j=0;j<i;j++)
24                     printf("%c",fuhao);
25         printf("\n");
26     }
27     ge=kong-2;
28     for(m=3;m<=n;m+=2,ge--){
29         for(j=0;j<ge;j++)
30         printf(" ");
31         for(j=0;j<m;j++)
32         printf("%c",fuhao);
33         printf("\n");
34     }
35     printf("%d",k);
36     return 0;
37 }

2.设计思路

将沙漏分成三部分,上中下,发现空格和符号规律符合等差数列,然后用公式一步处理完。

 

3.实验过程中遇到的问题

之前没有找到规律想整体解决,后面发现要分部解决

 

4.运行结果截图

 

转载于:https://www.cnblogs.com/xiangqi/p/10411914.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值