C++ Primer Plus (第六版)编程练习记录(chapter9 内存模型和名称空间)

这篇博客介绍了基于C++ Primer Plus第六版的编程练习,涉及内存模型和名称空间。内容包括:1. 创建多文件程序,实现头文件中的函数原型;2. 修改程序以使用string对象替换字符数组,简化输入检查;3. 使用定位new运算符创建结构数组并赋值展示;4. 设计包含名称空间的3文件程序,演示交互式和非交互式函数及结构显示。

1.下面是一个头文件:

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);//设置handicap新值
void showgolf(const golf& g);//显示golf结构的内容

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

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

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

golf andy;
setgolf(andy);

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

golf.h文件:负责声明常量、结构定义、函数声明。

//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);//设置handicap新值
void showgolf(const golf& g);//显示golf结构的内容

golf.cpp文件:负责函数原型。

//golf.cpp
#include <iostream>
#include <string>
#include <cstring>
#include "golf.h"

void setgolf(golf& g, const char* name, int hc)
{
   
   
	strcpy_s(g.fullname, name);
	g.handicap = hc;
}
int setgolf(golf& g)
{
   
   
	using namespace std;
	cout << "Enter full name.\n";
	cin.getline(g.fullname,Len);
	cout << "Enter handicap.\n";
	cin >> g.handicap;
	cin.get();//清除输入流中的结束符号,防止给下次循环造成 干扰
	if ((g.fullname != '\0') && (g.handicap != 0))
		return 1;
	else
		return 0;
}
void handicap(golf& g, int hc)
{
   
   
	g.handicap = hc;
}
void showgolf(const golf& g)
{
   
   
	using namespace std;
	cout << "Full name: " << g.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值