好久没有发了(捂脸)因为换语言尝试了
分析:
该题的目的是输出经过转换(以输入的第二个参数index为后标)后的值n1除以原本的值n2;
大致为:
n2 = 123456 index = 3
则 取出的内容为456,将456放到123前面可得n1 = 456123;
输出456123 / 12356 即可(保留小数2位)
作者的思想:
1.如果用拼接字符串则用时会大大增加(转类型)
2.如果以456.123/123.456的值和456123/123456的值一样所以可以以某个参数为小数位的标准
实现:
#include<bits/stdc++.h>
using namespace std;
int main(){
float n1,n2;
int temp = 0,index,n;
cin>>n>>index;
n2 = n;
for(int a =0;a<index;a++){//取出后d位
temp+=((n%10)*pow(10,a));
n/=10;
}
n1 = n;
while(n1>1)//将原内容转为0.xxxx的小数
n1/=10;
n1+=temp;//反加回去
while(n2>pow(10,index))//目的是同级
n2/=10;
printf("%.2f\n",n1/n2);//格式化输出
return 0;
}
当然也有用时更短的方式(c语言实现):PAT乙级1101 B是A的多少倍(15分)-CSDN博客