以字符串方式输入一个十六进制数,将其转换成对应的十进制数后输出。

2024-11-08 08:41:21
推荐回答(2个)
回答1:

1、vb6示例:

Private Sub Command1_Click()
Dim h As String, n As Long
h = InputBox("输入十进制数,以0x或0X开始,最大8个F", _
"输入十六进制数", "0xFFFF")
If Left(h, 2) <> "0x" And Left(h, 2) <> "0X" Then Exit Sub
If Len(h) > 10 Then h = Left(h, 10)
If IsNumeric("&H" & Mid(h, 3)) Then
n = "&H" & Mid(h, 3)
Debug.Print n
Else
Debug.Print "不是十六进制数"
End If

End Sub

2、十六进制数是一种逢十六进一的计数方式,基数是16,由0~9,A-F组成,通常以0x或0X开头,如0xF表示10进制15。

回答2:

以下为改后程序。主要问题有:
1、Dec函数声明格式不对;
2、未加,导致exit报错;
3、cin.getline用法不对。

#include
#include
int Dec(char[]);
void main(void){
int i=0;char t[20];
cout<< "Input:";
cin.getline(t,20,'\n');
cout<< "Output:"<}

int Dec(char s[]){
int i,n=0;
for(i=0;s[i];i++){
if (s[i]== ' ') break;
if( s[i]>= '0'&&s[i]<= '9') n=n*16+s[i]-'0';
else
if( s[i]>= 'a' &&s[i]<= 'f') n=n*16+s[i]-'a'+10;
else
if( s[i]>= 'A'&&s[i]<= 'F') n=n*16+s[i]-'A'+10;
else {
cout<< "非法十六进制数!"<}
}
return n;
}