9.6.1
main.cpp
#include "golf.h"
int main(void)
{
golf arr[2];
char temp1[30];
int temp2, i;
for(i = 0; i < 2; i++)
{
cout << "请输入球手名字: ";
cin.getline(temp1, 29);
if(!temp1[0])
break;
cout << "请输入球手等级: ";
cin >> temp2;
cin.get();
setgolf(arr[i], temp1, temp2);
}
for(int j = 0; j < i; j++)
showgolf(arr[j]);
return 0;
}
golf.h
#ifndef GOLF_H
#define GOLF_H
#include <iostream>
#include <cstring>
using namespace std;
const int len = 40;
struct golf
{
char fullname[len];
int handicap;
};
void setgolf(golf &, const char *, int);
void setgolf(golf &);
void handicap(golf &, int);
void showgolf(const golf &);
#endif
golf.cpp
#include "golf.h"
void setgolf(golf & g, const char * name, int hc)
{
strcpy(g.fullname, name);
g.handicap = hc;
}
void segolf(golf & g)
{
cout << "请输入球手名字: ";
cin >> g.fullname;
cout << "请输入球手等级: ";
cin >> g.handicap;
}
void handicap(golf & g, int hc)
{
cout << "请输入球手新等级: ";
cin >> g.handicap;
}
void showgolf(const golf & g)
{
cout << "姓名:" << g.fullname << endl
<< "等级:" << g.handicap << endl;
}
9.6.2
#include <iostream>
#include <string>
using namespace std;
void strcount(const string &);
int main(void)
{
string input;
cout << "Enter a line:\n";
while(getline(cin, input))
{
strcount(input);
cout << "Enter next line (empty line to quit):\n";
}
cout << "Bye\n";
return 0;
}
void strcount(const string & s1)
{
static int total = 0;
cout << "\"" << s1 << "\" contains ";
total += s1.size();
cout << s1.size() << " characters\n";
cout << total << " characters total\n";
}
9.6.3
#include <iostream>
#include <cstring>
#include <new>
using namespace std;
struct chaff
{
char dross[20];
int slag;
};
int main(void)
{
char buffer[100];
chaff * pt[2];
pt[0] = new(buffer) chaff;
pt[1] = new(buffer + sizeof(chaff)) chaff;
strcpy(pt[0]->dross, "cs1");
pt[0]->slag = 1;
strcpy(pt[1]->dross, "cs2");
pt[1]->slag = 2;
for(int i = 0; i < 2; i++)
cout << pt[i]->dross << endl
<< pt[i]->slag << endl;
return 0;
}
9.6.4
main.cpp
#include "sales.h"
int main(void)
{
using namespace SALES;
Sales s1, s2;
double arr[4] = {5.2, 3.1, 6.4, 5.9};
setSales(s1, arr, 4);
setSales(s2);
showSales(s1);
showSales(s2);
return 0;
}
sales.h
#ifndef SALES_H
#define SALES_H
#include <iostream>
using namespace std;
namespace SALES
{
const int QUARTERS = 4;
struct Sales
{
double sales[QUARTERS];
double average;
double max;
double min;
};
void setSales(Sales &, const double *, int);
void setSales(Sales &);
void showSales(const Sales &);
}
#endif
sales.cpp
#include "sales.h"
namespace SALES
{
void setSales(Sales & s, const double * ar, int n)
{
double sum = 0.0, min = ar[0], max = ar[0];
for(int i = 0; i < n; i++)
{
sum += ar[i];
s.sales[i] = ar[i];
if(ar[i] > max)
max = ar[i];
if(min > ar[i])
min = ar[i];
}
s.average = sum / n;
s.max = max;
s.min = min;
}
void setSales(Sales & s)
{
double num, sum = 0, min, max;
for(int i = 0; i < 4; i++)
{
cout << "请输入第" << i + 1 << "个值: ";
cin >> num;
if(i == 0)
{
min = num;
max = num;
}
s.sales[i] = num;
sum += num;
if(num > max)
max = num;
if(min > num)
min = num;
}
s.max = max;
s.min = min;
s.average = sum / 4;
}
void showSales(const Sales & s)
{
cout << "对象数组值为: { ";
for(int i = 0; i < 4; i++)
cout << s.sales[i] << ' ';
cout << '}' << endl;
cout << "对象平均值: " << s.average << endl;
cout << "对象最大值: " << s.max << endl;
cout << "对象最小值: " << s.min << endl;
}
}