题目是六行浮点数,百度之后才明白这道题的考点是出在计算机保存浮点数的问题上
72065910510177138000000000000000.000000 71863209670811371000000.000000 18489682625412760000000000000000.000000 72723257588050687000000.000000 4674659167469766200000000.000000 19061698837499292000000000000000000000.000000
这是出题人的代码
#include <stdio.h>
char flag[]="afctf{sec_is_everywhere}";
int main()
{
for(int i=0;i<6;++i){
printf("%20f\n",*(float*)(flag+i*4));
}
return 0;
}
所以我们要做的就是将浮点数恢复成二进制
直接用c写
#include <stdio.h>
int main()
{ float i = 72065910510177138000000000000000.000000;
char *p = &i;
printf("%c\n",*(p));
printf("%c\n",*(p+1));
printf("%c\n",*(p+2));
printf("%c\n",*(p+3));
return 0;
}
将浮点数赋值给变量 i
然后把i的地址赋值给指针p
直接输出指针p 指向的内容即可

其他几个浮点数同理。
