以字符串方式输入一个十六进制数,将其转换成对应的十进制数后输出。
/*以字符串方式输入一个十六进制数,将其转换成对应的十进制数后输出。例如:输入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;
} 展开
例如:输入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;
} 展开
2个回答
展开全部
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。
展开全部
以下为改后程序。主要问题有:
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;
}
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;
}
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询