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

/*以字符串方式输入一个十六进制数,将其转换成对应的十进制数后输出。例如:输入10,则输出16;输入1a,则输出26。假定输入的十六进制数为a3a2a1a0,则它所对应的... /*以字符串方式输入一个十六进制数,将其转换成对应的十进制数后输出。
例如:输入10,则输出16;输入1a,则输出26。假定输入的十六进制数为a3a2a1a0,
则它所对应的十进制数x=a3*16*16*16+a2*16*16+a1*16+a0=(((a3*16)+a2)*16+a1)*16+a0。
含有错误的源程序如下:*/
#include<iostream.h>
int Dec(char);
void main(void){
int i=0;char t[20];
cout<< "Input:";
cin.getline(t);
cout<< "Output"<<Dec(t)<<endl; //输入十六进制数,输出十进制数
}

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<< "非法十六进制数!"<<endl; exit(1);
}
}
return n;
}
展开
 我来答
chinaboyzyq
2016-01-08 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3289万
展开全部

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。

afdavid
推荐于2018-02-28 · TA获得超过162个赞
知道答主
回答量:242
采纳率:100%
帮助的人:261万
展开全部
以下为改后程序。主要问题有:
1、Dec函数声明格式不对;
2、未加<stdlib.h>,导致exit报错;
3、cin.getline用法不对。

#include<iostream.h>
#include<stdlib.h>
int Dec(char[]);
void main(void){
int i=0;char t[20];
cout<< "Input:";
cin.getline(t,20,'\n');
cout<< "Output:"<<Dec(t)<<endl; //输入十六进制数,输出十进制数
}

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<< "非法十六进制数!"<<endl; exit(1);
}
}
return n;
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式