#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;
}
此代码为什么要有个先+'0'再-'0'的操作,意欲何为?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- kof98765 2021-03-15 08:15关注
scanf是从键盘获取输入的字符,也就是ascii码,如果要计算的话,需要先将ascii码转换成数字,最简单的方法就是将字符的值减去一个字符0,
得出数字,比如ascii码0的实际值是48,ascii码1的实际值是49,则字符1减去字符0,得出就是数字1了
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥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做服务的同志有吗