題目是六行浮點數,百度之后才明白這道題的考點是出在計算機保存浮點數的問題上
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 指向的內容即可

其他幾個浮點數同理。
