急急急急急急急!!!!谁能帮我解释一下这个C++编程题,拜托各位了,源程序在下面

题目是用C++语言编写一个可以将十进制数转换为二进制、八进制、十六进制的数的程序源程序:#include<iostream>//预处理指令usingnamespacest... 题目是用C++语言编写一个可以将十进制数转换为二进制、八进制、十六进制的数的程序
源程序:#include<iostream> //预处理指令
using namespace std; //使用命名空间std
void fun_1(unsigned m) //定义fun_1函数,无返回值类型,形式参数m为无符号型
{unsigned b=m; //变量声明,定义本函数用到的变量b为无符号类型,并且把值赋给了m
unsigned char i=0; //变量声明,定义本函数用到的变量i为无符号字符型,并且赋予初始值为0
char s[]="0123456789ABCDEF";//定义字符串数组s,并赋予初值
char num[10],t;//定义字符数组num和字符变量t
while(b>=16)//while语句,当变量b>=16时,执行下列语句
{num[i++]=s[b%16];//将数组s的值存入数组num,将对应数值存入到对应数组里
b=b/16;//对b再次进行赋值
}
if(b>0)//if语句,当b>0时
num[i++]=s[b];//将数组s的值付给数组num
num[i]='\0';//不合理的进制转换为空字符串
for(b=0;b<i/2;b++)//for语句,变量b赋予初始值为0,当b<i/2时,执行下语句,
{t=num[b];//将字符数组num[b]的值付给字符变量t
num[b]=num[i-b-1];//将num数组的i-b-1项的值赋给b项
num[i-b-1]=t;//将t的值赋给数组num[i-b-1],将储存的余数反向输出
}
cout<<"10进制数是"<<m<<"转换为16进制数是"<<num<<'\n';//输出数组num里储存的值即为转换的值
}
void fun_2(unsigned m)//定义fun_2函数,无返回值类型,形式参数m为无符号型
{unsigned b=m;
unsigned char i=0;
char s[]="0123456789ABCDEF";
char num[10],t;
while(b>=8)//while语句,当b>=8时,执行下列语句
{num[i++]=s[b%8];
b=b/8;//对b再次进行赋值
}
if(b>0)
num[i++]=s[b];
num[i]='\0';
for(b=0;b<i/2;b++)
{t=num[b];
num[b]=num[i-b-1];
num[i-b-1]=t;
}
cout<<"10进制数是"<<m<<"转换为8进制数是"<<num<<'\n';
}
void fun_3(unsigned m)//定义fun_3函数,无返回值类型,形式参数m为无符号型
{unsigned b=m;
unsigned char i=0;
char s[]="0123456789ABCDEF";
char num[10],t;
while(b>=2)//while语句,当b>=2时,执行下列语句
{num[i++]=s[b%2];
b=b/2;
}
if(b>0)
num[i++]=s[b];
num[i]='\0';
for(b=0;b<i/2;b++)
{t=num[b];
num[b]=num[i-b-1];
num[i-b-1]=t;
}
cout<<"10进制数是"<<m<<"转换为2进制数是"<<num;
}
int main()//主函数
{unsigned num;//定义一个无符号类型变量num
cout<<"请输入一个正整数";//输出语句
cin>>num;//输入语句
fun_1(num);//调用fun_1函数
fun_2(num);//调用fun_2函数
fun_3(num);//调用fun_3函数
cout<<"\n";//输出回车换行
return 0;//如果程序正常结束,向操作系统返回一个零值
}

可以帮我解释一下这部分是什么意思吗???????
for(b=0;b<i/2;b++)//for语句,变量b赋予初始值为0,当b<i/2时,执行下语句,
{t=num[b];//将字符数组num[b]的值付给字符变量t
num[b]=num[i-b-1];//将num数组的i-b-1项的值赋给b项
num[i-b-1]=t;//将t的值赋给数组num[i-b-1],将储存的余数反向输出
}
展开
 我来答
飞手心的爱情海
2012-04-18 · TA获得超过232个赞
知道答主
回答量:126
采纳率:0%
帮助的人:191万
展开全部
完整的程序没看,
最后的那个问题:
for语句循环,当b<i/2时,开始循环
循环体就是交换num[b]和num[i-b-1]的值
这个C++程序我昨天刚写完,我用类写的,觉得比你这个简单些
更多追问追答
追问
谢谢,我想问一下这部分的程序的作用是什么?
追答
是这样的,短除法将十进制转化为2进制,每次最先得到的余数其实恰恰是转化后二进制数的最低位,但是它是在数组num[i]的最开始,那你输出的时候就得倒序输出,让最低位最后输出,这样子顺序才对,注意到每个转化的子函数最后都有这么一个小的函数块,如果你把它去掉,输出的结果就是倒序了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式