问答题使用Vc++6.0打开下的源程序文件2.cpp。完成fun函数,其功能是求出M行N列二维数组每行元素中的最小值,并计算它们的和,通过形参传回主函数并输出。
注意:不能修改程序的其他部分,只能修改fun函数。
试题程序:
#include<iostream.h>
#define M 2
#define N 4
void fun(int a[M][N], int *sum)
{
}
void main()
{
int x[M][N]={7, 6, 5, 2, 4, 2, 8, 3);
int s;
fun(x,
cout<<s<<endl;
return;
}
问答题请使用VC6或使用【答题】菜单打开考生目录proj3下的工程文件proj3,此工程中包含一个源程序文件proj3.cpp,补充编制C++程序proj3.cpp,其功能是读取文本文件in.dat中的全部内容,将文本存放到doc类的对象myDoc中。然后将myDoc中的字符序列反转,并输出到文件out.dat中。文件in.dat的长度不大于1000字节。 要求: 补充编制的内容写在“//**********333**********”与“//**********66666**********”两行之间。实现将myDoc中的字符序列反转,并将反转后的序列在屏幕上输出。不得修改程序的其他部分。 注意:程序最后已将结果输出到文件out.dat中,输出函数write To File已经给出并且调用。 //proj3.cpp #include<iostream> #include<fstream> #include<cstring> using namespace std; class doc { private: char*str;//文本字符串首地址 int length;//文本字符个数 public: //构造函数,读取文件内容,用于初始化新对象,filename是文件名字符串首地址 doc(char*filename); void reverse();//将字符序列反转 ~doc(); void writeToFile(char*filename); }; doc::doc(char*filename) { ifstream myFile(filename); int len=1001,tmp; str=new char[1en]; length=0; while((tmp=myFile.get())!=EOF) { str[length++]=trap; } str[length]='\0'; myFile.close();}void doc::reverse(){//将数组str中的length个字符中的第一个字符与最后一个字符交换,第二个字符与倒数第二个//字符交换……//**********333**********//**********666**********}doc::~doc(){ delete[]str;}void doc::writeToFile(char*filename){ ofstream outFile(filename); outFile<<str; outFile.close();}void main(){doc myDoc("in.dat");myDoc.reverse();myDoc.writeToFile("out.dat");}
问答题使用VC6打开下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序。函数fun(intn)的功能是实现对一个整数的加密,具体的加密方法是:一个四位长的整数,每位数字加上3然后除以9的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,然后返回得到的密码。程序输出:76542108注意不能修改其他部分的代码。#include<iostream.h>#include<cmath>intfun(intn){}intmain(){inti=1234;coutfun(i)endl;i=5678;coutfun(i)endl;return0;}
问答题请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“//ERROR****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
There are 2 object(s).
注意:只修改注释“//ERROR ****found****”的下一行语句,不要改动程序中的其他内容。
//proj1.cpp
#include <iostream>
using namespace std;
class MyClass {
public:
// ERROR **********found**********
MyClass(int i = 0) value = i
{ count ++; }
void Print()
{ cout <<"There are" << count <<"object(s)." << endl; }
private:
const int value;
static int count;
};
// ERROR **********found**********
static int MyClass::count = 0;
int main()
{
MyClass obj1, obj2;
// ERROR **********found**********
MyClass.Print();
return 0;
}
问答题请使用VC6或使用【答题】菜单打开
proj1下的工程proj1,此工程中含有一个源程序文件proj1.cpp。其中位于每个注释“// ERROR ****found****”之后的一行语句存在错误。请改正这些错误,使程序的输出结果为:
The value is:10
注意:只修改注释“// ERROR ****found****”的下一行语句,不要改动程序中的其他内容。
// proj1.cpp
#include <iostream>
using namespace std;
class Member {
// ERROR *******found*******
private:
Member(int val):value(val) {}
int value;
};
class MyClass {
Member _m;
public:
// ERROR *******found*******
MyClass(int val) {}
int GetValue() const {return _m.value;}
};
int main()
{
MyClass *obj = new MyClass (10);
// ERROR *******found*******
下面语句输出obj指向类中的value值
cout << "The value is:" << obj.GetValue() << endl;
delete obj;
return 0;
}
问答题请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,该工程中含有一个源程序文件proj2.cpp,请将堆栈类的定义补充完整。使程序的输出结果为: The element of stack are:4 3 2 1 注意:请勿修改主函数main和其他函数中的任何内容,只在横线处编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。//proj2.cpp#include<iostream>us ing namespace std;const int Size=5;class Stack;class Itern{public://**********found**********Item(const int)//构造函数 对item进行初始化private: int item; Item*next; friend class Stack; }; class Stack { public: Stack():top(NULL){} 一Stack(); int Pop(); void Push(const int//********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&val){ Item*temp=new Item(val);//********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或使用【答题】菜单打开考生文件夹pr092下的工程pros2。此工程中包含一个程序文件main.cpp,其中有“部门”类Department和“职工”类Staff的定义,还有主函数main的定义。在主函数中定义了两个“职工”对象,他们属于同一部门。程序展示,当该部门改换办公室后,这两个人的办公室也同时得到改变。请在程序中的横线处填写适当的代码并删除横线,以实现上述类定义。此程序的正确输出结果应为:
改换办公室前:
职工号:0789姓名:张三部门:人事处办公室:521
职工号:0513姓名:李四部门:人事处办公室:521
改换办公室后:
职工号:0789姓名:张三部门:人事处办公室:311
职工号:0513姓名:李四部门:人事处办公室:311
注意:只在横线处填写适当的代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。
#include
using namespace std;
class Department{ //“部门”类
public:
Department(const char*name,const char*office){
strcpy(this一>name,nanle);
//**********found**********
}
const char*getName()const{return name;}//返回部门名称
//**********found**********
const char*getOffice()const{________} //返回办公室房号
void changeOfficeTo(const char*office){ //改换为指定房号的另一个办公室
strcpy(this一>office,office);
}
private:
char name[20];//部门名称
char office[20];//部门所在办公室房号
};
class staff{//“职工”类
public:
//**********found**********
Staff(const char*my—id,const char木my_name,Department&my_dept):——{
strcpy(this一>staff id,my_id);
strcpy(this一>name,my_name);
}
const char*getlD()const{return staff_id;}
const char*getName()consl{return name;}
Department getDepartment()const{return dept;} char staff=id[10];//职工号
char name[20];//姓名
Department&dept;//所在部门
}; void showStaff(Staff&staff){
cout<<”职工号:”<
问答题综合应用
请使用"答题"菜单或使用VC6打开考生文件夹下的工程proj3,其中定义了Septinary类(七进制类),来表示一个七进制的数及其相关操作。和十进制的数"逢十进一"类似,七进制的数定义为"逢七进一"。
这里对Septinary类的数据成员做一下说明:
char* data; //存放七进制数的每一位数,data[0]为最高位。这里假设七进制的位数不超过99位。
createSeptinary函数由构造函数调用,用于将作为参数传入的十进制数转化为七进制数,并将七进制数的每一位存入data数组中。请编写createSeptinary函数使程序可以正确运行。注意:Septinary类中提供了numberToChar成员函数,将一个[0,6]之间的数转化为对应的ASCII码值。
在main函数中给出了一组测试数据,此情况下程序的输出应该是:
243
注意:只需在 //********333******** 和 //********666******** 之间填入所编写的若干语句,不要改动程序中的其他内容。
问答题使用VC6打开
下的源程序文件modi2.cpp。请完成函数fun(int x),该函数功能是将x的值转换成二进制数输出到屏幕,并且在函数中调用写函数WriteFile()将结果输出到modi2.txt文件中。
例如:x=13,13的二进制数字为1101,则输出到屏幕的为1101。
注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。
#include<iostream>
#include<fstream>
#include<cmath>
using namespace std;
void WriteFile(char* str)
{
ofstream out1;
out1.open("modi2.txt",ios_
base::binary|ios_base::app);
for(int i=0; str[i] != 0; i++)
out1.put( str[i]);
out1.close();
}
void fun(int x)
{
}
void ClearFile()
{
ofstream out1;
out1.open("modi2.txt");
out1.close();
}
int main()
{
ClearFile();
fun(13);
return 0;
}
问答题使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1)完成默认构造函数TestClass的定义,使得TestClass对象的类型为int,默认值为a=0,b=0,c=0,请在注释//********1********后添加适当的语句。 (2)定义类的私有成员变量,X、Y、Z类型为int,请在注释//********2********后添加适当的语句。 (3)定义类TestClass的数据成员count声明为静态整数型数据成员,请在注释//********3********后添加适当的语句。 (4)在构造函数中实现用count表示类TestClass被实现对象的次数。请在注释//********4********后添加适当的语句。 本程序的输出结果为: The point is(1,1,1) There are 3 point objects The point is(1,2,3) There are 3 point objects The point is(0,0,0) There are 3 point objects 注意:除在指定的位置添加语句之外,请不要改动程序的其他部分。#include<iostream>tlSing namespace Std;Class TestClass{public: //********1******** { X=a; Y=b; Z=c; //********4******** } void Display() { cout<<"The point is ("<<X<<','<<Y<<','<<Z<<')'<<endl; cout<< "There are "<<count<< "point obj ects." <<endl; }private: //********2******** //********3********};int TestClass::count=0;int main(){ TestClass p1(1,1,1),p2(1,2,3),p3(0,0,0); p1.Display(); p2.Display(); p3.Display(); return 0;}
问答题使用VC6打开考生文件夹proj1下的工程pwjl,其中定义了一个CD类。程序中位于每个//ERROR**********found**********下的语句行有错误,请加以更正,不得修改程序的其他部分。更正后程序的输出应该是: 歌唱祖国30 义勇军进行曲95 注意:只能修改每爪//ERROR**********found**********下的那一行,不要改动程序中的其他内容。#include<iostream>#include<cstring>using namespace std;class CD{ char name[20]; int number;public: void init(char*aa,int bb) { //ERROR**********found********** name=aa: number=bb; } char*getName(){ //ERROR**********found********** return*name: } int getNumber(){return number;} void output(){ //ERROR**********found********** cout<<name[20] <<''<<number<<endl; }};void main(){ CD dx,dy; dx.init("歌唱祖国",30); dy.init("义勇军进行曲",3*dx.getNumber()+5); dx.output(); dy.output();}
问答题请使用VC6或使用【答题】菜单打开
proj2下的工程proj2,该工程中含有一个源程序文件proj2.cpp。其中定义了类Set和用于测试该类的主函数main。类Set是一个用于描述字符集合的类,在该字符集合中,元素不能重复(将“a”和“A”视为不同元素),元素最大个数为100。为该类实现一个构造函数Set(char * s),它用一个字符串来构造一个集合对象,当字符串中出现重复字符时,只放入一个字符。此外,还要为该类实现另一个成员函数InSet(char c),用于测试一个字符c是否在一个集合中,若在,则返回true;否则返回false。
构造函数Set和成员函数InSet的部分实现代码已在文件proj2.cpp中给出,请在标有注释“// TODO:”的行中添加适当的代码,将这两个函数补充完整,以实现其功能。
提示:在实现构造函数时,可以调用InSet函数来判断一个字符是否已经在集合中。
注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“// ****found****”。
//proj2.cpp
#include <iostream>
using namespace std;
const int MAXNUM = 100;
class Set {
private:
int num; //元素个数
char setdata[MAXNUM]; //字符数组,用于存储集合元素
public:
Set(char *s); //构造函数,用字符串s构造一个集合对象
bool InSet(char c);
//判断一个字符c是否在集合中,若在,返回true,否则返回false
void Print() const; //输出集合中所有元素
};
Set::Set(char * s)
{
num = 0;
while (* s) {
// **********found**********
if (______) //TODO:添加代码,测试元素在集合中不存在
// **********found**********
______; //TODO:添加一条语句,加入元素至集合中
s++;
}
}
bool Set::InSet (char c)
{
for (int i = 0; i < num; i++)
// **********found**********
if (______) //TODO:添加代码,测试元素c是否与集合中某元素相同
// **********found**********
______; //TODO:添加一条语句,进行相应处理
return false;
}
void Set::Print () const
{
cout << "Set elements:" << endl;
for(int i = 0; i < num; i++)
cout << setdata[i] << "";
cout << endl;
}
int main()
{
char s[MAXNUM];
cin.getline (s, MAXNUM - 1); //从标准输入中读入一行
Set setobj(s); //构造对象setobj
setobj.Print(); //显示对象setobj中内容
return 0;
}
问答题请编写函数fun(),该函数的功能是判断字符串是否为回文,若是则函数返回1,主函数中输出YES:否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。 例如:字符串LEVEL是回文,而字符串123312就不是回文。 注意;部分源程序已存在文件test26_.cpp中。 请勿修改主函数main和其他函数中的任何内容,仅在函数fun的花括号中填写若干语句。 文件test26_2.cpp的内容如下: #include<iostream.h> #include<stdio.h> #define N 80 int fun(char*str) void main() char s[N]; cout<<"Enter a string:"<<endl; getss); cout<<"/n/n"; puts(s); if(fun(s)) cout<<"YES/n"; else cout<<"NO/n";
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。完成fun()数,其功能是:求出M行N列二维数组每行元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。
注意:不能修改程序的其他部分,只能修改fun()函数。
#inClude
#define M 2
#define N 4
void fun(int a[M][N],int*sum)
{
}
void main()
{
int X[M][N]={7,6,5,2,4,2,8,3};
int s;
fun(x,&s);
cout<
问答题请使用VC6或使用[答题]菜单打开考生文件夹proj1下的工程proj1。程序中位于每个“//ERROR ****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为: value=63 number=1 注意:只修改每个“//ERROR ****found****”下的那一行,不要改动程序中的其他内容。 #include <iostream> using namespace std; class MyClass int*p; const int N; public: //ERROR **********found********** MyClass(int val):N=1 p=new int; *p=val; //ERROR **********found********** ~MyClass() delete*p; friend void print(MyClass ; //ERROR **********found********** void MyClass::print(MyClass cout<<"number="<<obj.N<<endl; int main() MyClass obj(63); print(obj); return 0;
问答题请使用VC6或使用【答题】菜单打开考生文件夹proj1下的工程pmjl。该工程中包含程序文件main.cpp,其中有类CDate(“日期”)和主函数main的定义。程序中位于每个“//ERROR****found****”之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:原日期:2005—9—25更新后的日期:2006—4—1注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。#include<iostream>#include<CStdlib>usingnamespacestd;classCDate//日期类{//ERROR*********found*********protected:CDate()();CDate(intd,intm,inty){//ERROR*********found*********SetDate(intday=d,intmonth=m,intyear=y);},voidDisplay();//显示日期voidSetDate(intday,intmonth,intyear)//设置日期{m_nDay=day;m_nNonth=month;m_nYear=year;}private:intm_nDay;//日intmnNonth;//月intmnYear;//年};voidCDate::Display()//显示日期{//ERROR*********found*********tout<<m_nDay<<"一"<<m_nNonth<<"一"<<m._nYear;cout<<end1;}intmain(){CDated(25,9,2005);//调用构造函数初始化日期cout<<"原日期:";d.Display();d.SetDate(1,4,2006);//调用成员函数重新设置日期cout<<"更新后的日期:";d.Display();return0;}
问答题请使用VC6或使用【答题】菜单打开考生文件夹proj2下的工程proj2,此工程包含有一个源程序文件proj2.cpp,其中定义了Stack类和ArrayStaek类。Stack是一个用于表示数据结构“栈”的类,栈中的元素是字符型数据。Stack为抽象类,它只定义了栈的用户接口,如下所示:公有成员函数功能push入栈:在栈顶位置添加一个元素pop退栈:取出并返回栈顶元素ArrayStack是Stack的派生类,它实现了Stack定义的接口。ArrayStack内部使用动态分配的字符数组作为栈元素的存储空间。数据成员maxSize表示的是栈的最大容量,top用于记录栈顶的位置。成员函数push和poP分别实现具体的人栈和退栈操作。请在程序中的横线处填写适当的代码,然后删除横线,以实现上述功能。此程序的正确输出结果应为:a,b,cc,b,a注意:只在指定位置编写适当代码,不要改动程序中的其他内容,也不要删除或移动“//****found****”。//proj2.cpp#include<iostream>usingnamespacestd;clasSStack{public:virtualvoidpush(charc)=0;virtualcharpop()=0;};classArrayStack:publicStack{char*p;intmaxSize;inttop;public:ArrayStack(intS){top=0;maxSize=s;//********found********p=________;}~ArrayStack(){//********found********________;}voidpush(charc){if(top==maxSize){cerr<<"Overflow!\n";return;}//********found********________;top++;}charpop(){if(top==0){cerr<<"Underflow!\n";return'\0';}top--;//********found********________;}};voidf(Stack&sRef){charch[]={=a,'b','c');cout<<ch[0]<<","<<ch[1]<<","-<<ch[2]<<end1;sRef.push(ch[0]);sRef.push(ch[1]);sRef.push(ch[2]);cout<<sRef.pop()<<"'";cout<<sRef.pop()<<",";cout<<sRef.pop()<<end1;}intmain(){ArrayStackas(10);f(as);return0;}
问答题使用VC6打开
下的源程序文件modi2.cpp。阅读下列函数说明和代码。函数sort(int
int y=13;
int z=-3;
sort(x,y,z);
cout
x
","
y
","
z
endl;
return 0;
}
问答题使用VC6打开考生文件夹下的源程序文件modi3.cpp。其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。 (1) 重载运算符int,请在注释//********1********后添加适当的语句。 (2)重载运算符“<<”,请在注释//********2********后添加适当的语句。 (3)在主函数main()中定义变量i,并调用对象obi的int运算符,给变量赋初值为10,请在注释//********3********后添加适当的语句。 (4)调用obj的“<<”运算符输出: HelloTest 注意:增加代码,或者修改代码的伊鼠已经川符号表示出来。请不要修改其他的程序代码。#include<iostream>using namespace std;Class TestClass{public: //********1******** { cout<<"int"<<endl; return 10; } //********2******** { cout<<str<<endl; }};int main(){ TestClass obj; //********3******** //********4******** return 0;}
问答题使用VC6打开源程序文件modi3.cpp。此程序的功能是将out1.txt文件中的内容输出到屏幕与文件中。输出如下:李一 1.78m 21王一 1.65m 23out2.txt文件的内容如下:李一 1.78m 21王一 1.65m 23其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。(1)以输入方式打开文件out1.txt,请在注释//********1********后添加适当的语句。(2)以输出方式打开文件out2.txt,请在注释//********2********后添加适当的语句。(3)从文件中获得一个字符,判断是否结束,如果结束则退出输出。请在注释//********3********后添加适当的语句。(4)把获得的字符输出到文件中,请在注释//********4********后添加适当的语句。注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#include<iostream.h>#include<fstream.h>#include<stdlib.h>void main(){char ch;fstream infile,outfile;//********1********infile.open("out1.txt");if(!infile){cout<<"out1.txt文件不能打开"<<endl;abort();}//********2********outfile.open("out2.txt");if(!outfile){cout<<"out2.txt文件不能打开"<<endl;abort();}//********3********while(){cout<<ch;//********4********}cout<<endl;infile.close();outfile.close(),}