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<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));
再加上用指针就可以了!你试试 参考技术C scanf和printf算库函数么
以上是关于C语言 字符串转数字 急急急的主要内容,如果未能解决你的问题,请参考以下文章