问答题请使用VC6或使用【答题】菜单打开考生文件夹projl下的工程projl。程序中位于每个“//ERROR****found料****之后的一行语句有错误,请加以改正。改正后程序的输出结果应为:
Name:Smith Age:21 ID:99999 CourseNum:12
Record:970
注意:只修改每个“//ERROR****found****”下的那一行,不要改动程序中的其他内容。
#include
using namespace std;
class Studentlnfo
{
protected:
//ERROR********************found****************
char Name;
int Age;
int ID:
int CourseNum;
float Record;
public:
Studentlnfo(char*name,int Age,int ID,int coumeNum,float record);
//ERROR ********************found********************
void~Studentlnfo(){}
float AverageRecord(){
return Record/CourseNum;
}
void show()const{
coutID=ID:
CourseNum=courseNum:
Record=record;
}
int main()
{
Studentlnfo st(’’Smith”,21,99999,12,970);
st.show();
return 0;
}
问答题给定一个函数,其函数功能为:使10个整数按由小到大的顺序排列。在主函数中输入10个数,并输出结果。使用VC6打开考生文件夹下的工程RevProj5。此工程包含一个源程序文件RevMain5.cpp,该程序实现上述功能。但此程序运行有问题。请找出错误的地方,改正后将此程序调试正确。 注意:不得删行或增行,也不得更改程序结构。 文件RevMain5.cpp中的程序清单如下: //RevMain5.cpp #include<iostream> #include<iomanip> using namespace std; int main() void sort(int array[],int n); int data[10],*p,i; cout<<"Input 10 numbers/n"; for (i=0; i<10; i++) cin>>data [i]; cout<<"the origined array is:"; for (p=data;p<data+10;p++) if((p- cout<<setw (5) <<*p; sort (data, 10); cout<<"/n the present array is:"; for(p=data;p〈data+10;p++) if((p- cout<<setw (5)<<*p; void sort(int array[],int n) /* * * * * * * * *found * * * * * * * * * */ for(p1=array;p1<array+(n-1) ;p1++) for (p2=p1+1 ;p2<array+n;p2++) if (*p1>*p2) /* * * * * * * * *found * * * * * * * * * */ temp=*p1; *p1=*p2; *p2=*p1;
问答题使用VC6打开考生文件夹下的工程test14_3,此工程包含一个test14_3.cpp,其中定义了类File,但类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)完成构造函数的定义,使数据成员filename,content指向为空。请在注释“//**1**”之后添加适当的语句; (2)完成函数set_contents的定义,该函数为content申请新的空间来存储new_content的内容,成功返回true,失败返回false。请在注释“//**2**”之后添加适当的语句; (3)完成成员函数copy(File &source,File &target)的定义,该函数实现将source的内容拷贝至target的功能,注意必须使用已经定义的成员函数来实现。请在注释“//**3**”之后添加适当的语句: (4)完成析构函数的定义,要求释放content指向的空间。请在注释“//**4**”之后添加适当的语句。 输出结果如下: file2:file1 contents file2:file2 contents 注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。 源程序文件testl4_3.cpp清单如下: #include<iostream.h> #include<string.h> class File private: char file_name[64]; char*contents; public: File(char*filename) // ** 1 ** ; File::~File() // ** 4 ** void printfile()cout<<file_name<<":"<<contents<<endl;) friend bool copy(File & source,File & target); bool set_contents(char * new_contents); ; bool File::set_contents(char*new_contents) // ** 2 ** if(contents==NULL) return false; strcpy(contents,new_contents); return true; bool copy(File &source,File &target) // ** 3 ** void main) File f1("filel"),f2("file2"); f1.set_contents("filel contents"); copy(f1,f2); f2.printfile(); f2.set_contents("file2 contents,); f2.printfile();
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码。函数func(intd[],int n)的功能是将长度为num的数组d的每一个数字是奇数的扩大1倍,并存储到数组d中。 例如:1 2 3 4 5 6 7 8 9 返回:2 2 6 4 l 0 6 14 8 18 将func(int d[],int num)补充完整。 注意:请勿改动主函数。#include<iostream.h>void func(int d[],int num){}int main(){ int Data[]={1,2,3,4,5,6,7,8,9); func(Data,9); for(int i=0;i<sizeof(Data)/SiZeof(int); i++) { cout<<Data[i]<<‘’; } cout<<endl; return 0;}
问答题请使用VC6或使用[答题]菜单打开考生文件夹proj3下的工程文件proj3。本题创建一个小型字符串类,字符串长度不超过100。程序文件包括proj3.h、proj3.cpp、writeToFile.obj。补充完成重载赋值运算符函数,完成深复制功能。 屏幕上输出的正确结果应该是: Hello! Happy new year! 要求: 补充编制的内容写在“//**********333**********”与“//**********666**********”两行之间。不得修改程序的其他部分。 注意: 程序最后调用writeToFile函数,使用另一组不同的测试数据,将不同的运行结果输出到文件out.dat中。输出函数writeToFile已经编译为obj文件。 //proj3.h #include<iostream> #include<iomanip> using namespace std; class MiniString public: friend ostream return output; friend istream //用于输入的临时数组 temp[0]='/0'; //初始为空字符串 input>>setw(100)>>temp; int inLen=strlen(temp); //输入字符长度 if(inLen!=0) s.length=inLen; //赋长度 if(s.sPtr!=0)delete[]s.sPtr;//避免内存泄漏 s.sPtr=new char[s.length+1]; strcpy(s.sPtr,temp); //如果s不是空指针,则复制内容 else s.sPtr[0]='/0'; //如果s是空指针,则为空字符串 return input; void modString const char *string2)//更改字符串内容 if(string2 !=0) //如果string2不是空指针,则复制内容 if (strlen(string2)!=length) length=strlen(string2); delete[]sPtr; sPtr=new char [length+1]; //分配内存 strcpy(sPtr,string2); else sPtr[0]='/0'; //如果string2是空指针,则为空字符串 MiniString MiniString(const char*s=" "):length((s!=0)?strlen(s):0) //构造函数 sPtr=0; if(length!=0) setString(s); ~MiniString()//析构函数 delete[]sPtr; private: int length; //字符串长度 char*sPtr; //指向字符串起始位置 void setString ( const char *string2)//辅助函数 sPtr=new char[strlen(string2)+1]; //分配内存 if(string2 !=0)strcpy(sPtr,string2); //如果string2不是空指针,则复制内容 else sPtr[0]='/0'; //如果string2是空指针,则为空字符串 ; //proj3.cpp #include<iostream> #include<iomanip> using namespace std; #include "proj 3.h" MiniString void writeToFile(const char*); str2=str1;//使用重载的赋值运算符 str2.modString("Happy new year!"); cout<<str1<<'/n'; cout<<str2<<'/n'; writeToFile(" "); return 0;
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。请完成函数fun(char*s1,char*s2),此函数的功能是计算s1中出现s2的个数,当不出现时,则返回0。如: s1为“1 1 12223333aaaaeeffd” s2为“11”则返回1 s2为“aa”则返回2注意:请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。#inClude<iOStream.h>//注意只能使用int类型,不能类型转换int fun(char*s1,char*s2){}Void main(){ char S1[1 02 4]; char S2[2 5 6]; cout<<“please input a string:”<<end1; cin.getline(S 1,1 02 4); cout<<“please input otherstring:”<<end1; cin.getline(S2,2 5 6); cout<<fun(S1,S2); cout<<end1; return;}
问答题使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使该程序的输出结果为:
100
注意:错误的语句在∥********error********的下面,修改该语句即可。
#include
StatiC int x=50;
int t=0;
int*func(int X,int Y,int z)
{
t=t+x+y+Z;
∥********error********
return t;
};
void main()
{
int y=3 0;
int x=1 0;
int z=2 0;
∥********error********
x=x;
∥********error********
cout<
问答题使用VC++6.0打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数DecToBin(char*des,intn)的功能是将十进制数据n转换成二进制数据,并将转换结果存放在des中。
例如:58的二进制数据为111010,则
DecToBin(char*des,58);
cout< 输出结果为:111010
注意:不能修改程序的其他部分,只能补充DecToBin(char*des,intn)函数。
试题程序:
#include
#defineMAXLEN1024
voidDecToBin(char*des,intn)
{
}
voidmain()
{
chardes[MAXLEN];
intn=58:
DecToBin(des,n);
cout< return;
}
问答题使用VC6打开考生文件夹下的源程序文件modi2.cpp。阅读下列函数说明和代码,完成空出部分程序,使该程序输出倒9×9口诀。
程序分析:分行与列考虑,共9行9列,设置两个变量i和j,i控制行,j控制列。
程序运行结果如下:
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45
6*9=54 7*9=
63 8*9=72 9*9=81
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40
6*8=48 7*8=
56 8*8=64
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=
42 7*7=49
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30
6*6=36
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*4=4 2*4=8 3*4=12 4*4=16
1*3=3 2*3=6 3*3=9
1*2=2 2*2=4
1*1=1
注意:只能补充函数show(),请勿改动其他部分的内容。
#include
void show()
{
}
void main()
{
cout<<“9*9倒乘法口诀”<
问答题使用VC++6.0打开下的源程序文件3.cpp。类People包括姓名和年龄两个字段。函数fun获得年龄比较大的人的姓名,然后输出这个姓名到屏幕。
其中定义的类并不完整,按要求完成下列操作,将类的定义补充完整。
(1)完成类的构造函数功能,清在注释1后添加适当的语句。
(2)完成构造函数对姓名的赋值,请在注释2后添加适当的语句。
(3)定义类的友元函数fun,请在注释3后添加适当的语句。
(4)补充函数fun的年龄比较功能,请在注释4后添加适当的语句。
注意:增加或者修改代码的位置已经用符号表示出来,请不要修改其他的程序代码。
试题程序:
#include<iostream.h>
class People
{
public:
//********1********
{
int i;
for(i=0; sUserName[-i]!=0; i++)
{m_UserName[i]=sUserName[i];
}
//********2********
m_Old=nOld;
}
private:
char m_UserName[32];
int m_Old;
//********3*********
};
void fun(char*s, People person1.m_UserName[i]!=0; i++)
{
s[i]=person1.m_UserName[i];
s[i+1]=0;
}
}
else
{
for(int i=0; person2. m_UserName[i]!=0; i++)
{s[i]=person2. m_UserName[i];
s[i+1]=0;
}
}
}
void main()
{
char s[32];
People p1("abc", 20);
People p2("def", 30);
fun(s, p1, p2);
cout<<s<<endl;
return;
}
问答题使用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打开考生文件夹下的工程test24_3,此工程包含一个源程序文件test24_3.cpp,其中定义了抽象类point和它的派生类line,但它们的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)定义类point的构造函数,函数含参数i和j它们都是int型数据,默认值都是0,用i和j分别将point的数据成员x0和y0初始化。请在注释“//**1**”之后添加适当的语句。 (2)完成类point的成员函数纯虚函数void set()和void draw()的定义,请在注释“//**2**”之后添加适当的语句。 (3)添加类line的构造函数,函数含参数i,j,m和n,它们都是int型数据,默认值都是0,用i和j分别将point的数据成员x0和y0初始化。请在注释“//**3**”之后添加适当的语句。输出结果如下: line::set()called. 注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。 源程序文件test24_3.cpp清单如下: #include<iostream.h> class point public: //**1** //**2** protected: int xO,yO; class line: public point public: //**3** x1=m; y1=n; void set() cout<<"line::set() called./n"; void draw() cout<<"line::draw() called./n"; protected: int x1,y1; ; void main() line *lineobj = new line; 1ineobj->set();
问答题使用VC6打开考生文件夹下的源程序文件NOdil.cpp,该程序运行时有错误,请改正程序中的错误。本程序要求实现的功能为:从键盘输入一个字符串,并将结果保存到文件modi1.txt中。
注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在
∥********error********的下面。
#include
#include
∥********error********
using std;
void WriteFile(char*s)
{
ofstream out1;
∥********error********
outl.open(“modil.txt”,
binary | app);
for(int i=0;S[i]!=0;i++)
{
∥********error********
out1.puts(S[i]);
}
out1.close();
}
Void ClearFile()
{
OfStream outl;
outl.open(“modil.txt”);
outl.clOSe();
}
int main()
{
char s[1 02 4];
ClearFile();
cout<<“please input a string:”<
问答题用VC6打开考生文件夹下的源程序文件modi3.cpp,这个程序完成输出到屏幕一些特定的信息,但工程有错误或者不完整,请完成以下功能:(1)初始化m Num2的值为j,请在注释//********1********后添加适当的语句。(2)补充全局函数fun()使之能够调用类TestClass的成员变量,请在注释//********2********后添加适当的语句。(3)初始化静态变量,请在注释//********3********后添加适当的语句。(4)修改注释//********4********后的语句。使得程序输出以下内容:m_Num1=1m_Num2=2m_Num3=1m_Num1=4m_Num2=2m_Num3=7注意:仅在函数指定位置添加语句,请勿改动主函数main与其他函数中的任何内容。#include<iostream.h>ClasS TestClasS{public://********1********TestClass(int i,int j){m_Num1=i;m_Num3+=i;}void Print(){cout<<"m_Num1="<<m_Num1<<endl;cout<<"m_Num2="<<m-Num2<<endl;cout<<"m Num3="<<m Num3<<endl;)void Add(int i){m Num3+=i;}private:int m Num1;const int m Num2;static int m Num3;//********2********};//********3********void fun(){TestClass Num(1,2);Num.m Num1=4;//********4********Num.Add();Num.Print();}void main(){TestClass Num(1,2);Num.Print()jfun();return;}
问答题编写函数fun(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并做为函数值返回。例如:n为1000时,函数值应为s=153.909064。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序: #include <conio.h> #include <math.h> #include <stdio.h> double fun(int n) main() clrscr(); printf("s=%f/n", fun(1000));
问答题试题源程序文件清单如下://Matrix.h#include<iostream>#include<iomanip>usingnamespacestd;constintM=18:constintN=18:classMatrixintarray[M][N];public:Matrix()intgetElement(int.i,intj)constreturnarray[i][j];voiclsetElement(inti,intj,intvalue)array[i][j]=value;intmax_value()const;voidshow(constchar*s)constcout<<endl<<s;for(inti=0;i<M;i++)cout<<endl;for(intj=0;j<N;j++)cout<<setw(4)<<array[i][j];;voidreadFromFile(constchar*,MatrixvoidwriteToFile(char*,constMatrix//main.cpp#include"Matrix.h"#include<fstream>voidreadFromFile(constchar*f,Matrixif(infile.fail())cerr<<"打开输入文件失败!";return;intk;for(int,i=0;i<M;i++)for(intj=0;j<N;j++)infile>>k;m.setElement(i,j,k);intMatrix::max_value()const//********33********intmain()Matrixm;readFromFile("K://K01//61010001//in.dat",m);m.show("Matrix:");cout<<endl<<"最大元素:"<<m.max_value()<<endl;writeToFile("K://K01//61010001//",m);return0;
问答题使用VC6打开考生文件夹下的源程序文件modi3.cpp。学校教务处要为任课老师开发一个学生管理系统,需求如下:
(1)学生的信息是要受到严密保护和限制的,包括姓名、五个英文字符的学号,以及精确到小数点后一位的一科成绩,只有任课老师可以修改,如果学生升学了,比如由本科升到研究生,原来的信息,还有效,而只需添加研究生的必要信息,不过现在不必马上实现,但应当有所考虑。
(2)学生的所仃信息可以查看,但也只有学生自己才有这个权利。
(3)学生的信息可以从文件中读取来构造信息库,需要把信息输出到屏幕以便核实,但这需耍任课老师来完成。
(4)老师能提供所教学生的完整信息列表,同时可按成绩高低排序。
(5)为了便于学校评定奖学金,需要单独查找成绩最高的同学(一般不采用把成绩单令部排列后来选取,可能这比较耗费时间,岁然要求不太合理.但要按用户的需求操作,同时需要指出的是,如果成绩最高者有数名,需要—一列出)。
(6)由于学校的机器比较老,内存严重不足,每个老师带的学生数不一样,但也不会超过50人。
以上功能的程序框架已经形成,考生需要按照需求来逐个实现。
(1)请在注释∥********1********之后添加适当的语句,以便实现功能需求(1)。
(2)请在注释∥********2********处添加适当的语句,成绩单排序功能。
(3)请在注释∥********3********处实现查找成绩最高学生名单。
无需修改main()主函数,当得到下面的结粜,该系统可能被采用。
输入的学生信息:
姓名 学号 成绩
周华0001 78.5
李强0002 98
刘星0003 89
贺兰0004 78
周红0005 76.5
赵邦0006 85
高俊0007 98
排序后的学生信息:
姓名 学号 成绩
李强0002 98
高俊0007 98
刘星0003 89
赵邦 0006 85
周华000l 78.5
贺兰 0004 78
周红0005 76.5
查询成绩最高的学生信息:
高俊0007 98
李强0002 98
注意:除在指定位置添加语句之外,请不要改动程序中的其他内容。
#include
#include
#include
#define NMAX 50
class Teacher;
class Student
{
public:
student(char *name=“未知
”,char *number=“0 0 0 0 0”,double
mark=0.0)
{
int len=strlen(name);
m name=new char[len+1];
strcpy(m name,name);
strcpy(m number,number);
m mark=mark;
}
Student()
{
delete[]m name;
}
void DisplayMsg()
{
cout>name;
in>>number;
in>>mark;
m—count++;
m pStu[i]=new Student
(name,number,mark);
coutm—mark>
m_pStu[index]->m—mark)
index=j;
}
∥********2********
if()
{
Student*ps=m pStu[i];
m_pStu[i]=m_pStu
[index];
m.pStu[index]=ps;
}
}
}
void Teacher::Display()
{
coutDisplayMsg();
}
}
int Teacher::BestScore(Student
*pS[])
int index=0;
int count=1;
∥********3********
for(int j=1; jm—mark>
m pStu[index]一>m mark)
{
count=1;
index=j;
pS[count++]=m pStu
[index];
}
else if(m_pstu[j]>m—mark
=m_pStu[index]一>m_mark)
{
index=j;
pS[count++]=m pStu
[index];
}
}
return count;
}
void main()
{
Teacher Teacher;
Student*pStudent[NMAX];
cout
9isplayMsg();
}
}
问答题使用VC6打开考生文件夹下的源程序文件modi1.cpp,该程序运行时有错,请改正其中的错误,使程序正常运行,并且使程序输出的结果为:a=7,b=0a=8,b=10注意:错误的语句在//******error******的下面,修改该语句即可。#include<iostream.h>Class CObj{public://********error********friend void func(CObj&,int,int);void display(){//********error********cout<<"a="<<a<",b="<<<<b<<endl;}private:int a,b;};void func(CObj& obj,int t){obj.a=t;obj.b=0;}void func(CObj& obj,int t,int j){obj.a=t,obj.b=j,}void main(){//********error********CObj obj1func(obj1,7);obj1.display().;func(obj1,8,10);obj1.display();}
问答题使用VC6打开考生文件夹下的工程test15_3。此工程包含一个test15_3.cpp,其中定义了类Time和Timex,Timex公有继承Time,但定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)完成类Time构造函数的定义,将数据成员hours和minutes分别初始化为参数new_hours和new_minutes的值。请在注释“//**1**”之后添加适当的语句。 (2)完成类Timex的构造函数的定义,注意参数的传递。请在注释“//**2**”之后添加适当的语句。 (3)请按时间格式“hour:minute”和“hour:minute:second”分别输出对象time1和time2所表示的时间,注意必须使用已经定义的成员函数。请在注释“//**3**”之后添加适当的语句。 输出结果如下: 20:30 10:45:34 注意:除在指定的位置添加语句外,请不要改动程序中的其他语句。 源程序文件test15_3.cpp清单如下: #include<iostream.h> class Time public: Time(int new_hours,int new_minutes) // ** 1 ** int get_hours(); int get_minutes(); protected: int hours,minutes; ; int Time::get_hours() return hours; int Time::get_minutes() return minutes; class Timex:public Time public: Timex(int new_hours,int new_minutes,int new_seconds); int get_seconds(); protected: int seconds; ; // ** 2 ** seconds=new_seconds; int Timex::get_seconds() return seconds; void main() Time time1(20,30); Timex time2(10,45,34); // ** 3 **
问答题使用VC6打开考生文件夹下的工程test37_3。此工程包含一个test37_3.cpp,其中定义了类Letter和Number以及Grid,其中Grid类由Letter类和Number类public派生,但三个类的定义并不完整。请按要求完成下列操作,将程序补充完整。 (1)添加类Letter的带一个参数c的构造函数,c是char型的数据,默认值为'A',该函数把参数c的值赋给类的保护成员ch,请在注释“//**1**”之后添加适当的语句。 (2)添加类Number的带一个参数n的构造函数,n是int型的数据,默认值为0,该函数把参数n的值赋给类的保护成员num,请在注释“//**2**”之后添加适当的语句。 (3)添加派生类Grid构造函数的定义,传入的参数为char型的c和血型的n,并将其分别赋值给基类的ch和num,请在注释“//**3**”之后添加适当的语句。 (4)完成派生类Grid的友元函数——“<<”运算符重载的定义,使其以格式“[g.ch,g.num]”输出,请在注释“//**4 **”之后添加适当的语句。 源程序文件test37_3.cpp清单如下: #include<iost ream. h> class Letter protected: char ch; public: // ** 1 ** ; class Number protected: int num; public: // ** 2 ** ; class Grid : public Letter, public Number public: // ** 3 ** friend ostream ; // ** 4 ** o << "[" << g.ch << ", "<< g.num << "]"; return o; int main ( ) Grid g('C', 3); cout << "Grid reference: "<< g << end1; return 0;