C++ premier plus 第六版 编程练习解答(第九章)

9.1

//golf.h
#ifndef GOLF_H_
#define 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);

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

using namespace std;

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

int setgolf(golf & g)
{
	cin.get();
	cout << "Please enter the fullname: ";
	cin.getline(g.fullname, Len);
	if(strlen(g.fullname) == 0)
		return 0;
	cout << "Please enter the handicap: ";
	cin >> g.handicap;
	return 1;
}

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

void showgolf(const golf & g)
{
	cout << "The full name is: " << g.fullname << endl
		 << "The handicap is: " << g.handicap << endl;
}
//main.cpp
#include <iostream>
#include "golf.h"

using namespace std;

int main()
{
	cout << " How many members: ";
	int n;
	cin >> n;
	golf a[n];
	for (int i = 0; i < n && setgolf(a[i]); ++i)
		showgolf(a[i]);
}
cout << "Done!" << endl;
return 0;

9.2修改程序清单9.9:用string对象代替字符数组。这样,该程序将不再需要检查输入的字符串是否过长,同时可以将输入字符串通字符串“”进行比较,以判断是否为空行。

#include <iostream>
#include <string>
#include <cstring>

using namespace std;

void strcount(const string str);

int main()
{
	string input;
	cout << "Please enter a line: ";
	getline(cin,input);
	while (input != "")
	{
		strcount(input);
		cout << "Please enter next line: ";
		getline(cin,input);
	}
	cout << "Bye" << endl;
	return 0;
}

void strcount(const string str)
{
	static int total = 0;
	int count = 0;
	cout << "\"" << str << "\" contains ";
	while (str[count])
		count++;
	total += count;
	cout << count << " characters" << endl
		 << total << " characters total" << endl;
}

9.3

#include <iostream>
#include <cstring>
#include <new>

using namespace std;

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

void show(chaff & p);

char buffer[512];

int main()
{
	char dross[20];
	int slag;
	chaff *pd1 = new chaff[2];
	for(int i = 0; i < 2; i++)
	{
		cout << "# " << i + 1 << ": \n";
		cout <<"Enter the dross: ";
		cin.getline(dross,20);
		cout << "Enter the slag: ";
		cin >> slag;
		cin.get();
		strcpy(pd1[i].dross, dross);
		strcpy(pd2[i].dross, dross);
		pd1[i].slag = pd2[i].slag = slag;
		cout << "pd1 # \n";
		show(pd1[i]);
		cout << "pd2 # \n";
		show(pd2[i]);
	}
	delete [] pd1;
	return 0;
}

void show(chaff & p)
{
	cout << "The doss: " << p.dross << endl;
	cout << "The slag: " << p.slag << endl;
}

9.4

//namesp.h
#ifndef NAMESP_H_
#define NAMESP_H_

namespace SALES
{
	struct Sales
	{
		double sales[4];
		double average;
		double max;
		double min;
	};

	void setSales(Sales & s, const double ar[], int n);
	void setSales(Sales & s);
	void showSales(const Sales & s);
}

#endif
//namesp.cpp
#include <iostream>
#include "namesp.h"

using namespace std;

namespace SALES
{
	void setSales(Sales & s,const double ar[], int n)
	{
		if(n < 4)
		{
			for(int i = 0; i < n; i++)
				s.sales[i] = ar[i];
			for(int i = 0; i < 4; i++)
				s.sales[i] = 0;
		}
		else
			for(int i = 0; i < 4; i++)
				s.sales[i] = ar[i];
		double sum = s.sales[0];
		s.max = s.sales[0];
		s.min = s.sales[0];
		for(int i = 1; i < 4; i++)
		{
			sum += s.sales[i];
			s.max = s.max > s.sales[i] ? s.max : s.sales[i];
			s.min = s.min < s.sales[i] ? s.min : s.sales[i];
		}
		s.average = sum / 4;
	}
	void setSales(Sales & s)
	{
		double sum = 0.0;
		cout << "Enter 4 sales quarters: \n";
		for(int i = 0; i < 4; i++)
		{
			cout << "# " << i + 1 << ": ";
			cin >> s.sales[i];
			sum += s.sales[i];
			if(i = 0)
			{
				s.max = s.sales[i];
				s.min = s.sales[i];
			}
			else
			{
				s.max = s.max > s.sales[i] ? s.max : s.sales[i];
				s.min = s.min < s.sales[i] ? s.min : s.sales[i];
			}
		}
		s.average = sum / 4;
	}

	void showSales(const Sales $ s)
	{
		cout << "The sales: ";
		for(int i = 0; i < 4; i++)
			cout << s.sales[i] << " ";
		cout << endl;
		cout << "The average: " << s.average << endl
			 << "The max: " << s.max << endl
			 << "The min: " << s.min << endl;
	}
	
}
//main.cpp
#include <iostream>
#include "namesp.h"

int main()
{
	using namespace std;
	using namespace SALES;
	Sales s1, s2, s3;
	cout << "The first: \n";
	setSales(s1);
	showSales(s1);
	cout << endl;
	double ar1[] = {5, 4, 8, 6, 1};
	double ar2[] = {4, 7, 9};
	cout << "The second: \n";
	setSales(s2, ar1, 5);
	showSales(s2);
	cout << endl;
	cout << "The third: \n";
	setSales(s3, ar2, 3);
	showSales(s3);
	return 0;
}
发布了35 篇原创文章 · 获赞 18 · 访问量 6803

猜你喜欢

转载自blog.csdn.net/acslsr/article/details/104379272