题目内容 (请给出正确答案)
[主观题]

●试题五 阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。 【说明】 ①定义类

●试题五

阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。

【说明】

①定义类Table的私有数据成员x和y,分别用于表示九九表中的两个乘数(x*y),它们都是int型的数据。

②完成类Table的成员函数print()的定义,该函数以"x*y=z"的格式打印出九九表中的一个乘法算式,请使用格式化输出函数printf实现。

③完成类Table9的成员函数print()的定义,该函数调用基类Table的print()函数,将九九表输出到屏幕。

④补充主函数,在屏幕上输出九九表,以便测试所定义的类的正确性。

源程序文件test8_3.cpp清单如下:

#include<iostream.h>

#include<stdio.h>

class Table

{

(1)

int z;

public:

void print(int x,int y,int z);

};

void Table::print (int x,int y,int z)

{

(2)

}

class Table9:public Table

{

public:

void print();

};

void Table9::print()

{

(3)

int x,y,z;

for (i=1;i<10;i++)

{

for(j=1;j<i+1;j++)

{

x=i;

y=j;

z=i*j;

Table::print(y,x,z);

}

printf("\n");

}

}

main()

{

//**4**

return 0;

}

提问人:网友helsun1984 发布时间:2022-01-06
参考答案
查看官方参考答案
如搜索结果不匹配,请 联系老师 获取答案
更多“●试题五 阅读下列程序说明和C++代码,将应填入(n)处的字…”相关的问题
第1题
请教:2016年计算机二级C++基础练习三简答题9如何解答?

使用VC6打开考生文件夹下的源程序文件2.cpp。阅读下列函数说明和代码,补充空出的代码。函数sum(intn)返回1,2,3,…,n的和。其中n大于0。

程序要求使用递归实现上述功能。

注意:不能修改程序的其他部分,只能补充sum函数。

试题程序:

#include

#include

intsum(intn)

{

}

voidmain()

{

cout<<"1+2+3+…+100="<

endl;

return;

}

点击查看答案
第2题
试题五(共15分) 阅读以下说明和 C++代码,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。

试题五(共15分)

阅读以下说明和 C++代码,将应填入 (n) 处的语句或语句成分写在答题纸的对应栏内。

【说明】

某数据文件students.txt的内容为100名学生的学号和成绩,下面的程序将文件中的数据全部读入对象数组,按分数从高到低进行排序后选出排名前 30%的学生。

【C++代码】

#include <iostream>

#include <fstream>

#include <string>

using namespace std;

class Student {

private:

string sNO; //学号

int credit; //分数

public:

Student(string a,int b) { sNO = a; credit = b;}

Student(){}

int getCredit();

void out();

};

(1) ::getCredit() {

return credit;

}

(2) ::out() {

cout << "SNO: " << sNO << ", Credit=" << credit << endl;

}

class SortStudent {

public:

void sort(Student *s, int n);

SortStudent(){}

};

void SortStudent::sort(Student *s,int n) {

for(int i = 0; i < n-1; i++) {

for(int j = i+1; j < n; j++) {

if(s[i]. (3) < s[j]. (4) ) {

Student temp = s[i]; s[i] = s[j]; s[j] = temp;

}

}

}

}

int main(int argc, char* argv[])

{

const int number = 100; //学生总数

ifstream students;

students.open("students.txt");

if(!students.is_open()) {

throw 0;

}

Student *testStudent = (5) [number];

int k = 0;

string s;

while (getline(students,s,'\n')) { //每次读取一个学生的学号和成绩

Student student(s.substr(0,s.find(',')), atoi(s.substr(s.find(',')+1).c_str()));

testStudent[k++] = student;

}

students.close();

(6) ;

ss.sort(testStudent,k);

cout <<"top 30%: "<<endl;

for(k = 0; k < number * 0.3; k++) {

testStudent[k].out();

}

delete []testStudent;

return 0;

}

点击查看答案
第3题
试题五(共 15分) 阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。 【说明】

试题五(共 15分)

