C++16进制循环结构转换为10进制(追加100)

来源:百度知道 编辑:UC知道 时间:2024/05/22 19:45:46
编写一个程序,输入一个(以0x开始的)十六进制数字串(以’#’结束),将其转换为对应的整数,并将该整数乘2后(以十进制形式)输出(注意,转换应自行实现,不允许用hex操纵符或atoi函数,输入十六进制数字串时也不允许用cin直接输入到整型变量,只能输入到一个char型变量,逐个字符读入)

#include<iostream>
using namespace std;
int swit(char ch)
{
int n;
if(ch>='0'&&ch<='9')
n=ch-'0';
if(ch>='a'&&ch<='f')
n=ch-'a'+10;
if(ch>='A'&&ch<='F')
n=ch-'A'+10;
return n;
}
int main()
{
int i=0,j=0,data[10];
memset(data,0,10);
char str[10],ch;
ch=getchar();
while(ch!='#')
{
if(data[0]!=0)data[j++]=swit(ch);
if(str[i-1]=='x')data[j++]=swit(ch);
str[i]=ch;
i++;
ch=getchar();
}
int s=0;
cout<<"十六进制数为: ";
for(i=2;i<j+2;i++)
cout<<str[i];
cout<<endl<<"对应的十进制数乘以2以后为: ";
for(i=0;i<j;i++)
s=s*16+data[i];
cout<<2*s<<endl;
return 0;
}

没明白你的意思。

#include <stdio.h>
void main