简单C语言解码

简单C语言解码,第1张

密钥语句( fscanf(kptr,"%d ",key))错误,仅仅读了1个。需要循环才能完整地读出所有密钥,

for(i=0i<strlen(encrypt)i++)

fscanf(kptr,"%d ",&key[i])

for(i=0(ch=fgetc(kptr)) != EOFi++) // 搞不懂ch=fgetc(kptr)是干吗的,下面不是已经fscanf(kptr, "%d ", &key[i])读入key了吗。

ch=fgetc(kptr)会使文件流指针偏移,下面的fscanf(kptr, "%d ", &key[i])读的就不是正确结果了。

之前答过这题。。这里。

以下是代码:

#include <iostream>

#include <iomanip>

using namespace std

int main()

{

    long n

    int index

     

    cin>>hex

    cin>>n

     

    index = (n & 0x000000f0) >> 4 //获取指数

    n = (n & 0x0000000f) << 24 | (n & 0x0000ff00) << 8 | (n & 0x00ff0000) >> 8 | (n & 0xff000000) >> 24 //获取有效数

     

    if(index > 8)

    {

        index = index - 8

        double result = n

        for(int i = 0 i < index i ++)

        {

            result = result / 10

        }

        int width = 8

        if((int)result != result)

        {

            width += 1

        }

        cout<<setprecision(width)<<result<<endl

         

    } else if(index < 8)

    {

        for(int i = 0 i < index i ++)

        {

            n = (n << 3) + (n << 1)

        }

        cout<<n<<endl

    } else

    {

        cout<<n<<endl

    }

    return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7745752.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存