请c语言高手帮我给编的代码加下行注释阿~非常急!!越详细越好阿!
原题是:提供输入输出界面,当输完一个任意十进制数字,程序能自动将其转换为另外的数制表示的
值,包括二进制,八进制和十六进制
#include
Void main() //主函数开始
{
unsigned long a,temp; //声明无符号长整型变量a,tmp
char b[64]; //64位字符型数组,用于存储转换后二进制数
char o[21]; //21位字符型数组,用于存储转换后八进制数
char h[16]; //16位字符型数组,用于存储转换后十六进制数
int i; //声明整型变量i
printf("Input number:");//输出Input number:到屏幕
scanf("%ld",&a); //接受长整型输入
temp=a; //将输入的长整型数赋给temp
i=63; //变量i赋值63,存储二进制数组下标0~63
while(temp)
{
b[i]=temp%2+'0'; //转二进制算法,对2取模。(加上0的ASCII码转为显示相应数字)
temp/=2;//对2取模后,原数处以2得到一个新的数再进行下一次取模直到temp为0退出
i--;//下标递减,从数组末位往后存储
}
printf("Bin:");//输出Bin:到屏幕
i++;//在有效位开始输出,忽略没有用到的数组位
while(i<64)
{
printf("%c",b[i]);//送转换后的二进制到屏幕显示
i++;
}
printf("\n");//换行
temp=a;//将输入的值赋给temp
i=20;//存储8进制数组下标0~20
while(temp) //跟转二进制算法一样
{
o[i]=temp%8+'0';//对8取模
temp/=8;//(temp=temp/8)取模后除以8
i--;
}
printf("Oct:");//送Oct:到屏幕显示
i++;//在有效位开始输出,忽略没有用到的数组位
while(i<21)
{
printf("%c",o[i]);//送转换后的8进制到屏幕显示
i++;
}
printf("\n");//换行
temp=a;//输入赋值给temp
i=15;//存储16进制数组下标
while(temp)//跟转二进制算法一样,只是多了一个字母(16进制用到abcdef)转换
{
int x=temp%16;
if(x<10) h[i]=x+'0';
else h[i]=x-10+'A';//大于等于10转字母
temp/=16;//(temp=temp/16)取模后除以16进入下轮取模直到temp=0退出
i--;
}
printf("Hex:");送Hex:到屏幕显示
i++;//在有效位开始输出,忽略没有用到的数组位
while(i<16)
{
printf("%c",h[i]);//送转换后的16进制到屏幕显示
i++;
}
printf("\n");//换行
}