问答题
综合应用
请使用"答题"菜单或使用VC6打开考生文件夹下的工程proj3,其中定义了Septinary类(七进制类),来表示一个七进制的数及其相关操作。和十进制的数"逢十进一"类似,七进制的数定义为"逢七进一"。
这里对Septinary类的数据成员做一下说明:
char* data; //存放七进制数的每一位数,data[0]为最高位。这里假设七进制的位数不超过99位。
createSeptinary函数由构造函数调用,用于将作为参数传入的十进制数转化为七进制数,并将七进制数的每一位存入data数组中。请编写createSeptinary函数使程序可以正确运行。注意:Septinary类中提供了numberToChar成员函数,将一个[0,6]之间的数转化为对应的ASCII码值。
在main函数中给出了一组测试数据,此情况下程序的输出应该是:
243
注意:只需在 //********333******** 和 //********666******** 之间填入所编写的若干语句,不要改动程序中的其他内容。
【正确答案】int index = 0;
char temp[100];
while (num)
{
temp[index++] = numberToChar(num % 7);
num /= 7;
}
data[index] = '/0';
int i = 0;
while (index)
{
data[--index] = temp[i++];
}
【答案解析】【解题思路】
主要考察考生对对象成员数据处理的掌握。函数createSeptinary的功能,是将参数十进制整数num转化为7进制数,并将7进制数的每一位存入data数组中。由于转换得到的数是逆序的,这里需要临时数组temp,用来暂时存放逆序的7进制数。首先num对7求余,通过成员函数numberToChar将余数转换为char类型,保存在temp中,num除以7后重新赋值为除数,继续执行求余操作,直到num为0,此时7进制数已经逆序保存在temp中,最后将temp翻转保存到data中。由于在成员函数show中,可以直接将数组data当字符串输出,所以需要在data末尾添加'/0',来标识字符串结束。