C++ Primer Plus(第六版)编程练习答案 第9章 内存模型和名称空间

本章所有编程练习的工程源码可在此处下载(点击此链接下载),供大家参考交流!

 

1. 下面是一个头文件:

(……省略……)

注意到setgolf()被重载,可以这样使用其第一个版本:

golf ann;

setgolf(ann, "Ann Birdfree", 24);

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

golf andy;

setgolf(andy);

上述函数将提示用户输入姓名和等级,并将它们存储在andy结构中。这个函数可以(但是不一定必须)在内部使用第一个版本。

根据这个头文件,创建一个多文件程序。其中的一个文件名为golf.cpp,它提供了与头文件中的原型匹配的函数定义;另一个文件应包含main(),并演示原型化函数的所有特性。例如,包含一个让用户输入的循环,并使用输入的数据来填充一个由golf结构组成的数组,数组被填满或用户将高尔夫选手的姓名设置为空字符串时,循环将结束。main()函数只使用头文件中原型化的函数来访问golf结构。

 

首先,本题提供了头文件golf.h,在该头文件中创建了一个结构名为golf,同时声明了四个函数,需要注意的是有两个函数同名,但输入参数不同,根据题意,这两个函数的功能也有所不同。

golf.h代码如下(题中自带):

// golf.h -- for pe9.1

const int Len = 80;
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.cpp,用来提供头文件中声明的函数的函数定义;需要注意的是那两个同名的函数,第一个函数需要输入名称和handicap的值,直接将这两个输入参数赋给golf结构的相应变量即可,因为name是一个char数组,所以需要使用strcpy()函数来赋值,所以也就需要包含<cstring>头文件;而对于第二个同名函数,会提示用户输入姓名和handicap值,赋给相应变量。

golf.cpp代码如下:

// golf.cpp 

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

void setgolf(golf & g, const char * name, int hc)
{
    strcpy_s(g.fullname, name);
    g.handicap = hc;
}

int setgolf(golf & g)
{
    cout << "Please enter the full name of golf player: ";
    cin.getline(g.fullname, Len);
    if (strcmp(g.fullname, "") == 0)
    {
        return 0;
    }

    cout << "Please enter the hanicap of golf player: ";
    cin >> g.handicap;
    cin.get();

    return 1;
}

void handicap(golf & g, int hc)
{
    g.handicap = hc;
}

void showgolf(const golf & g)
{
    cout << "Here is the golf contents:\n";
    cout << "Name: " << g.fullname <<endl;
    cout <&
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值