超A的大叔 2021-03-14 10:18 采纳率: 16.7%
浏览 25

十六进制转十进制,求找bug。

 求找bug

Devc环境编译下无语法错误

#include<stdio.h>
#include<string.h>
#include<math.h>
int main()
{
    int m=0,count,i,j=0;
    char a[8];
    gets(a);
    count=strlen(a);
    //十六进制转十进制
    
    for(i=count-1;i>=0;i--)
    {
        if(a[i]>='A'&&a[i]<='F')
        a[i]=a[i]-'A'+10;
        else
        a[i]=a[i]-'0';
        a[i]=a[i]*pow(16,j);
        m=m+a[i];
        j++;
    }
    printf("%d",m);

    return 0;
}

  • 写回答

1条回答 默认 最新

  • 微软技术分享 全栈领域优质创作者 2023-06-19 16:55
    关注

    来,让本大神告诉你该如何改进,我看了你的代码,存在一个小问题,在使用 pow(16, j) 计算时,可能会得到不准确的结果。这是因为 pow 函数返回的是一个浮点数,可能存在舍入误差,从而导致最终结果不准确。

    建议改用循环的方式计算 16 的幂,而不要使用 pow 函数。同时使用更安全的输入函数替代 gets 函数,例如fgets函数。

    其他问题并没有发现,这个代码还算简单。

    评论

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图点聚合中Marker的位置无法实时更新
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