首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小程序的异常

2012-02-17 
小程序的错误我想编一个把十进制转换为16进制的程序,下边是我写的,有错误大家帮看看#includeiostream.hv

小程序的错误
我想编一个把十进制转换为16进制的程序,下边是我写的,有错误大家帮看看
#include<iostream.h>

void main()
{
int yu[5];
int n;

cout<<"please input the number:";
cin>>n;
for(int i=n,j=0;i%16>0;i=i/16,++j)

{
yu[j]=i%16;

}

for(int k=0;k<j;k++)

cout<<yu[k];

     }

[解决办法]
//This program is written by HPY培 and just for study. ^_^
#include<iostream>
using namespace std;
void two(int num)
{
if(num==0)cout<<0;
int n,i,x=num;
for(n=0;x!=0;n++)
x=x/2;
int arr[100]={0};
for(i=0;i<n;i++)
{
arr[n-i-1]=num%2;
num=num/2;
}
for(i=0;i<n;i++)
{
cout<<arr[i];
}
}

void eig(int num)
{
if(num==0)cout<<0;
int n,i,x=num;
for(n=0;x!=0;n++)
x=x/8;
int arr[100]={0};
for(i=0;i<n;i++)
{
arr[n-i-1]=num%8;
num=num/8;
}
for(i=0;i<n;i++)
{
cout<<arr[i];
}

}
void sixt(int num)
{
if(num==0)cout<<0;
int n,i,x=num;
for(n=0;x!=0;n++)
x=x/16;
int arr[100]={0};
for(i=0;i<n;i++)
{
arr[n-i-1]=num%16;
num=num/16;
}
for(i=0;i<n;i++)
{
if(arr[i]>9)arr[i]=arr[i]-10+'A';
else
arr[i]=arr[i]+'0';
cout<<(char)arr[i];
}

}
int main()
{
cout<<"本程序由“HPY培”编写,仅用于学习交流,不作他用。"<<endl;
int num;
char ch='n';
do
{
cout<<"请输入所需转换的十进制整数: ";
cin>>num;
if(num<0)
{
cout<<num<<"转为二进制是 :- ";two(-num);cout<<endl;
cout<<num<<"转为八进制是 :- ";eig(-num);cout<<endl;
cout<<num<<"转为十六进制是:- ";sixt(-num);cout<<endl;
}
else
{
cout<<num<<"转为二进制是 :";two(num);cout<<endl;
cout<<num<<"转为八进制是 :";eig(num);cout<<endl;
cout<<num<<"转为十六进制是:";sixt(num);cout<<endl;
}
cout<<"是否还要转换其他数?"<<endl<<" 是(y) / 否(n)"<<endl;
cin>>ch;
cout<<endl;
}while(ch=='y'||ch=='Y');

return 0;
}
[解决办法]
若按你的思路程序应该是这样:

#include<iostream>
using namespace std;
void main() 

int yu[5]={0}; 
int n; 

cout <<"please input the number:"; 
cin>>n; 
for(int i=n,j=0;i>0;i=i/16,++j) 

yu[j]=i%16; 


for(int k=j-1;k>=0;k--) 
cout<<yu[k]<<endl; 

}

后方16进制A~F的表示自己再添上吧^_^

热点排行