c语言十六进制字符转化成十进制数字问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言十六进制字符转化成十进制数字问题相关的知识,希望对你有一定的参考价值。
(少于80 个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
【输入形式】
输入一个以回车结束的字符串
【输入输出样例1】(下划线部分表示输入)
Input a string: 10
Hex=16
我自己是这样写的
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(void)
int i,j,k=0;
char str[80];
printf("Input a string: ");
gets(str);
for(i=0;i<80;i++)
if(str[i]>'f' || str[i]>'F')
for(j=i;j<80;j++)
str[j]=str[j+1];
j=strlen(str);
for(i=0;i<80;i++)
if(str[i]>='a' || str[i]>='A')
k=k+(str[i]-'a'+10)*pow(10,j-i-1);
else
k=k+(str[i]-'0')*pow(10,j-i-1);
printf("Hex=%d",k);
return 0;
结果不对,请问字母abc等怎么转化成数字,我写的程序要怎么改?
我帮你重写了。。。
#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>
#include<string.h>
#include<math.h>
int convert(char a)
if (a >= '0' && a <= '9')
return a - '0';
else if (a >= 'A' && a <= 'F')
return a - 'A' + 10;
else if (a >= 'a' && a <= 'f')
return a - 'a' + 10;
else
return -1;
int main(void)
int i, j, k = 0;
char str[80];
char *p;
printf("Input a string: ");
gets(str);
p = str;
while (*p)
i = convert(*p);
if (i >= 0)
k = k * 16 + i;
p++;
printf("Hex=%d\\n", k);
return 0;
参考技术A #include<stdio.h>
#include<string.h>
#include<math.h>
#include<ctype.h>
int main(void)
char c;
long result = 0;
printf("Input a string: ");
while ((c = getchar()) != '\n')
if (!isxdigit(c))
break;
result*=16;
if (isdigit(c))
result+=c-'0';
else
result+=tolower(c)-'a'+10;
printf("Hex=%d\n",result);
c语言中如何将字符串转化成整数型并输出?
参考技术Ac语言中,可以使用atoi()函数将字符串转化成整数型并输出。
atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。int atoi(const char *nptr) 函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)等。
如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0 。特别注意,该函数要求被转换的字符串是按十进制数理解的。atoi输入的字符串对应数字存在大小限制(与int类型大小有关),若其过大可能报错-1。
扩展资料:
C语言常用函数:
1、int abs(int i)
返回整型参数i的绝对值。
2、double cabs(struct complex znum)
返回复数znum的绝对值。
3、double fabs(double x)
返回双精度参数x的绝对值。
4、long labs(long n)
返回长整型参数n的绝对值。
5、double exp(double x)
返回指数函数ex的值。
6、double frexp(double value,int *eptr)
返回value=x*2n中x的值,n存贮在eptr中。
7、double ldexp(double value,int exp)
返回value*2exp的值。
8、double log(double x)
返回logex的值。
9、double log10(double x)
返回log10x的值。
10、double pow(double x,double y)
返回x^y的值。
参考资料来源:百度百科-atoi
以上是关于c语言十六进制字符转化成十进制数字问题的主要内容,如果未能解决你的问题,请参考以下文章