阅读以下说明和C++代码,将应填入 (n) 处的字句写在答题纸的对应栏内。

【说明】

已知类 LinkedList 表示列表类,该类具有四个方法:addElement()、lastElement()、umberOfElement()以及removeLastElement()。四个方法的含义分别为:

void addElement(Object): 在列表尾部添加一个对象;

Object lastElement(): 返回列表尾部对象;

int numberOfElement(): 返回列表中对象个数;

void removeLastElement(): 删除列表尾部的对象。

现需要借助LinkedList来实现一个Stack栈类,C++代码1和C++代码2分别采用继承和组合的方式实现。

【C++代码 1】

class Stack :public LinkedList{

public:

void push(Object o){ addElement(o); }; //压栈

Object peek(){ return (1) ; }; //获取栈顶元素

bool isEmpty(){ //判断栈是否为空

return numberOfElement() == 0;

};

Object pop(){ //弹栈

Object o = lastElement();

(2) ;

return o;

};

};

【C++代码 2】

class Stack {

private:

(3) ;

public:

void push(Object o){ //压栈

list.addElement(o);

};

Object peek(){ //获取栈顶元素

return list. (4) ;

};

bool isEmpty(){ //判断栈是否为空

return list.numberOfElement() == 0;

};

Object pop(){//弹栈

Object o = list.lastElement();

list.removeLastElement();

return o;

};

};

【问题】

若类LinkedList新增加了一个公有的方法removeElement(int index),用于删除列表中第index个元素,则在用继承和组合两种实现栈类Stack的方式中,哪种方式下Stack对象可访问方法removeElement(int index)? (5) (A. 继承 B. 组合)

点击查看答案
第4题
●试题六 阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。 【说明】 ①为类Ci

●试题六

阅读下列程序说明和C++代码,将应填入(n)处的字句写在答卷的对应栏内。

【说明】

①为类Circle增加一个构造函数,该函数有一个参数,并在构造时将该参数值赋给成员radius。将该函数实现为一个非内联函数,并且使用参数列表的方式将类成员赋值。

②为类Circle增加一个成员函数print(),使得可以输出有关圆的信息,比如下列程序

Circle c;

C.SetRadius (5) ;

C.Print();

将输出:The circle has radius of 5!

③完成友元函数void CompareR(Circle *c1,Circle *c2)的定义,在屏幕中输出c1与c2比较radius大小结果,要求使用if-else结构完成。

输出结果如下:

The circle has radus of 5!

The circle has radius of 10!

c1<c2

源程序文件test7_3.cpp清单如下:

#include<iostream.h>

class Circle{

public:

Circle():radius (5) {}

(1)

void SetRadius(int r) { radius=r; }

int GetRadius() { return radius; }

(2)

friend void CompareR(Circle *c1,Circle *c2);

private:

int radius;

};

void CompareR(Circle *c1,Circle *c2)

{

(3)

cout<<"c1>c2"<<endl;

else

if ((c1->GetRadius())==(c2->GetRadius()))

cout<<"c1=c2"<<endl;

else

if ((c1->GetRadius())<(c2->GetRadius()))

cout<<"c1<c2"<<endl;

}

void main()

{

Circle c1;

c1.SetRadius (5) ;

c1.Print();

Circle c2 (10) ;

c2.Print();

CompareR(&c1,&c2);

}

点击查看答案
第5题
阅读以下说明和C++码,将应填入(n)处的字名写在对应栏内。 从下列的3道试题(试题五至试题七)中任选

阅读以下说明和C++码,将应填入(n)处的字名写在对应栏内。

从下列的3道试题(试题五至试题七)中任选1道解答。

如果解答的试题数超过1道,则题号小的1道解答有效。

[说明] 编写程序,把从键盘上输入的一批整数(以-1作为终止输入的标志)保存到文本文件“a: xxk1. dat”中。

(1)

include <fstream. h >

include < stdlib. h >

void main () {

(2)

if (! four) {

cerr < <“文件没有找开!” < <end1;

exit (1);

}

int x;

cin > >x;

while((3)){

(4)

cin> >x;

}

(5)

}

