写一个函数,输入一个十六进制的数,输出相应的十进制数

如题所述

#include<stdio.h>

#include<math.h>

#include<string.h>

int main()

{

char a[10];

void convert(char a[]);

printf("请输入十六进制数:");

gets(a);//输入十六进制数

convert(a);

return 0;

}

void convert(char a[])

{

int n,i,num=0;

n=strlen(a);

for(i=n-1;i>=0;i--)

{

if(a<i>&gt;='0'&&a<i>&lt;='9')

num+=(a<i>-'0')*pow(16,n-1-i);

else if(a<i>&gt;='A'&&a<i>&lt;='Z')

num+=(10+(a<i>-'A'))*pow(16,n-1-i);

else if(a<i>&gt;='a'&&a<i>&lt;='z')

num+=(10+(a<i>-'a'))*pow(16,n-1-i);

}

printf("转换十进制为:");

printf("%d",num);

}

扩展资料:

gets()的用法:

gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束;但回车符不属于这个字符串。其调用格式为:gets(s);其中s为字符串变量(字符串数组名或字符串指针)。

gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s)函数输入字符串时存在一个问题,就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到回车为止。

示例:

#include&lt;stdio.h&gt;

int main()

{

char s[20];

printf("What's your name?\n");

gets(s);

printf("%s\n",s);

return 0;

}

当输入a bde回车的时候,会输出a bde。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-08-04
flag,flag1是标志变量,主要用于控制循环,比如说
if(flag)a=100;
flag=1,条件为真,继续执行内的语句,在执行a=100;
flag=0,条件为假,不执行{}内的语句,直接执行a=100;

a[i]表示0,1,...,E(e),F(f)的ACSII码,a[i]='A(a)',a[i]-'A(a)'的意思是将char转变为int,举个例子:
a[i]=‘A’,字符A的ACSII码是65,那么a[i]-‘A’+10=10(int);
a[i]=‘B’,字符B的ACSII码是66,那么a[i]-‘A’+10=11(int);
...
a[i]=‘0’,那么a[i]-'0'=0(int);
a[i]='1',那么a[i]-'0'=1(int);
...
if((a[i]>='0')&&(a[i]<='9')) n=n*16+a[i]-'0';
if((a[i]>='a')&&(a[i]<='f')) n=n*16+a[i]-'a'+10;
if((a[i]>='A')&&(a[i]<='F')) n=n*16+a[i]-'A'+10;
这就是十六转十的一种方法,你记住就行了,不用过多的追究。本回答被提问者采纳
第2个回答  2010-12-22
编写一函数!
请注意是一个函数,虽然
#include <stdio.h>
void main()
{
int a=0;

printf("please input your number:\n");
scanf("%x",&a);
printf("the result is %d",a);
getch();
}
也可以,但这绝不是题目要求。

#include "stdio.h"
#include "string.h"

long DEC( char *HEX );
int Ture( char *HEX );

void main( void )
{
char HEX[30];
int ture;
clrscr();

do
{
printf("\nPlease input a HEX number blow : \n");
gets( HEX );
if( ture=Ture(HEX) )
printf("\nWrong ! Try Again !");
}while( ture );

printf("\nThe Result is :");
printf(" HEX (%s) = DEC (%ld) ",HEX,DEC(HEX));

}

long DEC( char *HEX )
{
long decvalue=0;
int i=0;

for( i=0 ; i<strlen(HEX) ; i++)
{
if(*(HEX+i)>='A'&&*(HEX+i)<='F')
{
decvalue*=16;
decvalue+=*(HEX+i)-'A'+10;
}
if(*(HEX+i)>='0'&&*(HEX+i)<='9')
{
decvalue*=16;
decvalue+=*(HEX+i)-'0';
}
}

return decvalue;
}

int Ture( char *HEX )
{
int i;
int flag=0;

for( i=0 ; i<strlen(HEX) ; i++ )
{
if((*(HEX+i)>='a')&&(*(HEX+i)<='f'))
{
*(HEX+i)+='A'-'a';
flag++;
}
else if((*(HEX+i)>='A')&&(*(HEX+i)<='F'))
{
flag++;
}
else if((*(HEX+i)>='0')&&(*(HEX+i)<='9'))
{
flag++;
}
else
{
flag--;
}
}

return(strlen(HEX)-flag);
}本回答被网友采纳
第3个回答  2010-12-22
void Convert10()
{
int a;
printf("please input a int:a=");
scanf("%x",&a);
printf("the number is%d",a);
}

