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;
}
相关推荐
一条晒干的咸魚1 分钟前
【C#学习笔记03】进制转换与反码、补码、原码
开发语言·笔记·学习·c#
十年之少27 分钟前
内存检测工具——Qt Creator
开发语言·qt
是星辰吖~40 分钟前
C语言_数据结构_队列
c语言·数据结构
网络安全(king)1 小时前
基于java社交网络安全的知识图谱的构建与实现
开发语言·网络·深度学习·安全·web安全·php
论迹1 小时前
【二分算法】-- 三种二分模板总结
java·开发语言·算法·leetcode
衡玖1 小时前
c语言闯算法--排序
c语言·数据结构·算法
五花肉村长2 小时前
Linux-基础开发工具
linux·运维·服务器·开发语言·c++·visualstudio
衡玖2 小时前
c语言闯算法--图(1)
c语言·算法·图论
轻口味2 小时前
【每日学点HarmonyOS Next知识】获取资源问题、软键盘弹起、swiper更新、C给图片设置位图、读取本地Json
c语言·json·harmonyos·harmonyosnext
孔令飞2 小时前
04 | 初始化 fastgo 项目仓库
开发语言·ai·云原生·golang·kubernetes