问答题请使用VC6或使用[答题]菜单打开考生目录proj3下的工程文件proj3,其中定义了用于表示特定数制的数的模板类Number和表示一天中的时间的类TimeOfDay;程序应当显示: 01:02:03.004 06:04:06.021 但程序中有缺失部分,请按照以下的提示,把缺失部分补充完整: (1)在“//**1** ****found****”的下方是一个定义数据成员seconds的语句,seconds用来表示“秒”。 (2)在“//**2** ****found****”的下方是函数advanceSeconds中的一个语句,它使时间前进k秒。 (3)在“//**3** ****found****”的下方是函数advance中的一个语句,它确定增加k后n的当前值和进位,并返回进位。例如,若n的当前值是表示时间的55分,增加10分钟后当前值即变为5分,进位为1(即1小时)。 注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“****found****”。填写的内容必须在一行中完成,否则评分将产生错误。 //proj3.cpp #include<iostream> #include<iomanip> using namespace std; template<int base> //数制为base的数 class Number int n; //存放数的当前值 public: Number(int i):n(i) //i必须小于base int advance(int k);//当前值增加k个单位 int value()constreturn n; //返回数的当前值 ; class TimeOfDay public: Number<24>hours; //小时(0~23) Number<60>minutes; //分(0~59) //**1** **********found**********______;//秒(0~59) Number<1000>milliseconds;//毫秒(0~999) TimeOfDay (int h=0,int m=0,int s=0,int milli=0) :hours(h),minutes(m),seconds(s),milliseconds(milli) void advanceMillis (int k) advanceSeconds(milliseconds.advance(k)); //前进k毫秒 void advanceSeconds (int k) //前进k秒 //**2** **********found********** ______; void advanceMinutes (int k) advanceHour(minutes.advance (k)); //前进k分钟 void advanceHour(int k)hours.advance(k); //前进k小时 void show()const //按“小时:分:秒.毫秒”的格式显示时间 int c=cout.fill('0'); //将填充字符设置为'0' cout<<setw(2)<<hours.value()<<':' //显示小时 <<setw(2)<<minutes.value()<<':' //显示分 <<setw(2)<<seconds.value()<<'.' //显示秒 <<setw(3)<<milliseconds.value(); //显示毫秒 cout.fill(c); //恢复原来的填充字符 ; template<int base> int Number<base>::advance(int k) n+=k; //增加k个单位 int s=0; //s用来累计进位 //**3** ***********found*********** while(n>=base)______ //n到达或超过base即进位 return s; //返回进位 int main() TimeOfDay time(1,2,3,4); //初始时间:1小时2分3秒4毫秒 time.show(); //显示时间 time.advanceHour(5); //前进5小时 time.advanceSeconds(122); //前进122秒(2分零2秒) time.advanceMillis(1017); //前进1017毫秒(1秒零17毫秒) cout<<endl; time.show(); //显示时间 cout<<endl; return 0;
问答题改错题
使用VC6打开考生文件夹下的工程kt14_1,此工程包含一个源程序文件kt14_1.cpp,但该程序运行有问题,请改正程序中的错误,使该程序的输出结果为:
A:noparameters
B:intparameter
A:noparameters
B:intparameter
C:intparameter
源程序文件kt14_1.cpp清单如下:
#include
classA
{ /*****************found*****************/
private:
A(){cout<<"A:noparameters\n";}
A(inta){cout<<"A:intparameter\n";} };
classB:publicA
{ public:
B(inta){cout<<"B:intparameter\n";} };
/*****************found*****************/
classC:publicB,publicA
{ public:
/*****************found*****************/
C(inta)::B(a){cout<<"C:intparameter\n";} };
voidmain()
{ Bb(1);
Cc(2); }
问答题请编写一个函数fun(),它的功能是求出一个正整数的所有因子。例如,若输入72, 则程序应该输出:72=2*2*2*3*3。注意:部分源程序已存在文件PROC14。CPP中。请勿修改主函数和其他函数中的任何内容,仅在函数fun()的花括号中填写若干语句。 文件PROC14.cpp的内容如下: //PROC14. cpp #include <iostream> using namespace std; void fun(int number); int main ( ) int n; cout<<"Please enter a number /n"; cin>>n; cout<<n<<"="; fun (n); return 0; void fun(int number) //* * * * * * *
问答题综合应用题
使用VC6打开考生文件夹下的工程test9_3,此工程包含一个源程序文件test9_3.cpp,其中定义了Circle类与Money类,Circle类可对半径为r的圆进行周长与面积的计算,而Money类用于计算一圆形游泳池的造价。游泳池四周有原形过道,过道外围上栅栏,过道宽度为3米,根据键入的游泳池半径,每米栅栏价格及每平方米过道价格,即可计算出游泳池的造价。请按要求完成下列操作,将程序补充完整。
(1)定义符号常量PI(值为3.14159f)与WIDTH(值为3.00f),分别用于表示圆周率与过道的固定宽度。请在注释"//**1**"之后添加适当的语句。
(2)定义Circle类默认构造函数,把私有成员radius初始化为参数r的值。请在注释 "//**2**" 之后添加适当的语句;
(3)完成Money类默认构造函数的定义,把私有成员FencePrice(每米栅栏的价格)、 ConcretePrice(每平方米过道的价格)初始化为参数f,c的值。请在注释"//**3**"之后添加适当的语句。
(4)完成Money类成员函数float Money::TotalMoney(float fencelen, float conarea)的定义,根据参数fencelen(栅栏的长度)和conarea(过道的面积),返回栅栏与过道的总造价。请在注释"//**4**"之后添加适当的语句。
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
源程序文件test9_3.cpp清单如下:
#include
//**1**
class Circle
{
private:
float radius;
public:
//**2**
float Circumference(){return 2 * PI * radius;}
float Area(){return PI * radius * radius;}
};
class Money
{
private:
float FencePrice;
float ConcretePrice;
public:
Money(float f,float c);
float TotalMoney(float fencelen, float conarea);
};
Money::Money(float f,float c)
{
//**3**
}
float Money::TotalMoney(float fencelen, float conarea)
{
//**4**
}
void main()
{
float radius,fence,concrete;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout > radius;
cout > fence;
cout > concrete;
Circle Pool(radius);
Circle PoolRim(radius + WIDTH);
Money mon(fence,concrete);
float totalmoney=mon.TotalMoney(PoolRim.Circumference(),(PoolRim.Area() - Pool.Area()));
cout << "The total money is RMB " << totalmoney << endl;
}
问答题使用VC6打开下的源程序文件modi3.cpp。类Person完成对人的姓名和年龄的绑定。函数fun()获得年龄比较大的姓名。然后输出这个姓名到屏幕。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)完成类的构造函数,请在注释//********1********后添加适当的语句。(2)完成构造函数对姓名的赋值,请在注释//********2********后添加适当的语句。(3)定义类的友元函数fun(),请在注释//********3********后添加适当的语句。(4)补充函数fun()的年龄比较,请在注释//********4********后添加适当的语句。注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。#include<iostream.h>classPerson{public://********1********{inti;for(i=0;sUserrName[i]!=0;i++){m_UserName[i]=sUserrName[i];}//********2********m_Old=nOld;}private:charm_UserName[32];intm_Old;//********3********};voidfun(char*s,Personperson1.m_UserName[i]!:0;i++){s[i]=person1.m_UserName[i];s[i+1]=0;}}else{for(inti=0;person2.m_UserName[i]!=0;i++){s[i]=person2.m_UserName[i];s[i+1]=0;}}}voidmain(){chars[32];Personp1("abc",20);Personp2("def",30);fun(s,p1,p2);coutsendl;return;}
问答题使用VC++6.0打开考生文件夹下的源程序文件2.cpp。请完成函数fun(char *s),使其具有以下功能: (1)把s中的大写字母转换成小写字母,把其中的小写字母转换成大写字母,并且在函数中调用写函数WriteFile()将结果输出到2.txt文件中。 例如:s="helloWORLD",则结果为“s="HELLOworld"”。 (2)完成函数WriteFile(char *s),把字符串输入文件中。 提示:打开文件使用的第二参数为“ios_base::binary|los_base::app”。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include<iostream> #include<fstream> #include<cmath> using namespace std; void WriteFile(char *s) void fun(char *s) void ClearFile() ofstream out1; out1.open("2.txt"); out1.close(); int main() ClearFile(); char s[1024]; cout<<"please input a string:"<<end1; cin.getline(s,1024); fun(s); return 0;
问答题请编写一个函数printdate(int year,int month,int day),该函数实现将输入的3个数字转换成英语数字纪年输出的功能,如输入March9,1978,则输出1978 3 9。注意:使用switch结构实现该函数的基本功能并应该能够判断错误的输入。部分源程序已存在文件test40_2.cpp中。请勿修改主函数main和其他函数中的任何内容,仅在函数printdate的花括号中填写若干语句。
源程序文件rest40_2.cpp清单如下:
#include<iostream.h>
void printdate(int year, int month, int day)
{
}
void main()
{
printdate(1978,3,9);
}
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,补充空出的代码。函数convert(cha*des,char*str)实现的功能是:
(1)如果字符串最后面有空格,则全部删除;
(2)转换后的数据放到des,并且指针作为返回值返回。
注意:不能修改程序的其他部分,只能补充convert()函数。
#include
#include
#defime MAXLEN 1024
char*convert(char*des,char*
str)
{
}
Void main()
{
char dest[MAXLEN];
char*string="abc def ":
cout << string <<"<--" <<
endl;
cout<
问答题使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。完成以下功能:每卖出一个瓜,则计算瓜的重量,还要计算所有卖出瓜的总重量以及总个数,同时允许退货,请按照以下的操作,把类补充完整
(1)定义类Cmelon的私有静态数据成员float型变量totalweight和int型变量totalNo,请在注释 ∥********1********后添加适当的语句。
(2)完成类Cmelon的带一个float型变量w的构造函数,并把这个W加到totalweight中,并且totalNo自加。请在注释 ∥********2********后添加适当的语句。
(3)在析构函数中,在totalweight中减去weight,然后totalNo自减,请在注释 ∥********3********后添加适当的语句。
(4)完成静态成员变量的初始化为0,请在注释∥********4********后添加适当的语句。
注意:增加代码,或者修改代码的位置已经用符号表示出来。请不要修改其他的程序代码。
#include
C1ass Cmelon
{
private:
float weight;
∥********1********
static int totalNo;
public:
Cmelon(float w)
{
∥********2********
totalweight +=w;
totalNo++;
}
~Cmelon()
{
∥********3********
totalweight 一=weight ;
}
void display()
{
cout<<“Sell a melon
with”<
问答题写出下列程序的运行结果。
#include <iostream>
using namespace std;
class Data
{
public:
Data (int x)
{
Data::x=x;
cout<<" Data cons. "<<endl;
}
~Data() {cout<<"Data des."<<endl;}
private:
int x;
};
class Base
{
public:
Base(int x) :d1(x) {cout<<"Base cons."<<endl;}
~Base() {cout<<"Base des."<<endl;}
private:
Data d1;
};
class Derived:public Base
{
public:
Derived (int x): Base(x),d2(x) {cout<<"Derived cons." <<endl;}
~Derived() {cout<<"Derived des."<<endl; }
private:
Data d2;
};
int main()
{
Derived obj(5);
return0;
}
问答题请使用VC6或使用[答题]菜单打开考生文件夹proj3下的工程prog3,其中声明了ValArray类,该类在内部维护一个动态分配的整型数组v。ValArray类的成员函数equals用于判断两个对象是否相等。两个ValArray对象相等,当且仅当两者的元素个数size相等,并且整型数组v的对应元素分别相等。如果两个对象相等,则equals返回true,否则返回false。请编写成员函数equals。在main函数中给出了一组测试数据,此种情况下程序的输出结果应为:
v1={1,2,3,4,5}
v2={1,2,3,4}
v3={1,2,3,4,6}
v4={1,2,3,4,5}
v1!=v2
v1!=v3
v1==v4
要求:
补充编制的内容写在“//********333********”与“//********666********”之间,不得修改程序的其他部分。
注意:程序最后将结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件,并且在本程序中调用。
//VatArray.h
#include <iostream>
using namespace std;
class ValArray {
int* v;
int size;
public:
ValArray const int* p, int n): size(n)
{
v = new int[size];
for (int i=0; i<size; i++)
v[i]=p[i];
}
~ValArray() { delete [] v; }
bool equals(const ValArray
void print(ostream
for (int i=0; i<size-1; i++)
out<<v[i]<<", ";
out<<v[size-1]<<'}';
}
};
void writeToFile(const char * );
//main.cpp
#include "ValArray.h"
bool ValArray::equals (const ValArray
const int b[]={1, 2, 3, 4};
const int c[]={1, 2, 3, 4, 6};
const int d[]={1, 2, 3, 4, 5};
ValArray vl (a, 5);
ValArray v2(b, 4);
ValArray v3(c, 5);
ValArray v4 (d, 5);
cout<<"v1=";
v1.print(cout);
cout<<endl;
cout<<"v2 =";
v2.print(cout);
cout<<endl;
cout<<"v3=";
v3.print(cout);
cout<<endl;
cout<<"v4=";
v4.print(cout);
cout<<endl;
cout<<"v1"<<(v1.equals (v2)?"==": "!=") <<"v2" <<endl;
cout<<"vl"<<(v1.equals (v3)?"==": "!=") <<"v3" <<endl;
cout<<"v1"<<(v1.equals (v4)?"==":"!=")<<"v4"<<endl;
writeToFile("");
return 0;
}
问答题使用VC++6.0打开
下的源程序文件1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并使程序输出的结果为
Max is 7
提示:max函数用于找出两个数中的最大值,并作为函数值返回。
注意:错误的语句在//******error******的下面,修改该语句即可。
试题程序:
# include<iostream>
using namespace std;
//******error******
int max(int a,int b)
{
if(a<b)
{
int t=a;
a=b;
b=t;
}
return b;
}
int main()
{
int m=-3;
int n=7;
//******error******
max(-3,n);
cout<<"Max is"<<m<<endl;
return 0;
}
问答题使用VC++6.0打开下的源程序文件1.cpp,该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:
number=l
number=10
number=100
注意:不要改动main函数,不能增加或删除行,也不能更改程序的结构,错误的语句在//******error******的下面。
试题程序:
#include<iostream.h>
class TC
{
public:
TC(int i)
{
number=i;
}
void SetNumber(int m)
{
number=m;
}
int GetNumber()const
{
return number;
}
void Print() const
{
cout<<"number="<<number<<endl;
}
private:
int number;
};
void main()
{
//********error********
TC obj1;
obj1.Print();
TC obj2(3);
//********error********
obj1.number=10;
//********error********
TC.SetNumber(100);
obj1.Print();
obj2.Print();
}
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序,使输入某年某月某日,可判断这一天是这一年的第几天。
程序分析:以3月5日为例,应该先把前两个月的天数加起来,然后再加上5天即本年的第几天(特殊情况:闰年输入月份大于3时需考虑多加一天)。
注意:只能补充函数func(int year,int month.intday),请勿改动其他部分的内容。
#inClude
int func(int year,int month,intday)
{
}
void msin()
{
cout<
问答题请使用VC6或使用【答题】菜单打开
proj2下的工程proj2,该工程中含有一个源程序文件proj2.cpp,请将堆栈类的定义补充完整。使程序的输出结果为:
The element of stack are: 4 3 2 1
注意:请勿修改主函数main和其他函数中的任何内容,只在横线处编写适当代码,不要改动程序中的其他内容,也不要删除或移动“// ****found****”。
//proj2.cpp
#include <iostream>
using namespace std;
const int Size =5;
class Stack;
class Item
{
public:
// ********found********
Item(const int
Item * next;
friend class Stack;
};
class Stack
{
public:
Stack():top(NULL) {}
~Stack();
int Pop();
void Push(const int
private:
Item * top;
};
Stack:: ~Stack()
{
Item *p=top, *q;
while (p!=NULL)
{
q = p -> next;
// ********found********
______; //释放p所指向的节点
p = q;
}
}
int Stack::Pop()
{
Item * temp;
int ret;
// ********found********
______; //使temp指向栈顶节点
ret = top -> item;
top = top -> next;
delete temp;
return ret;
}
void Stack::Push (const int
// ********found********
______; //使新节点的next指针指向栈顶数据
top = temp;
}
int main()
{
Stack s;
for(int i=1; i<Size; i ++)
s. Push(i);
cout << "The element of stack are:";
for(i=1; i<Size; i ++)
cout <<s.Pop() <<"/t";
return 0;
}
问答题使用VC6打开考生文件夹下的工程test39_3。此工程包含一个test39_3.cpp,其中定义了类ARRAY和其派生类 STUDENT,其中类ARRAY是一个多态数组,该数组可以存放学校中的各类人员,如学生等,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。
(1)定义类ARRAY的三个公有成员纯虚函数add(int a)、del(int d)和show(int s),它们的返回值类型都是void型的。请在注释“//**1**”之后添加适当的语句。
(2)添加派生类STUDENT的保护数据成员float型的二维数组table,使其有row行和s_col列,请在注释“//**2**”。之后添加适当的语句。
(3)完成派生类STUDENT的成员函数del(int s)的定义,实现把二维数组第s行删除的功能,即把该行清零,请在注释“//**3**”之后添加适当的语句。
(4)完成派生类STUDENT的成员函数show(int s)的定义,使其以格式“"跳格table[行号][列号]is_换行”依次输出s行的各个元素,请在注释“//**4**”之后添加适当的语句。
源程序文件test39_3.cpp清单如下:
#include <iostream.h>
#include <stdlib.h>
const int row = 100;
const int s_col = 3;
class ARRAY
{
public:
// ** 1 **
}
class STUDENT:public ARRAY
{
public:
virtual void add(int s)
{
cout<<"/tInput data of STUDENT."<<endl;
cout<<"/tFirst:";
cin>>table[s] [0];
cout<<"/tSecond:";
cin>>table[s] [1];
cout<<"/tThird:";
cin>>table[s] [2];
}
virtual void del(int s);
virtual void show(int s);
protected:
int i;
// ** 2 **
};
void STUDENT::del(int s)
{
// ** 3 **
}
void STUDENT::show(int s)
{
cout<<endl;
for(i=0;i<=s_col-1;i++)
{
// ** 4 **
}
}
int main()
{
STUDENT st;
ARRAY* ap;
ap=
ap->add(3);
ap->show(3);
ap->del(3);
ap->show(3);
return 0;
}
问答题请编写两个函数void sort(int sort(a,b); sort(a,b,C);
问答题使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码。 函数func(int d[],int n)的功能是将长度为num的数组d中的奇数扩大1倍,并存储到数组d中。 例如:2,15,6,-3,8,-11,9,24,50 返回4,30,12,-6,16,-22,18,48,100 将func(int d[],int num)函数补充完整。 注意:请勿改动主函数。 试题程序: #include<iostream.h> void func(int d[],int hum) int main() int Data[]=2,15,6,-3,8,-11,9,24,50; func(Data,9); for(int i=0;i<sizeof(Data)/sizeof(int);i++) cout<<Data[i]<<''; cout<<end1; return 0;
问答题请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程proj1,此工程包含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR ****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为: (4,4) 注意:只修改注释“//ERROR ****found****”的下一行语句,不要改动程序中的其他内容。//proj1.cpp#include<iostream>using namespace std;class Point{ ,public://ERROR**********found**********Point(double X,double Y)_X(x),_y(Y){} double GetX()const{return X;) double GetY()const{return_y;)//ERROR********found******** void Move (double xOff,doubleyOff)const { x+=xOff; y+=yOff;)protected: double x,y;};int main(){ Point pt(1.5,2.5); pt.Move(2.5,1.5);//ERROR********found******** 以下语句输出pt成一X和_y的值 cout<<’(’<<pt.』 <<’,’<<pt._y<<’)’<<endl; return 0; }
问答题使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:number1=anumber2=anumber1=anumber2=b注意:错误的语句在//******error******的下面,修改该语句即可。#include<iostream.h>class CMyClasS{public://******error******friend void SetValue(CMyClassobj,char c){obj.number1=c;obj.number2=c;}//******error******void SetValue(CMyClassobj,char c1,char c2){obj.number1=c1;obj.number2=c2;}void display(){cout<<"number1="<<number1<<endl;cout<<"number2="<<number2<<endl;}private:char number1,number2;};void main(){CMyClass t;SetValue(t,'a')jt.display();//******error******t.SetValue(&t,'a','b');t.display();}