点击查看答案
第6题
●试题七 阅读以下说明和C++代码,将解答写入答题纸的对应栏内。 【说明】 请编写一个函数int SeqS

●试题七

阅读以下说明和C++代码,将解答写入答题纸的对应栏内。

【说明】

请编写一个函数int SeqSearch(int list[],int start,int n,int key),该函数从start开始,在大小为n的数组list中查找key值,返回最先找到的key值的位置,如果没有找到则返回-1。请修改程序中画线部分的错误并将不同情况下的输出结果补充完整。

【程序】

文件search.cpp的内容如下:

#include <iostream.h>

int SeqSearch(int list[],int start,int n,int key)

{

for(int i=start;i<=n;i++)// (1)

{

if(list[i]=key) // (2)

{

return i;

}

}

return -1;

}

void main()

{

int A[10];

int key,count=0,pos;

cout<<" Enter a list of 10 integers: ";

for(pos=0;pos<10;pos++)

{

cin>>A; // (3)

}

cout<<"Enter a key: ";

cin>>key;

pos=0;

while((pos=SeqSearch(A,pos,10,key))!=-1)

{

count++;

pos++;

}

cout<<key<<" occurs "<<count<<(count!=1?" times":" time")<<" in the list."<<endl;

}

第一种情况:输入2 3 12 6 8 45 8 33 7 输入key:8

输出: (4)

第二种情况:输入2 3 12 6 8 45 8 33 7 输入key:9

输出: (5)

点击查看答案
第7题
●试题一 阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。 【函数1.1说明】

●试题一

阅读下列函数说明和C代码,把应填入其中n处的字句写在答卷的对应栏内。

【函数1.1说明】

函数strcpy(char*to,char*from)将字符串from复制到字符串to。

【函数1.1】

void strcpy(char*to,char*from)

{while((1 ) );}

【函数1.2说明】

函数merge(int a[ ],int n,int b[ ],int m,int *c)是将两个从小到大有序数组a和b复制合并出一个有序整数序列c,其中形参n和m分别是数组a和b的元素个数。

【函数1.2】

void merge(int a[ ],int n,int b[ ],int m,int *c)

{ int i,j;

for(i=j=0;i<n && j<m;)

*c++=a[i]<b[j]? a[i++]:b[j++];

while((2) )*c++=a[i++];

while((3) )*c++=b[j++];

}

【函数1.3说明】

递归函数sum(int a[ ],int n)的返回值是数组a[ ]的前n个元素之和。

【函数1.3】

int sum(int a[ ],int n)

{ if(n>0)return (4) ;

else (5) ;

}

点击查看答案
第8题
试题五(共15分)阅读以下说明和C++代码,填补C++代码中的空缺(1)~(6),将解答写在答题纸的对应栏内。

试题五(共15分)

阅读以下说明和C++代码,填补C++代码中的空缺(1)~(6),将解答写在答题纸的对应栏内。

【说明】

已知某公司按周给员工发放工资,其工资系统需记录每名员工的员工号、姓名、工资等信息。其中一些员工是正式的,按年薪分周发放(每年按52周计算);另一些员工是计时工,以小时工资为基准,按每周工作小时数核算发放。

下面是实现该工资系统的C++代码,其中定义了四个类:工资系统类PayRoll,员工类Employee,正式工类Salaried和计时工类Hourly,Salaried和Hourly是Employee的子类。

【C++代码】

//头文件和域名空间略

const int EMPLOYEE_NUM=5;

class Employee{

protected:

int empCode; ∥员工号

string name; ∥员工姓名

double salary; ∥周发放工资

public:

Employee(const int empCode, const string &name){

this->empCode= empCode; this->name= name;

}

virtual~Employee(){}

virtual void pay()=0;

double getSalary(){ return this->salary; }

};

