AGAIN001X 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日

悬赏问题

  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