填空题 使用VC6打开 下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数convert(char* strOct)的功能是将八进制转换为十进制。
提示:要每一位转换,然后把转换后得到的数累加起来即可。
注意:不能修改其他部分的代码。
#include<iostream.h>
#include<cmath>
int convert(char* strOct)
{
}
int main 1
{
cout < < convert("7") < < endl;
cout < < convert("10") < < endl;
cout < < convert("1234") < < endl;
return 0;
}
【正确答案】
【答案解析】int re=0;
while (*strOct)
{
re=re*8+(*StrOct)-"0";
StrOct++;
}
return re;
答案考生文件夹 [解析] 函数convert(char* strOct)的功能是将八进制转换为十进制,将八进制转换成十进制的方法是按权展开,即八进制数第0位的权值为8的0次方,第1位权值为8的1次方,第2位权值为8的2次方,依次将各位数乘上其权值,然后求和即得到相应的十进制数。
(1)定义整型变量变量re, re记录求得的10进制数。
(2)convert(char* strOct)的输入参数为字符指针,而不是整形数据指针,因此需要将ASCII码转换成相应的数字量,即(*strOct)-"0"。
(3)按权展开可采用循环迭代的方法,如:(123) 8 =((1×8)+2)×8+3,即迭代过程为上一次运算得到的结果再乘以8加现在的元素值,即re=re*8+(*strOct)-"0"。