class Salaried (1){

private: double payRate; //年薪

public:

Salaried(const int empCode,const string &name,double payRate)

:Employee(empCode,name){

this->payRate= payRate;

}

void pay(){

this->salary=(2) ;//计算正式员工的周发放工资数

cout<<this->name<<":"<<this->salary<<endl;

}

};

class Hourly (3) {

private:

double payRate; //小时工资数

int hours; //周工作小时数

public:

Hourly(const int empCode, const string &name, int hours, double payRate)

:Employee(empCode,name){

this->payRate= payRate; this->hours= hours,

}

void pay(){

this->salary= (4) ;//计算计时工的周发放工资数

cout<<this->name<<":"<<this->salary<<endl;

}

};

class PayRoll{

public:

void pay(Employee* e[]){

for (int i=0;i<EMPLOYEE_ NUM; i++){

e[i]->pay();

}

}

};

int main(){

PayRoll* payRoll= new PayRoll;

(5)employees[EMPLOYEE_ NUM]={

new Salaried(l00l,"Zhang San", 58000.00),

//此处省略对其他职工对象的生成

new Hourly(1005,"L1", 12, 50.00),

};

payRoll->pay ((6) );

double total= 0.0;

for (int i=0;i< EMPLOYEE_NUM; i++)

{ total+=employees[il->getSalary(); } //统计周发放工资总额

cout<<"总发放额="<<total<<endl;

delete payRoll; retum 0;

}

点击查看答案
第9题
●试题五 阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。 【程序5说明】 设

●试题五

阅读下列程序说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【程序5说明】

设M叉树采用列表法表示,即每棵子树对应一个列表,列表的结构为:子树根结点的值部分(设为一个字符)和用"()"括起来的各子树的列表(如有子树的话),各子列表间用","分隔。例如下面的三叉树可用列表a(b(c,d),e,f(g,h,i))表示。

本程序输入列表,生成一棵M叉树,并由M叉树输出列表。假定输入无错误。

【程序5】

#include<stdio.h>

#include<stdli

B.h>

#define M 3

typedef struct node{char val;

struct node*subTree[M];

}NODE;

char buf[255],*str=buf;

NODE*d=NULL

NODE*makeTree()/*由列表生成M叉树*/

{int k;NODE*s;

s= (1) ;

s->val=*str++;

for(k=0;k<M;k++)s->subTree[k]=NULL;

if(*str=′(′){

k=0;

do{str++;

s->subTree[k]= (2) ;

if(*str==′)′){str++;break;}

k=k+1;

}while((3) );

}

return s;

}

void walkTree(NODE*t)/*由M叉树输出列表*/

{int i;

if(t!=NULL){

(4)

if(t->subTree[0]==NULL)return;

putchar(′(′);

for(i=0;i<M;i++){

(5) ;

if(i!=M-1&&t->subTree[i+1]!= NULL)

putchar(′,′);

}

putchar(′)′);

}

}

void main()

{printf("Enter exp:");

scanf("%s",str);

d=makeTree();

walkTree(d);putchar(′\n′);

}

点击查看答案
账号:
你好,尊敬的用户
复制账号
发送账号至手机
密码将被重置
获取验证码
发送
温馨提示
该问题答案仅针对搜题卡用户开放,请点击购买搜题卡。
马上购买搜题卡
我已购买搜题卡, 登录账号 继续查看答案
重置密码
确认修改
欢迎分享答案

为鼓励登录用户提交答案,简答题每个月将会抽取一批参与作答的用户给予奖励,具体奖励活动请关注官方微信公众号:简答题

简答题官方微信公众号

警告:系统检测到您的账号存在安全风险

为了保护您的账号安全,请在“简答题”公众号进行验证,点击“官网服务”-“账号验证”后输入验证码“”完成验证,验证成功后方可继续查看答案!

微信搜一搜
简答题
点击打开微信
警告:系统检测到您的账号存在安全风险
抱歉,您的账号因涉嫌违反简答题购买须知被冻结。您可在“简答题”微信公众号中的“官网服务”-“账号解封申请”申请解封,或联系客服
微信搜一搜
简答题
点击打开微信