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;
}
相关推荐
xixiaoyunya21 分钟前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
学逆向的37 分钟前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
小坏讲微服务1 小时前
刚发布一个月的JDK 27,为什么我建议你立刻升级?
java·开发语言·spring boot·spring·架构·求职招聘·springboot4
打工仔折腾 AI3 小时前
用 Dashlet 把极空间 NAS 服务入口整理成统一导航首页的实践
java·开发语言·人工智能·后端·python·rpc·ai agent 实战
MATLAB代码顾问3 小时前
Simulink PI 参数扫描与批量仿真完整 MATLAB 代码
开发语言·matlab
Want5953 小时前
Python跳动的爱心②
开发语言·python·数学建模
Navigator_Z4 小时前
LeetCode //C - 1293. Shortest Path in a Grid with Obstacles Elimination
c语言·算法·leetcode
小羊没烦恼!4 小时前
T-SQL查询进阶--理解SQL SERVER中的分区表
服务器·开发语言·前端·javascript·html
爱吃香菜的初学者4 小时前
十六.Linux——多线程(2)
linux·运维·开发语言
jeo陽4 小时前
04-循环实战:素数、最大公约数、级数求和与枚举法
c语言·开发语言·数据结构