2018秋季寒假作业4-打印沙漏

题目一:打印沙漏

1)代码截图

#include <stdio.h>
int main(void) 
{
    int m,s=1,i=1;       s为字符数
    char op;
    scanf("%d %c",&m,&op);
    
    while(s<=m)
    {
        s=s+2*(2*(i+1)-1);
        if(s<=m)
            i++;
    }
    int j,n;
    for(j=0;j<i;j++)
    {
            for(n=0;n<j;n++)
            {
                printf(" ");
            }
            for(n=0;n<2*(i-j)-1;n++)
           {
               printf("%c",op);
           }
    printf("\n");
    }
    for(j=2;j<=i;j++)
    {
           for(n=0;n<i-j;n++)
           {
            printf(" ");
           }
        for(n=0;n<2*j-1;n++)
           {
            printf("%c",op);
           }
    printf("\n");
    }
    printf("%d",m-(s-2*(2*(i+1)-1)));
}

 

2)设计思路

这个题目首先要利用数学知识的等差数列找出规律,明显沙漏上下输出的符号是对称的。这个规律没有找出来,在百度上搜索后面才知道。把规律找出来后用while语句来判断字符·的·函数,利用for语句来计算和统计字符的数量,最后要注意的是,即使是没有用完的字符也要在最后一行全部输出即可

3)本题调试过程中遇到的问题及解决方案

问题一:忘记把剩余的字符输出

问题一的解决方案:将几个测试点拿出来调试,不断的输入数字比对答案才发现错误地方

4)运行结果截图

转载于:https://www.cnblogs.com/wangweihanqq2001/p/10399250.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值