以下答案本人在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]);
}