PAT乙级(1101 B是A的多少倍)C语言解析

文章目录

  • [1101 B是A的多少倍](#1101 B是A的多少倍)
    • 输入格式
    • 输出格式
    • [输入样例 1](#输入样例 1)
    • [输出样例 1](#输出样例 1)
    • [输入样例 2](#输入样例 2)
    • [输出样例 2:](#输出样例 2:)
    • 代码示例

1101 B是A的多少倍

输入格式

输出格式

c 复制代码
计算 B 是 A 的多少倍,输出小数点后 2 位。

输入样例 1

c 复制代码
12345 2

输出样例 1

c 复制代码
3.66

输入样例 2

c 复制代码
12345 5

输出样例 2:

c 复制代码
1.00

代码示例

c 复制代码
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>

int main() {
    // 定义变量 a 用于存储输入的正整数,d 用于存储要截取的位数
    // e 用于保存 a 的原始值,beishu 用于存储最终计算得到的倍数
    int  a, d, e;
    double beishu;

    // 从标准输入读取两个整数,分别赋值给变量 a 和 d
    // 这里 a 是给定的正整数,d 是要截取的最低位数
    scanf("%d %d", &a, &d);

    // 将 a 的原始值保存到变量 e 中,因为后续 a 的值会被修改
    e = a;

    // 初始化变量 b 为 1,b 用于存储 10 的 d 次方
    long b = 1;
    // 通过 for 循环计算 10 的 d 次方
    // 循环 d 次,每次将 b 乘以 10
    for(int i = 0; i < d; i++) {
        b *= 10;
    }

    // 提取 a 的最低 d 位,存储到变量 c 中
    // 利用取模运算 a % b 得到 a 的最低 d 位组成的数
    int c = a % b;

    // 去掉 a 的最低 d 位,更新 a 的值
    // 通过整数除法 a / b 得到去掉最低 d 位后的数
    a /= b;

    // 初始化 flag 为 1,flag 用于计算去掉最低 d 位后剩余数字的位数对应的 10 的幂
    int flag = 1;
    // 临时变量 temp 用于保存去掉最低 d 位后的 a 的值,避免修改 a 的值
    int temp = a;
    // 通过 while 循环计算去掉最低 d 位后剩余数字的位数对应的 10 的幂
    // 每次将 flag 乘以 10,并将 temp 除以 10,直到 temp 为 0
    while(temp != 0) {
        flag *= 10;
        temp /= 10;
    }

    // 形成新的数,将提取的最低 d 位放到最高位前面
    // 即把 c 乘以 flag 后加上去掉最低 d 位后的 a
    a = c * flag + a;

    // 计算新形成的数 a 是原始数 e 的多少倍
    // 将 a 强制转换为 double 类型,再除以 e 得到倍数
    beishu = (double)a / e;

    // 输出结果,保留小数点后两位
    printf("%.2f", beishu);

    return 0;
}
相关推荐
三体世界2 小时前
HTTPS加密原理
linux·开发语言·网络·c++·网络协议·http·https
杜子不疼.2 小时前
结构体的嵌套问题
c语言·c++
明月与玄武2 小时前
Python爬虫工作基本流程及urllib模块详解
开发语言·爬虫·python
云空2 小时前
《NuGet:.NET开发的魔法包管理器》
开发语言·.net
一ge科研小菜鸡3 小时前
编程语言的演化与选择:技术浪潮中的理性决策
java·c语言·python
小怡同学..3 小时前
c++系列之智能指针的使用
开发语言·c++
黑客飓风4 小时前
JavaScript性能优化实战
开发语言·javascript·性能优化
云博客-资源宝4 小时前
Android Manifest 权限描述大全
android·开发语言·php
永夜的黎明4 小时前
【二进制安全作业】250616课上作业1-栈溢出漏洞利用
c语言·汇编·安全
是紫焅呢5 小时前
I排序算法.go
开发语言·后端·算法·golang·排序算法·学习方法·visual studio code