我的这个进制转换简单小程序错哪了~~求助~~
//输入一个十进制数转换成2,8,16,32进制数输出
#include<iostream>
using namespace std;
int main()
{
int num,n;
char a[32]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V'};
char b[100];
cin>>num>>n;
int i,temp,count;
temp=num;
count=num/n;
for(i=0;i<num/n;i++)
{
b[i]=a[num%n-1];
num=num/n;
}
for(i=count-1;i>=0;i--)
cout<<b[i];
return 0;
}
[解决办法]
#include<iostream>using namespace std;int main(){ int num,n,i = 0,count = 0; char a[32]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V'}; char b[100]; cin>>num>>n; do { b[i++]=a[num%n]; num=num/n; }while(num!=0); count=i; for(i=count-1;i>=0;i--) cout<<b[i]; return 0;}
[解决办法]
#include<iostream>
using namespace std;
int main()
{
int num,n;
char a[32]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V'};
char b[100];
cin>>num>>n;
int i,temp,count;
temp=num;
count=num/n;
for(i=0;i<count;i++)
{
b[i]=a[num%n];
num=num/n;
}
for(i=count-1;i>=0;i--)
cout<<b[i];
return 0;
}
你的循环弄错了~~
for(i=0;i<count;i++)
{
b[i]=a[num%n];
num=num/n;
}
这样既可~
[解决办法]
楼主好巧,我最近无聊,也写了这样一个进制转换。
有点不伦不类,用了C的函数,用了C++的类型。
#include <stdio.h>typedef unsigned char byte;typedef unsigned int uint;#define SYSTEM_32BIT 32#define MAX_FORMAT 36const char BYTE_INT[MAX_FORMAT] = { '0','1','2','3','4','5','6','7','8','9', 'A','B','C','D','E','F','G', 'H','I','J','K','L','M','N', 'O','P','Q','R','S','T', 'U','V','W','X','Y','Z'};bool FormatConv(uint nSrc ,byte ucFormat ,char *pcDes){ if ( 2 > ucFormat ) // 0 1进制除外 return false; if ( 0 == nSrc ) return false; if (ucFormat > MAX_FORMAT) return false; byte ucDes[SYSTEM_32BIT] = {0}; byte ucIndex = 0; while (true) { if ( ucFormat > nSrc ) { ucDes[ucIndex] = nSrc % ucFormat; ucIndex++; break; } ucDes[ucIndex] = nSrc % ucFormat; ucIndex++; nSrc /= ucFormat; } for (int i= ucIndex-1 ;0<=i ;i--) *(pcDes++) = BYTE_INT[ucDes[i]]; return true;}void TestSample(int num ,byte ucFormat){ uint unSrcConv = num; char arrDes[SYSTEM_32BIT + 1] = {0}; FormatConv(unSrcConv ,ucFormat,arrDes); printf("src=%d\t\t,des = %s\n" ,num ,arrDes);}int main(char argc ,char *argv[]){ printf("%s",STR_MAP[1]); TestSample(7,2); TestSample(23,12); TestSample(4,3); TestSample(-4,3); return 0;}
[解决办法]
使用未初始化变量是初学者最常见的错误之一。
提醒几句:
1.把变量的声明与定义放在一起;
2.定义后,无论使用与否,给它个合理的初始值。一般都是0或者NULL
3.使用已定义变量时,进行安全检查!比如一些判断语句。这样增强程序的健壮性!