神秘高人洞府闯关(上)

本篇是练习题,相当于全是目前所学的内容的题目的练习,嗯,本专栏适合初学者,写完这个专栏后会把整个专栏再修改的更加严谨的

目录

10.1 神秘人洞府 - 散财之秘

问题解决:散财得财

分析

设计

编码

测试运行

10.2 神秘人洞府 - 石门密码

问题解决:破解密码

分析

设计

编码

测试运行

10.3 神秘人洞府 - ?


10.1 神秘人洞府 - 散财之秘


Q10.1: 最外层的名字让你有点疑惑?散财,不过,等你看了规则之后已经明白了散财的意思:

只要说出一段下品灵石的数量,可以选择对应额度的上中下三种灵石,三种灵石加起来的价值和说出的下品灵石数量的价值一致。

三种灵石的换算:1上品灵石 = 100 中品灵石 = 10000下品灵石 

如,输出14300下品灵石可以换出1枚上品灵石,43枚中品灵石。

输出23450下品灵石可以换出2枚上品灵石,34枚中品灵石,50枚下品灵石。

那么你该怎么做呢?

问题解决:散财得财

分析

按照这三者换算的规律:1上品灵石 = 100 中品灵石 = 10000下品灵石 。

这里我们需要对输入的灵石SpiritStones进行计算,上品灵石的数量SpiritStones_up 是SpiritStones / 10000,然后计算剩余灵石SpiritStones_remain的数量。

再用SpiritStones_remain / 100 算出中品灵石SpiritStones_middle的数量,再计算SpiritStones_remain,最终剩下的就是下品灵石的数量。

设计

变量设计

  • 输入的下品灵石数量SpiritStones
  • 上品灵石SpiritStones_up
  • 中品灵石SpiritStones_middle
  • (剩余的下品灵石SpiritStones_remain

算法设计

  1. 输入灵石数量
  2. 计算上品灵石
  3. 计算剩余灵石
  4. 计算中品灵石
  5. 计算剩余下品灵石数量
  6. 输出结果

编码

#include <stdio.h>

int main() {
    int SpiritStones;
    int SpiritStones_up = 0, SpiritStones_middle = 0;
    int SpiritStones_remain = 0;

    // 读取用户输入的下品灵石数量
    scanf("%d", &SpiritStones);

    // 计算上品灵石数量
    SpiritStones_up = SpiritStones / 10000;
    // 计算剩余下品灵石数量
    SpiritStones_remain = SpiritStones % 10000;

    // 计算中品灵石数量
    SpiritStones_middle = SpiritStones_remain / 100;
    // 计算最终剩余下品灵石数量
    SpiritStones_remain = SpiritStones_remain % 100;

    // 输出兑换结果
    printf("你输入了%d下品灵石,兑换了%d上品灵石,%d中品灵石, %d下品灵石\n", SpiritStones, SpiritStones_up, SpiritStones_middle, SpiritStones_remain);

    return 0;
}

测试运行

输入14200的结果:

输入320的结果:

 

10.2 神秘人洞府 - 石门密码

Q10.2: 解决了散财关卡的你兴致冲冲的来到了下一关。

中层的入口有个巨大的石门,石门上有一个密码锁,密码是一个 3 位整数。

石门上写着【密码满足以下条件:个位数字大于十位数字,十位数字大于百位数字,且三个数字之和为 15】。

你需要找出所有可能的密码组合来解开石门。

问题解决:破解密码

分析

从密码的条件我们可以知道 个位数字 > 十位数字 > 百位数字 且 三个数字之和为15。

很显然我们需要用到循环来遍历所有可能的三位数,并且拆分个、十、百位的数字,然后检查是否满足上面的条件,然后输出满足条件的三位数。

个位最大9,十位最大8,个位最大7。

设计

变量设计

  • 密码password
  • 个位units
  • 十位tens
  • 百位hundreds

算法设计

1. 初始化循环

  • 外层:控制hundreds,从1开始(因为是3 位整数)到7结束
  • 中层: 控制tens,从hundreds + 1(因为tens比hundreds大)开始,到8结束
  • 内层: 控制units,从tens + 1 开始,到9结束

2. 条件判断

  • 判断每组的units,tens,hundreds和是否为15
  • 如果等于15就找到了符合条件的

3. 计算

  • 对满足条件的进行计算得出password:hundreds * 100 + tens * 10 + units
  • 用printf输出

4. 输出

  • 当所有可能的组合都遍历完后,程序结束

编码

#include <stdio.h>
int main() {
    int password;
    for(int hundreds=1; hundreds<=7; hundreds++){
        for(int tens = hundreds + 1; tens <= 8; tens++){
            for(int units=tens + 1; units <= 9; units++){
                if(hundreds + tens + units == 15){
                    password = hundreds * 100 + tens * 10 + units;
                    printf("%d\n", password);
                }
            }
        }
    }
    return 0;
}

测试运行

10.3 神秘人洞府 - ?

待探

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值