题意:百练2765
猛一看就像是高精度,但是实际小数范围比较小,所以可以用double。
#include<stdio.h>
#include<string.h>
int main()
{
char a[16];
int length,i;
double ten;
while(scanf("%s",a) != EOF){
length = strlen(a);
ten = 0;
for(i = length - 1;a[i] != '.'; i--)
{
ten /= double(8.0);
ten += a[i] - '0';
}
ten /= double(8.0);
printf("%s [8] = %.45g [10]\n",a,ten);<span style="white-space:pre"> </span>//相当于把多余的0去掉
}
return 0;
}
转换说明及作为结果的打印输出%a 浮点数、十六进制数字和p-记数法(C99)
%A 浮点数、十六进制数字和p-记法(C99)
%c 一个字符
%d 有符号十进制整数
%e 浮点数、e-记数法
%E 浮点数、E-记数法
%f 浮点数、十进制记数法
%g 根据数值不同自动选择%f或%e.
%G 根据数值不同自动选择%f或%e.
%i 有符号十进制数(与%d相同)
%o 无符号八进制整数
%p 指针
%s 字符串
%u 无符号十进制整数
%x 使用十六进制数字0f的无符号十六进制整数
%X 使用十六进制数字0f的无符号十六进制整数
%% 打印一个百分号 使用printf ()函数 printf()的基本形式: printf("格式控制字符串",变量列表);