请使用“答题”菜单或使用VC6打开考生文件夹proj3下的工程proj3,其中定义了BaseX类(X进制整数类),其中成员函数print输出该整数指定数制的表示形式。使用展转相除法,可从低位到高位逐位求出所需要的表示形式,例如,求十制数231的四进制表示形

admin2016-08-19  12

问题 请使用“答题”菜单或使用VC6打开考生文件夹proj3下的工程proj3,其中定义了BaseX类(X进制整数类),其中成员函数print输出该整数指定数制的表示形式。使用展转相除法,可从低位到高位逐位求出所需要的表示形式,例如,求十制数231的四进制表示形式,方法如下:
  231/4=57……3
  57/4=14……1
  14/4=3……2
  结果是:3213
  在main函数中给出了一组测试数据,正确的输出是:2001
    注意:只需在//********333********和//********666********之间填人所编写的若干语句,不要改动程序中的其他内容。
1   #include
2   #include
3   #include"BaseX.h"
4   using namespace std;
5   BaseX::BaseX(int n){
6    this->num=n;
7  }
8   BaseX::~BaseX(){)
9  void BaseX::print(int x){  //输出整数num的x进制表示形式
10    int arr[100];  //存放转换结果,arr[0]存放最低位
11    int index=0;  //当前数组arr中
12   元素的个数
13    //********333********
14
15
16    //********666********
17    for(int i=index-1;i>=0;i--){  //从高位到低位输出所需表示形式
18    cout<
19    }
20    cout<21    }
22   int main(){
23    BaseX b(129);
24    b.print(4);
25    writeToFile("c:\\test\\");
26    return 0;
27  }
1  //proj3\BaseX.h
2  class BaseX{
3    int num;
4  public:
5    BaseX(int n);
6    ~BaseX();
7    void print(int x);
8   };
9   void writeToFile(const char*path);

选项

答案1 while(Hum) 2 { 3 arr[index++]=num%x; 4 nun/=x: 5 }

解析 将一个数转化为x进制,使用辗转相除法,将余数放在arr[]数组中,对商继续使用辗转相除法来处理,直到商为0。最后反向输出数组中的值,即为x进制的数。
转载请注明原文地址:https://kaotiyun.com/show/6ZNp777K
0

最新回复(0)