C++ Primer Plus第六版 第九章 编程练习答案

//第一题
//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.cpp
#include <iostream>
#include <cstring>
#include "golf.h"
void setgolf(golf &g, const char *name, int hc)
{
	strcpy(g.fullname, name);
	g.handicap = hc;
}
int setgolf(golf &g)
{
	std::cin.getline(g.fullname, Len);
	std::cin >> g.handicap;
	return g.fullname == NULL ? 0 : 1;
}
void handicap(golf &g, int hc)
{
	g.handicap = hc;
}
void showgolf(const golf &g)
{
	std::cout << g.fullname << std::endl << g.handicap << std::endl;
}


//main.cpp
#include <iostream>
#include "golf.h"
int main()
{
	golf g;
	setgolf(g);
	showgolf(g);
	setgolf(g, "Tree", 6666);
	showgolf(g);
	handicap(g, 2333);
	showgolf(g);
	return 0;
} 


//第二题
#include <iostream>
#include <string>

void strcount(const std::string &s);

int main()
{
	std::string s;
	while(getline(std::cin, s))
		strcount(s);
	return 0;
}

void strcount(const std::string &s)
{
	static int total = 0;
	int len = 0;
	for(int i = 0 ; i < (int)s.length() ; ++i)
		len += s[i] == ' ' ? 0 : 1;
	std::cout << len << std::endl;
	total += len;
	std::cout << "Total: " << total << std::endl;
}



//第三题
#include <iostream>

struct chaff{
	char dross[20];
	int slag;
};

const int LEN = 512;
char Buffer[LEN];

int main()
{
	chaff *p = new (Buffer) chaff[2];
	for(int i = 0 ; i < 2 ; ++i)
	{
		std::cin.getline(p[i].dross, 20);
		std::cin >> p[i].slag; std::cin.get(); //吸收'\n'
	}
	for(int i = 0 ; i < 2 ; ++i)
		std::cout << "#" << i + 1 << std::endl << p[i].dross << std::endl << p[i].slag << std::endl;
	return 0;
}



//第四题

//sale.h
namespace SALES
{
	const int QUARTERS = 4;
	struct Sales
	{
		double sales[QUARTERS];
		double average;
		double max;
		double min;
	};
	void setSales(Sales &s, const double ar[], int n);
	void setSales(Sales &s);
	void showSales(const Sales &s);
}


//sale.cpp
#include <iostream>
#include "sale.h"

namespace SALES
{
	void setSales(Sales &s, const double ar[], int n)
	{
		double max = -1, min = 999999, average = 0;
		if(n < 4)
		{
			for(int i = 0 ; i < 4 ; ++i)
			{
				if(i < n)
				{
					s.sales[i] = ar[i];
					max = max < s.sales[i] ? s.sales[i] : max;
					min = min > s.sales[i] ? s.sales[i] : min;
					average += s.sales[i];
				}
				else
					s.sales[i] = 0;
			}
			s.max = max;
			s.min = min;
			s.average = average / n;
		}
		else
		{
			for(int i = 0 ; i < 4 ; ++i)
			{
				s.sales[i] = ar[i];
				max = max < s.sales[i] ? s.sales[i] : max;
				min = min > s.sales[i] ? s.sales[i] : min;
				average += s.sales[i];
			}
			s.max = max;
			s.min = min;
			s.average = average / 4;
		}
	}

	void setSales(Sales &s)
	{
		double max = -1, min = 999999, average = 0;
		for(int i = 0 ; i < 4 ; ++i)
		{
			std::cin >> s.sales[i];
			max = max < s.sales[i] ? s.sales[i] : max;
			min = min > s.sales[i] ? s.sales[i] : min;
			average += s.sales[i];
		}
		s.max = max;
		s.min = min;
		s.average = average / 4;
	}

	void showSales(const Sales &s)
	{
		for(int i = 0 ; i < 4 ; ++i)
			std::cout << s.sales[i] << std:: endl;
		std::cout << "MAX: " << s.max << std::endl << "MIN: " << s.min  << std:: endl << "AVE: " << s.average << std::endl;
	}
}


//main.cpp
#include "sale.h"

int main()
{
	double a[3] = {1.1, 2.2, 3.3};
	SALES::Sales s;
	SALES::setSales(s, a, 3);
	SALES::showSales(s);
	SALES::setSales(s);
	SALES::showSales(s);
	return 0;
}


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值