C++ Prime Plus 第六版 第九章 內存模型於名稱空間 編程練習 參考答案 詳細版

以下答案本人在VS2019中均已親自測試編譯通過,完美運行.

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"

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

int setgolf(golf & g)
{
    using std::cout;
    using std::cin;
    cout << "請輸入姓名:";
    cin >> g.fullname;
    cout << "請輸入等級:";
    cin >> g.handicap;
}
void handicap(golf & g, int hc)
{
    g.handicap = hc;
}
void showgolf(const golf & g)
{
    using std::cout;
    using std::cin;
    using std::endl;
    cout << "姓名:" << g.fullname << endl;
    cout << "等級:" << g.handicap << endl;
}
#include<iostream>
#include"golf.h"

using namespace std;

int main(void)
{
    golf ann;
    char name[20] = "wu 123456";
    int grade = 999;
    setgolf(ann, name, grade);
    showgolf(ann);
}

9.2

#include<iostream>
#include<string>

void strcount(const std::string str);

int main(void)
{
	using namespace std;
	string input;
	cout << "Enter a line:\n";
	getline(cin, input);
	while (input != " ")	//只輸入一個空格時,結束
	{
		strcount(input);
		cout << "\nEnter next line(empty line to quit):\n";
		getline(cin, input);
	}
	cout << "Bye\n";
}
void strcount(const std::string str)
{
	using namespace std;
	static int total = 0;
	int count = str.size();
	total += count;
	cout << count << " characters\n";
	cout << total << " characters total\n";
}

9.3

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

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

chaff buffer[2];

int main()
{
	using namespace std;
	chaff* P1 = new(buffer) chaff[2];
	chaff* P2 = new chaff[2];
	char name1[20]{ "123456" };
	char name2[20]{ "abcdef" };
	for (int i = 0; i < 2; i++)
	{
		strcpy_s(P1[i].dross, name1);
		cout << i + 1 << " slag: ";
		cin >> P1[i].slag;
	}
	for (int i = 0; i < 2; i++)
	{
		strcpy_s(P2[i].dross, name2);
		cout << i + 1 << " slag: ";
		cin >> P2[i].slag;
	}
	for (int i = 0; i < 2; i++)
	{
		cout << i + 1 << " buffer dross: " << buffer[i].dross << "  " << &buffer[i].dross << endl
			<< i + 1 << " buffer  slag: " << buffer[i].slag << "  " << &buffer[i].slag << endl
			<< i + 1 << " P1     dross: " << P1[i].dross << "  " << &P1[i].dross << endl
			<< i + 1 << " P1      slag: " << P1[i].slag << "  " << &P1[i].slag << endl
			<< i + 1 << " P2     dross: " << P2[i].dross << "  " << &P2[i].dross << endl
			<< i + 1 << " P2      slag: " << P2[i].slag << "  " << &P2[i].slag << endl;
	}
}

9.4

//Salesclass.h文件

#pragma once

namespace SALSS
{
	const int QUARTERS = 4;
	struct Sales
	{
		double sales[QUARTERS];
		double average;
		double max;
		double min;
	};
	void setSales(Sales& s, const double arr[], int n);
	void setSales(Sales& s);
	void showsSales(const Sales& s);
}
//Salesclass.cpp 文件

#include"Salesclass.h"
#include<iostream>
namespace SALSS
{
	using::std::cout;
	using::std::cin;
	using::std::endl;
	void setSales(Sales& s, const double arr[], int n)
	{
		double sum = 0;
		s.max = arr[0], s.min = arr[0];
		for (int i = 0; i < n; i++)
		{
			s.sales[i] = arr[i];
			sum += s.sales[i];
		}
		for (int i = 1; i < n; i++)
		{
			if (s.max < s.sales[i])
				s.max = s.sales[i];
			if (s.min > s.sales[i])
				s.min = s.sales[i];
		}
		s.average = sum / n;
	}
	void setSales(Sales& s)
	{
		double sum = 0;
		cout << "Enter sales:";
		for (int i = 0; i < QUARTERS; i++)
		{
			cin >> s.sales[i];
			sum += s.sales[i];
		}
		s.max = s.sales[0], s.min = s.sales[0];
		for (int i = 1; i < QUARTERS; i++)
		{
			if (s.max < s.sales[i])
				s.max = s.sales[i];
			if (s.min > s.sales[i])
				s.min = s.sales[i];
		}
		s.average = sum / QUARTERS;
	}
	void showsSales(const Sales& s)
	{
		for (int i = 0; i < QUARTERS; i++)
			cout << "sales[ " << i << "] = " << s.sales[i] << endl;
		cout << "average :" << s.average << endl
			<< "  max   :" << s.max << endl
			<< "  min   :" << s.min << endl << endl;
	}
}
#include<iostream>
#include"Salesclass.h"

int main()
{
	using namespace SALSS;
	Sales money[2];
	double arr[4]{ 220.1, 300.1, 260.8, 300.2 };
	setSales(money[0], arr, 4);
	setSales(money[1]);
	showsSales(money[0]);
	showsSales(money[1]);
}

 

發佈了15 篇原創文章 · 獲贊 1 · 訪問量 643
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章