大一C语言:写一个程序,它把一个表示10⼀8⼀16进制数的字符串转换成对应的整数值.

2024-11-14 16:36:51
推荐回答(1个)
回答1:

#include <培明stdio.h>
int hexadecimal(char*);
int octal(char*);
int decimal(char*);
int main(void)
{
char ch[10]="";
int num=0;
scanf("%s",ch);// 十进制;八进制以0开始;十六进制以0x或0X开始
if(ch[0]=='0'&&(ch[1]=='x'||ch[1]=='X'))
num=hexadecimal(ch+2);
else if(ch[0]=='0')
num=octal(ch+1);
else num=decimal(ch);
printf("this number:%d\n",num);
return 0;
}
int hexadecimal(char* ch)
{
int num=0,i=0;
while(ch[i])
{
num+=(ch[i]-'0')*16;
i++;
}
return num;
}
int octal(char* ch)
{
int num=0,i=0;
while(ch[i])
{
num+=(ch[i]-'0')*8;
i++;
}
return num;
}
int decimal(char* ch)
{
int num=0,i=0;
while(ch[i])
{
num+=(ch[i]-'0')*10;
i++;
}
return num;
}

我没含并测试,你测配老告试一下