我需要输入一个八位十六进制整数然后分别输出为不同类型,我想问如何将其输出为32位小数和用科学记数法表示,而且输出分正负?
你先存进一个long里
然后直接按%f打印它
这里就能提现union的用处了。
#include <stdio.h>
union data
{
unsigned int idata;
float fdata;
};
void xtod(char buf[], unsigned int *n)
{
*n = 0;
int i = 0, t, x = 1;
i = strlen(buf) - 1;
while (i >= 0)
{
if (buf[i] > 'a')
t = buf[i] - 'a' + 10;
else
t = buf[i] - '0';
*n += t * x;
x *= 16;
i--;
}
}
int main()
{
union data n;
char buf[9];
scanf("%s", buf);
xtod(buf, &n.idata);
printf("%d\n%u\n%f\n%e\n", n.idata, n.idata, n.fdata, n.fdata);
return 0;
}
看着好像是呢喃oj上的题
强制转换内存数据类型就行了