写一个函数,输入一个十六进制的数,输出相应的十进制数
int main(){ char a[10];void convert(char a[]);printf("请输入十六进制数:");gets(a);\/\/输入十六进制数 convert(a);return 0;} void convert(char a[]){ int n,i,num=0;n=strlen(a);for(i=n-1;i>=0;i--){ if(a>='0'&&a<='9')num+=(a-'0')*pow(16,n-1-i)...

C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。
include<conio.h> include<string.h> define N 1000 char str[N];int a[N],b[N];int main(void){ void zsh();long ycl();int i,n;do{ printf("请输入一个十六进制数:\\n");scanf("%s",str);for(i=0,n=0;str[i]!='\\0';i++)if(str[i]<'0'||(str[i]>'9'&&str[i...

写一个函数,输入十六进制数,输出相应的十进制数
printf("Please enter Hex number:");\/\/输入一个字符串 scanf("%s",str);xtod(str);\/\/调用转制函数 return 0;} \/\/转制函数 void xtod(char s[]){ int i,j,n=strlen(s);double num[10],sum;\/\/以下是判断输入的数是否是合法的十六进制数,不是就报错并重新输入 for(i=0;i<n;i++...

写一个函数,输入一个十六进制数,输出相应的十进制数
char a[10];void convert(char a[]);printf("请输入十六进制数:");gets(a);\/\/输入十六进制数 convert(a);return 0;} void convert(char a[]){ int n,i,num=0;n=strlen(a);for(i=n-1;i>=0;i--){ if(a>='0'&&a<='9')num+=(a-'0')*pow(16,n-1-i);else if(a>...

C语言 写一个函数 输入一个十六进制数 输出相应的十进制
函数:convert 功能:十六进制转十进制 \/ void conver(char arr[]){ int i,j=0,k=0,sum=0,n=strlen(arr);int num[100];for(i=0;i<n;i++){ switch(arr){ case'A':num[j++]=10;break;case'B':num[j++]=11;break;case'C':num[j++]=12;break;case'D':num[j++]=13;brea...

有C语言编写一函数,输入一十六进制数,输出相应的十进制数
\/*按要求,输入输出都在子函数中进行*\/ include <stdio.h> void fun(void){ int a=0,i;char str[6];printf("输入十六进制数:\\n");gets(str);for(i=0;str[i]!='\\0';i++)if(str[i]>='0'&&str[i]<='9')a=a*16+str[i]-48;else if(str[i]>='a'&&str[i]<='z')...

用c语言写一个函数,输入16进制,输出相对应的10进制
y;}void main(){ char a[N]; puts("输入一个十六进制数(只能含有0-9,a-f,A-F):"); scanf("%s", a); int b = change(a, strlen(a)); printf("其对应的十进制数为: %d\\n", b); getchar(); getchar();}2 运行结果希望对你有帮助~...

c语言写一个函数,输入一个十六进制数,输出相应的十进制数
long hex2dec(char *p){ long x=0;for(;*p;p++){ if(*p>='0'&&*p<='9')x=x*16+*p-'0';else if(*p>='A'&&*p<='F')x=x*16+*p-'A'+10;else if(*p>='a'&&*p<='f')x=x*16+*p-'A'+10;else { printf("Data error!\\n");return -1;} } return x;} int main...

...在主函数中输入十六进制数,输出相应的十进制数。
if(num>N-1){ HEX_DEC(num\/N,N);} printf("%d",num%N);} void main(){ int num;printf("输入一个十六进制的数\\n");scanf("%x",&num);printf("直接用%%d输出:%d\\n",num);printf("用函数输出:");HEX_DEC(num,10);\/\/转换成几进制就把第二个参数换成几 printf("\\n");syste...

写一个自定义函数,将输入的十六进制数转换成十进制数并输出?
int hex2dec(char *s){ int n;for(n=0;*s;s++){ if(*s>='0'&&*s<='9')n=n*16+*s-'0';else if(*s>='a'&&*s<='f')n=n*16+*s-'a'+10;else if(*s>='A'&&*s<='F')n=n*16+*s-'F'+10;} return n;} int main(){ char s[10];scanf("%s",s);printf...

相似回答