使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数convert(char*strOct)的功能是将八进制转换为十进制。 提示:要每一位转换,然后把转换后得到的数累加起来即可。 注意:不

admin2015-05-30  21

问题 使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数convert(char*strOct)的功能是将八进制转换为十进制。
    提示:要每一位转换,然后把转换后得到的数累加起来即可。
    注意:不能修改其他部分的代码。
    1    #include
    2    #include
    3    int convert(char*strOct)
    4    {
    5
    6  }
    7    int main ()
    8    {
    9    cout<    10    cout<    11    cout<    12    return 0 ;
    13    }

选项

答案1 int re=0 ; 2 while (*stroct) 3 { 4 re=re*8+(*Stroct) - ’0’; 5 StrOct++; 6 } 7 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’。
转载请注明原文地址:https://kaotiyun.com/show/mJNp777K
0

最新回复(0)