m0_56876875 2023-02-02 17:18 采纳率: 0%
浏览 54

蓝桥杯十六进制转化为十进制,想问问哪有问题

蓝桥杯十六进制转化为十进制,想问问哪有问题

#include<stdio.h>
#include<string.h>
#include <math.h>
int main (void)
{
    int j,len,temp;
    char a[8];
  temp=0;
    scanf("%s",&a);    
    
      len=strlen(a);
        for(j=0;j<len;j++)
        {
            switch(a[j])
            {
            case '1':temp+=1*pow(16,len-j-1);break;
            case '2':temp+=2*pow(16,len-j-1);break;
            case '3':temp+=3*pow(16,len-j-1);break;
            case '4':temp+=4*pow(16,len-j-1);break;
            case '5':temp+=5*pow(16,len-j-1);break;
            case '6':temp+=6*pow(16,len-j-1);break;
                case '7':temp+=7*pow(16,len-j-1);break;    
                case '8':temp+=8*pow(16,len-j-1);break;
                case '9':temp+=9*pow(16,len-j-1);break;
                case 'A':temp+=10*pow(16,len-j-1);break;
                case 'B':temp+=11*pow(16,len-j-1);break;
                case 'C':temp+=12*pow(16,len-j-1);break;
                case 'D':temp+=13*pow(16,len-j-1);break;
            case 'E':temp+=14*pow(16,len-j-1);break;
            case 'F':temp+=15*pow(16,len-j-1);break;
            default:temp+=0;    
            }
        }
        printf("%d",temp);
    
        return 0;
    }

  • 写回答

3条回答 默认 最新

  • 程序员星辰 2023-02-02 17:26
    关注

    没什么大问题,有三点优化的:
    scanf("%s",&a) 输入时不需要在字符数组前加 & 号。
    在使用 pow 函数时,参数 16 是一个常量,不需要在每次使用时都重新计算。你可以把它提前计算出来,减少计算时间。
    对于 temp 的初始值,可以不用显式赋值,因为默认初始值为 0。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月2日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22