WING001X 2021-03-14 20:29 采纳率: 100%
浏览 35
已结题

此代码为什么要有个先+'0'再-'0'的操作,意欲何为?

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
int main()
{
    char a[10];
    int i;
    scanf("%s",&a);
    int len=strlen(a);
    long long int sum=0;
    for(i=0;i<len;i++)
    {
        if(a[i]>='A'&&a[i]<='F')
        {
            a[i]=(a[i]-'A')+10+'0';就是这一行
        }
        if(a[i]>='a'&&a[i]<='f')
        {
            a[i]=(a[i]-'a')+10+'0';这一行
        }
        sum+=(a[i]-'0')*pow(16,len-i-1);和这一行
    }
    printf("%lld",sum);
    return 0;
}
  • 写回答

2条回答 默认 最新

  • kof98765 2021-03-15 08:15
    关注

    scanf是从键盘获取输入的字符,也就是ascii码,如果要计算的话,需要先将ascii码转换成数字,最简单的方法就是将字符的值减去一个字符0,

    得出数字,比如ascii码0的实际值是48,ascii码1的实际值是49,则字符1减去字符0,得出就是数字1了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日