国家二级C++机试(操作题)模拟试卷690
基本操作题
1.打开考生文件夹下的解决方案proj1,其中有类Conversion的定义和主函数main的定义,类Conver-sion能够实现十进制数向任意进制数的转换。程序中位于每个//ERROR *******found*******下的语句行有错误,请加以改正。更正后程序的输出应该是:
请输入需要转换的十进制正整数:31
请输入需要转换的进制(例如:二进制输入2,八进制输入8):4
转换后的4进制数是:133
注意:只能修改每个//ERROR *******found*******下的那一行,不要改动程序中的其他内容。
#include<iostream>
#include<iomanip>
using namespace std;
const int MAX=100;
class Conversion//十进制向任意进制的转换
{
public:
Conversion(int x,int n=2):
value(x),radix(n),count(0){ }
void Compute();
void Print()const;
private:
int value,radix;//十进制数与转换进制基数
int count,data[MAX];//保存转换后的位数和数值
};
//ERROR *******found*******
void Compute()
{
int templ,temp2=value;
for(int i=0;temp2>0;i++)
{
templ=temp2%radix;
//ERROR *******found*******
temp2=templ/radix;
data[i]=temp1;
count++;
}
}
//ERROR *******found*******
void Conversion::Print()
{
for(int i=count-1;i>=0;i–)
cout<<data[i];
cout<<endl;
}
int main()
{
int x,radix;
cout<<”请输入需要转换的十进制正整数:”;
cin>>x;
cout<<”请输入需要转换的进制(例如:二进制输入2,八进制输入8):”;
cin>>radix;
Conversion obj(x,radix);
obj.Compute();
cout<<·-转换后的”<<radix<<”进制数是:”;
obj.Print();
return 0;
}
(1)void Conversion::Compute()
(2)temp2=temp2/radix;
(3)void Conversion::Print()const
解析:(1)在类外定义类的成员函数的函数体时要指明函数所属的类,通过在成员函数名前加类名和两个冒号即可声明成员函数所在的类。因此应将void Compute()改为void Conversion::Compute()。
(2)temp1变量用于保存进制转换后的每一个位,并及时的赋值给数组data中;temp2变量用于保存需要进行进制转换的数,以及每一次取余操作后的商;因此在上一句语句保存当前取余操作的余数并赋值给temp1后,要执行temp2的求商操作,且保存为新的temp2值,并用于下一次循环的取余操作。因此temp2=temp1/radix应改为temp2=temp2/radix。
(3)在类外定义类的静态成员函数时,要在函数名尾部加上const修饰符。对于同一个函数来说,有const修饰和无const修饰被视为两种函数。因此应将void Conversion::Print()改为void Conversion::Print()const。
简单应用题
2.打开考生文件夹下解决方案proj2,其中有类Graphics(“图形”)、IsoeelesTriangles(“等腰三角形”)、Parallelogram(“平行四边形”)的定义和主函数main的定义。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述定义。例如,当输入数值6时,程序分别输出边长为6的等腰三角形和平行四边形,即此程序的正确输出结果应为:
6
*
***
*****
*******
*********
***********
******
******
******
******
******
******
注意:只能在横线处填写适当的代码,不要改动程序中的其他内容,也不能删除或移动“//*******found*******”。
#include<iostream>
#include<iomanip>
using namespace std;
class Graphics//图形类
(
public:
Graphics(int e):edges(e){ }
//*******found*******
protected:
int edges;
};
//*******found*******
________________//等腰三角形类
{
public:
IsocelesTriangles(int x):
Graphics(x){ }
void Draw();
};
void IsocelesTriangles::Draw()
{
int i,J;
if(edges<=0)
cout<<”errors”<<endl;
if(edges>0)
{
for(i=0;i<edges;i++)
{
//*******found*******
________________//输出前导空格
cout<<setw(2)<<‘’;
for(j=0;j<2*i+1;j++)
cout<<setw(2)<<’*’;
cout<<endl;
}
}
cout<<endl:
}
class Parall
本文档预览:3600字符,共7775字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载