C++,有源码,求解释。
1:那个自定义输出函数是做什么的?有什么用,里面求解释。2:void dtob(int n) 类似于这个不是空函数吗?里面为什么还要写int n? 可以写在下面吗?
3:a[i]=n%2;
n=n/2;
i++;:
第二句是设么意思?最后为什么还要+1?
int a[100],i=0;
void init()
{
int k;
for (k=0;k<100;k++)
a[k]=0;
}
void print() //自定义输出函数
{
int j;
for(j=i-1;j>=0;j--)
if (a[j]<10) printf("%d",a[j]);
else
{
switch (a[j]){
case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");
}
}
printf("\n");
}
void dtob(int n) //十进制转换为二进制
{
i=0;
init();
while(n!=0)
{
a[i]=n%2;
n=n/2;
i++;
}
printf("对应的二进制数为:");
print();
}
void dtoO(int n) //十进制转换为八进制
{
i=0;
init();
while(n!=0)
{
a[i]=n%8;
n=n/8;
i++;
}
printf("对应的八进制数为:");
print();
}
void dtoh(int n) //十进制转换为十六进制
{
i=0;
init();
while(n!=0)
{
a[i]=n%16;
n=n/16;
i++;
}
printf("对应的十六进制数为:");
print();
}
main()
{
int num,r;
printf("请输入一个十进制数和要转换的进制数:");
scanf("%d%d",&num,&r);
while(num!=0)
{
if (r==2) dtob(num);
else if (r==8) dtoO(num);
else if (r==16) dtoh(num);
else printf("输入进制数有误,重新输入!");
printf("如果继续转换输入一个十进制数和要转换的进制数,否则输入0\n");
scanf("%d%d",&num,&r);
}
}