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;
}
相关推荐
aramae4 分钟前
C++ -- 模板
开发语言·c++·笔记·其他
胡耀超5 分钟前
4、Python面向对象编程与模块化设计
开发语言·python·ai·大模型·conda·anaconda
小马学嵌入式~40 分钟前
嵌入式 SQLite 数据库开发笔记
linux·c语言·数据库·笔记·sql·学习·sqlite
索迪迈科技43 分钟前
java后端工程师进修ing(研一版 || day40)
java·开发语言·学习·算法
青 .1 小时前
数据结构---二叉搜索树的实现
c语言·网络·数据结构·算法·链表
Zz_waiting.1 小时前
Javaweb - 14.6 - Vue3 数据交互 Axios
开发语言·前端·javascript·vue·axios
萌新小码农‍1 小时前
Java分页 Element—UI
java·开发语言·ui
Tiger_shl2 小时前
【.Net技术栈梳理】03-核心框架与运行时(异常处理)
开发语言·.net
再睡亿分钟!2 小时前
Spring MVC 的常用注解
java·开发语言·spring boot·spring
MChine慕青2 小时前
顺序表与单链表:核心原理与实战应用
linux·c语言·开发语言·数据结构·c++·算法·链表