gpt4 book ai didi

C语言中十六进制转十进制

转载 作者:行者123 更新时间:2023-11-30 20:56:03 25 4
gpt4 key购买 nike

我想从十六进制字符串转换为十进制数字。但我的结果不同。这是我在 c: 中的代码

#include <stdio.h>  
main() {
char c[100];
int n,i;
n=0;
printf("Enter Your Hexadecimal:\n");
scanf("%s",c);
for(i=0; c[i]!='\n' ; i++)
if(c[i]>='0' && c[i]<='9')  n=n*16+(c[i]-'0');
else if(c[i]=='a' || c[i]=='A') n=n*16+(10);
else if(c[i]=='b' || c[i]=='B') n=n*16+(11);
else if(c[i]=='c' || c[i]=='C') n=n*16+(12);
else if(c[i]=='d' || c[i]=='D') n=n*16+(13);
else if(c[i]=='e' || c[i]=='E') n=n*16+(14);
else if(c[i]=='f' || c[i]=='F') n=n*16+(15);
printf("%d",n)
getch();
}

结果是

Enter Your Hexadecimal:
2f
-585093843 /* This is the result of my code*/<br>

............一段时间后添加答案!......
一年后,我为初学者和新手添加了这个问题的答案
newbies inc C语言...希望有用

#include "stdio.h"
int main() {
char c[100];
int n,i;
n=0;
printf("Enter Your Hexadecimal:\n");
scanf("%s",&c);
for(i=0; c[i]!='\n' && c[i]!=0 ; i++){
if(c[i]>='0' && c[i]<='9')
n=n*16+(c[i]-'0');
else if(c[i]=='A' || c[i]=='a')
n=n*16+(10);
else if(c[i]=='B' || c[i]=='b')
n=n*16+(11);
else if(c[i]=='C' || c[i]=='c')
n=n*16+(12);
else if(c[i]=='D' || c[i]=='d')
n=n*16+(13);
else if(c[i]=='E' || c[i]=='e')
n=n*16+(14);
else if(c[i]=='F' || c[i]=='f')
n=n*16+(15);
else{
printf("Error:Your number Is Not Valid!");
return -1;
}
}
printf("%d",n);
return 0;
}

最佳答案

第 1 点。您从未初始化过 i。没有提到 c 的类型 [也许它的类型默认为 int]

第 2 点。您没有使用循环来检查输入中的所有数字[如果它有多于一位数字]。

第 3 点。您没有检查 scanf() 是否成功

第 4 点。您从未验证过输入,也没有将输入限制为一位数字[根据当前逻辑]。

第5点。没有为main()使用正确的签名,没有return[更多的是一个好的实践观点]

也许还有更多。我出去了。

关于C语言中十六进制转十进制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28361129/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com