C++ primer plus 第6版 第9章编程答案

9-1.
//main.cpp
#include <iostream>
#include "golf.hpp"
int main(void) {
    golf ann;
    setgolf(ann,"Ann Birdfree",24);
    showgolf(ann);
    golf ann1[3];
    int i=0;
    while(i<3 &&setgolf(ann1[i]))
        ++i;
    for(int k=0;k<i;++k)
        showgolf(ann1[k]);
    return 0;
}

//golf.hpp 
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.hpp"
#include <iostream>
#include <cstring>
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::endl;
    using std::cin;
    char name[Len];
    cout<<"Enter fullname ( empty string to quit):";
    cin.get(name,Len);//换行符留在输入流中,不能用cin.getline()函数
    char next;
    if(cin)
    {
        cin.get(next);
        while(next!='\n')
            cin.get(next);
        strcpy(g.fullname,name);
        cout<<"Enter handicap: ";
        (cin>>g.handicap).get();
        return 1;
    }
    else return 0;
}
void handicap(golf & g,int hc)
{
    g.handicap=hc;
}
void showgolf(const golf &g)
{
    std::cout<<"Name: "<<g.fullname<<"\nHandicap: "<<g.handicap<<std::endl;
}


9-2.
#include <iostream>
#include <string>
void strcount(const std::string &str);

int main() {
    using namespace std;
    string input;
    cout<<"Enter a line.\n";
    getline(cin,input);
    while(""!=input)
    {
        strcount(input);
        cout<<"Enter next line (empty line to quit):\n";
        getline(cin,input);
    }
    return 0;
}
void strcount(const std::string &str)
{
    using namespace std;
    static int total=0;
    cout<<"\""<<str<<"\" contains ";
    total+=str.size();
    cout<<str.size()<<" characters\n";
    cout<<total<<" characters total\n";
    
}

9-3.
#include <iostream>
struct chaff
{
    char dross[20];
    int slag;
};
void fill(chaff & ar);
void show(const chaff & ar);
int main() {
    using namespace std;
    chaff *buff=new chaff[2];
    chaff *br=new(buff) chaff[2];
    for(int i=0;i<2;++i)
        fill(br[i]);
    for(int k=0;k<2;++k)
        show(buff[k]);
    delete [] buff;
    return 0;
}
void fill(chaff & ar)
{
    using namespace std;
    cout<<"Enter dross:\n";
    cin.getline(ar.dross,20);
    cout<<"Enter slag:\n";
    (cin>>ar.slag).get();
}
void show(const chaff & ar)
{
    using namespace std;
    cout<<"Dross: "<<ar.dross<<endl;
    cout<<"Slag: "<<ar.slag<<endl;
}


9-4.
c++9.hpp//header
#ifndef C__9_hpp
#define C__9_hpp

#include <stdio.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);
    }
#endif /* C__9_hpp */

c++9.cpp//definition
#include "C++9.hpp"
#include <iostream>
namespace SALES
{
void setSales(Sales & s,const double ar[],int n)
{
    double total=0;
    int i;
    for(i=0;i<n&&i<4;++i)
    {
        s.sales[i]=ar[i];
        total+=s.sales[i];
    }
    s.average=total/i;
    s.max=s.sales[0];
    s.min=s.sales[0];
    for(int k=1;k<i;++k)
    {
        s.max=(s.max>s.sales[k])?s.max:s.sales[k];
        s.min=(s.min<s.sales[k])?s.min:s.sales[k];
    }
    if(n<4)
        for(int k=n;k<4;++k)
            s.sales[k]=0;
}
 void setSales(Sales & s)
{
    using std:: cout;
    using std:: cin;
    double arr[QUARTERS];
    cout<<"Enter sales of 4 quarters:";
    for(int i=0;i<QUARTERS;++i)
        cin>>arr[i];
    setSales(s,arr, 4);
  
}
void showSales(const Sales & s)
{
     using std:: cout;
    using std:: cin;
    using std::endl;
    cout<<"Sales of 4 quarters: ";
    for(int i=0;i<QUARTERS;++i)
        cout<<s.sales[i]<<" ";
    cout<<"\nAverage is: "<<s.average<<endl;
    cout<<"Max: "<<s.max<<endl;
    cout<<"Min: "<<s.min<<endl;
    
}
}

main.cpp//main
#include <iostream>
#include "C++9.hpp"
int main() {
    using namespace SALES;
    double ar[4]={11.2,32.3,54.3,66.1};
    Sales sal;
    setSales(sal, ar, 3);
    showSales(sal);
    setSales(sal);
    showSales(sal);
    return 0;
}
****<end>****


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值