C++ Primer Plus 第六版 第九章課後編程練習答案

1.

golf.h 頭文件

// golf.h -- for pe9.1

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 "golf.h"
#include <iostream>
#include <cstring>
using namespace std;

//由題目提示,需要輸入名稱和handicap的值,直接將這兩個輸入參數賦給golf結構的相應變量
//name是char數組,所以需strcpy()函數來賦值,所以需要<cstring>頭文件
void setgolf(golf & g, const char * name, int hc){
    strcpy(g.fullname, name);
    g.handicap = hc;
}
//提示用戶輸入姓名和handicap值,賦給相應變量
int setgolf(golf & g){
    cout << "Enter fullname of golf plyer: ";
    cin.getline(g.fullname, Len);//char數組輸入
    if (strcmp(g.fullname, "") == 0)
        return 0;
    cout << "Enter handicap of golf plyer: ";
    cin >> g.handicap;
    cin.get();//必須有,否則出錯
    return 1;
}
//對handicap賦值
void handicap(golf & g, int hc){
    g.handicap = hc;
}
//輸出內容
void showgolf(const golf & g){
    cout << "Name: " << g.fullname << endl;
    cout << "Handicap: " << g.handicap << endl;
}

play.cpp 測試執行文件

#include <iostream>
#include "golf.h"
using namespace std;

int main(){
    golf a;
    setgolf(a, "Li Ming", 10);
    showgolf(a);

    golf b[3];
    int i = 0;
    while ((i<3) && setgolf(b[i])) //當數組填滿或輸入的姓名爲空,循環結束
    {
        showgolf(b[i]);
        cout << "Next golf: \n";
        i++;
    }

    golf c;
    setgolf(c, "Mao Mao", 50);
    handicap(c, 60);
    showgolf(c);

    return 0;
}

2.暫

3.暫

4. 

func.h 頭文件

namespace SALES//名稱空間
{
    const int QUARTERS = 4;
    struct Sales
    {
        double sales[QUARTERS];
        double average;
        double max;
        double min;
    };

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

func.cpp

#include <iostream>
#include "func.h"
using namespace std;

namespace SALES
{
    void setSales(Sales & s, const double ar[], int n)
    {
        //賦值
        //根據題目,n小於4,則多餘的4-n個置0
        if(n < 4)
        {
            for(int i=0; i<n; i++)
            {
                s.sales[i] = ar[i];
            }
            for(int j=n; j<4; j++)
            {
                s.sales[j] = 0;
            }
        }
        else
        {
            for(int i=0; i<4; i++)
            {
                s.sales[i] = ar[i];
            }
        }
        //求均值
        s.average = (s.sales[0] + s.sales[1] + s.sales[2] + s.sales[3]) / 4;
        //求最值
        double max = 0;
        double min = 100000000;
        for(int i=0; i<4; i++)
        {
            if(s.sales[i] > max)
            {
                max = s.sales[i];
            }
            if(s.sales[i] < min)
            {
                min = s.sales[i];
            }
        }
        s.max = max;
        s.min = min;
    }

    void setSales(Sales & s)
    {
        cout << "Enter 4 quarters: \n";
        for(int i=0; i<4; i++)
        {
            cout << "The #" << i+1 << "quarter is: ";
            cin >> s.sales[i];
        }

        s.average = (s.sales[0] + s.sales[1] + s.sales[2] + s.sales[3]) / 4;

        double max = 0;
        double min = 100000000;
        for(int i=0; i<4; i++)
        {
            if(s.sales[i] > max)
            {
                max = s.sales[i];
            }
            if(s.sales[i] < min)
            {
                min = s.sales[i];
            }
        }
        s.max = max;
        s.min = min;
    }

    void showSales(const Sales &s)
    {
        cout << "The 4 quarters are $" << s.sales[0] << ", $" << s.sales[1] << ", $" << s.sales[2] << ", $" << s.sales[3] << endl;
        cout << "The average income is: $" << s.average <<endl;
        cout << "The maximum income is: $" << s.max <<endl;
        cout << "The minimum income is: $" << s.min <<endl;
    }
}

sales.cpp

#include "func.h"
#include <iostream>
using namespace std;
using namespace SALES;

int main()
{
    Sales s1;
    cout << "The 1st sale's information: \n";
    setSales(s1);
    showSales(s1);
    cout << endl << endl;

    Sales s2;
    cout << "The 2nd sale's information: \n";
    double ar[2] = {1.1, 2.2};
    setSales(s2, ar, 2);
    showSales(s2);
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章