C语言 字符串转数字 急急急

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言 字符串转数字 急急急相关的知识,希望对你有一定的参考价值。

比如输入 十六进制数的字符串 "3a1" 转换成对应的十进制数929
不用库函数,多谢
1052 进制转换
Description
对输入的两十六进制数(两个字符串),将其转换成十进制后再求和。要求十六进制到十进制的转换功能由函数完成。例如:输入3a1、80,由于3a1转换为十进制后为929,80转换为十进制后为128,所以和为1057。
Input
输入包括两行,每行为一个十六进制数。
Output
输出包括一行为两数之和的十进制表示。
Sample Input
3a1
80
Sample Output
1057

这是原题,数值转换部分应该在main函数之外,新定义一个函数,怎么弄请问

#include<stdio.h>
#include<string.h>
#include<math.h>
int tran16to10(char *s)

int i,z=0,j;
j=strlen(s);
for(i=0;i<j;i++)

if(s[i]>='A'&&s[i]<='F')
z=z+(s[i]-'A'+10)*(pow(16,j-1-i));
if(s[i]>='a'&&s[i]<='f')
z=z+(s[i]-'a'+10)*(pow(16,j-1-i));
if(s[i]>='0'&&s[i]<='9')
z=z+(s[i]-'0')*(pow(16,j-1-i));


return z;


void main()

char s1[10],s2[10];
printf("请输入两个十六进制数\n");
gets(s1);
gets(s2);
printf("%d\n",tran16to10(s1)+tran16to10(s2));
参考技术A #include <stdio.h>

unsigned long htoi(const char* szHex)

unsigned long temp;
sscanf(szHex, "%x", &temp);

return temp;


int main()

char szHex[16];
printf("Enter a hexadecimal string: \n");

scanf("%s", szHex);
printf("Convert this hex string to decimal number:\n%u\n", htoi(szHex));
追问

sscanf还没有学,没有别的办法吗

追答

那就用个笨方法吧:

#include

unsigned long htoi(const char* szHex)

int i;
unsigned long n=0;
for(i=0;szHex[i];i++)

if (szHex[i]== ' ') break;
if( szHex[i]>= '0'&&szHex[i]= 'a' &&szHex[i]= 'A'&&szHex[i]<= 'F') n=n*16+szHex[i]-'A'+10;

return n;


int main()

char szHex[16];
printf("Enter a hexadecimal string: \n");

scanf("%s", szHex);
printf("Convert this hex string to decimal number:\n%u\n", htoi(szHex));

参考技术B 直接用他们的acsii码呀!
再加上用指针就可以了!你试试
参考技术C scanf和printf算库函数么

以上是关于C语言 字符串转数字 急急急的主要内容,如果未能解决你的问题,请参考以下文章

c 语言求源代码急急急

C语言字符转数字

C里面怎么把字符串转成数字

C 数字转 字符串

急急急!!!高分求助,C语言(C#,ASP.NET)写1至7随机4位数字组合,顺序不限,满意加分,

C语言中如何把一个字符串转成数字