C++ Primer Plus第九章_内存模型与名称空间_答案(自己编写,已全部测试成功)

(自己编写,已全部测试成功)C++ Primer Plus第九章_内存模型与名称空间_答案:
第一题:

//golf.h
#include<iostream>
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 "golf.h"
using namespace std;
void setgolf(golf& g, const char* name, int hc) {
    
    
	int i ;
	for (i = 0; *(name + i) != '\0';i++) {
    
    
		g.fullname[i] = *(name + i);
	}
	g.fullname[i] = '\0';
	g.handicap = hc;
}
int setgolf(golf& g) {
    
    
	
	cout << "Enter fullname of golf		(string): " << endl;
	cin.get(g.fullname, Len);
	cin.clear(); //清除上一次输入的标记
	cout << "Enter handicap of golf		(number): " << endl;
	cin >> g.handicap;
	if (g.fullname[0]=='\0') {
    
    
		return 1;
	}
	return 0;
}
void handicap(golf& g, int hc) {
    
    
	g.handicap = hc;
}
void showgolf(const golf& g) {
    
    
	cout << "golf's full name:  " <<g.fullname<< endl;
	cout << "golf's handicap:  " << g.handicap << endl;
}
//main.cpp
#include<iostream>
#include "golf.h"
using namespace std;
int main() {
    
    
	golf g;
	char name[Len] ="roger lee yaka" ;
	setgolf(g, name, 25);
	//cout << setgolf(g) << endl;
	showgolf(g);
	handicap(g, 4);
	showgolf(g);
}

第二题:

//main.cpp
#include<iostream>
#include<string>
using namespace std;
void strcount(string str);
int main() {
    
    
	string input;
	char next;
	cout << "Enter a line : " << endl;
	getline(cin,input);
	cin.clear();
	while (input.empty()!=true) {
    
    
		strcount(input);
		cout << "Enter a line : " << endl;
		getline(cin, input);
		cin.clear();
	}
	return 0;
}
void strcount(string str) {
    
    
	static int total = 0;
	total += str.length();
	cout << str.length() << " characters ." << endl;
	cout << total << " characters total ." << endl;
}

第三题:

//main.cpp
#include<iostream>
#include<string>
using namespace std;
struct chaff {
    
    
	char dross[20];
	int slag;
};
int main() {
    
    
	char buffer[512];
	cout << "nuffer address: " << (void*)buffer << endl;
	chaff* pl = new (buffer) chaff[2];//new 这里代表定位运算符
	cout << "pl address: " << pl << endl;
	strcpy_s(pl[0].dross, "abc");
	pl[0].slag = 1;
	strcpy_s(pl[1].dross, "def");
	pl[1].slag = 2;
	for (int i = 0; i < 2;i++) {
    
    
		cout << "pl["<<i << "] at " << &pl[i] << endl;
		cout << "dross:\t"<<pl[i].dross << endl;
		cout << "slag:\t"<<pl[i].slag << endl;
	}
	return 0;
}

第四题:

//head.h
#pragma once
#include<iostream>
namespace SALES {
    
    
	const int QUARTERS = 4;
	struct Sales {
    
    
		double sales[QUARTERS];
		double average;
		double max;
		double min;
	};
	void setSales(Sales& s, const double ar[]) {
    
    
		for (int i = 0; i < QUARTERS; i++) {
    
    
			s.sales[i] = ar[i];
		}
		s.average = (s.sales[0] + s.sales[1] + s.sales[2] + s.sales[3]) / 4;
		double max = s.sales[0];
		double min = s.sales[0];
		for (int i = 0; i < 4; i++) {
    
    
			if (max < s.sales[i]) {
    
    
				max = s.sales[i];
			}
			if (min > s.sales[0]) {
    
    
				min = s.sales[i];
			}
		}
		s.max = max;
		s.min = min;
	}
	void setSales(Sales& s) {
    
    
		std::cout << "Enter the four quarters sales volume: " << std::endl;
		std::cin >> s.sales[0] >> s.sales[1] >> s.sales[2] >> s.sales[3];
		s.average = (s.sales[0] + s.sales[1] + s.sales[2] + s.sales[3]) / 4;
		double max = s.sales[0];
		double min = s.sales[0];
		for (int i = 0; i < 4; i++) {
    
    
			if (max < s.sales[i]) {
    
    
				max = s.sales[i];
			}
			if (min > s.sales[0]) {
    
    
				min = s.sales[i];
			}
		}
		s.max = max;
		s.min = min;
	}
	void showSales(const Sales& s) {
    
    
		std::cout << "The four quarters sales volume: " << std::endl;
		std::cout << s.sales[0] << "  " << s.sales[1] << "  " << s.sales[2] << "  " << s.sales[3] << std::endl;
		std::cout << "The average: " << std::endl;
		std::cout << s.average << std::endl;
		std::cout << "The max: " << std::endl;
		std::cout << s.max << std::endl;
		std::cout << "The min: " << std::endl;
		std::cout << s.min << std::endl;
	}
}
//main.cpp
#include<iostream>
#include "head.h"
using namespace SALES;
int main() {
    
    
	Sales s1;
	double ar[4] = {
    
     151,565,484,999 };
	setSales(s1, ar);
	showSales(s1);
	Sales s2;
	setSales(s2);
	showSales(s2);
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_47472749/article/details/115058225
今日推荐