首页 > 试题广场 >

完成下面的编程练习,但要用正确的golf类声明替换那里的代码

[问答题]
完成下面的编程练习,但要用正确的golf类声明替换那里的代码 。用带合适参数的构造函数替换setgolf(golf &, const char *, int),以提供初始值。保留setgolf()的交互版本,但要用构造函数来实现它(例如,setgolf()的代码应该获得数据,将数据传递给构造函数来创建一个临时对象,并将其赋给调用对象,即*this)。
编程练习:下面是一个头文件:
// golf.h -- for pe9-1.cpp
const int Len = 40;
struct golf
{
       char fullname(Len);
       int handicap;
};
// non-interactive version:
// function sets golf structure to provided name, handicap
// using values passed as arguments to the function
void setgolf(golf & g, const char * name, int hc);
// interactive version:
// function solicits name and handicap from uaer
// and sets the members of g to the valus entered
// returns 1 if name is entered, 0 if name is empty string
int setgolf(golf & g);
// function resets handicap to new value
void handicap(golf & g, int hc);
// function displays  contents of golf structure
void showgolf(const golf &g);
注意到setgolf()被重载,可以这样使用其第一个版本:
golf ann;
setgolf(ann, "Ann Birdfree", 24);

上述函数调用提供了存储在ann结构中的信息。可以这样使用其第二个版本:
golf andy;
setgolf(andy);


上述函数将提示用户输入姓名和等级,并将它们存储在andy结构中。这个函数可以(但是不一定必须)在内部使用第一个版本。
根据这个头文件,创建一个多文件程序。其中的一个文件名为golf.cpp,它提供了与头文件中的原型匹配的函数定义;另一个文件应包含main(),并演示原型化函数的所有特性。例如,包含一个让用户输入的循环,并使用输入的数据来填充一个由golf结构组成的数组,数组被填满或用户将高尔夫选手的姓名设置为空字符串时,循环将结束。main()函数只使用头文件中原型化的函数来访问golf结构。
//golf.h 头文件

const int Len=40;
struct golf
{  char fullname[Len]{};  int handicap;
};
//
void setgolf(golf &g,const char *name,int hc);
//
int setgolf(golf&g);
//
void handicap(golf& g,int hc);
//
void showgolf(const golf &g);

___________________________________________________________________
//golf_1.cpp 对头文件中函数原型说明

#include "golf.h"
#include <cstring>
//golf_1.cpp 
#include <iostream>
using namespace std;

//
void setgolf(golf &g,const char* name,int hc)
{  strcpy(g.fullname,name);  g.handicap=hc;
}
//
int setgolf(golf &g)
{  cout<<"Enter the name: ";  cin.getline(g.fullname,Len);  cout<<"Enter the handicap: ";  cin>>g.handicap;  if(*g.fullname=='\0')return 0;  else return 1;
}
//
void handicap(golf &g,int hc)
{  g.handicap=hc;
}
//
void showgolf(const golf &g)
{  cout<<"Name: "<<g.fullname<<endl;  cout<<"Handicap: "<<g.handicap<<endl;
}
___________________________________________________________________   
//golf_m.cpp 主文件

#include "golf.h"
#include <iostream>
using namespace std;

int main()
{  golf g;  cout<<setgolf(g)<<endl;  showgolf(g);  setgolf(g,"xxx",12);  handicap(g,9);  showgolf(g);
}

编辑于 2019-01-17 15:09:52 回复(0)