c++ primer plus 第七章 课后题答案

#include <iostream>
using namespace std;
double HAR_AVG(double, double);
void TEST(bool);

int main()
{
    double x, y;
    cout << "Please enter two values(encountered zero end):\n";
    cin >> x;
    TEST(cin.fail());
    cin >> y;
    TEST(cin.fail());
    while (x*y != 0)
    {
        cout << "The harmonic mean of the two values is " << HAR_AVG(x, y) << ".\n";
        cout << "Please enter two values(encountered zero end):\n";
        cin >> x;
        TEST(cin.fail());
        cin >> y;
        TEST(cin.fail());
    }

    system("pause");

}

double HAR_AVG(double x, double y)
{
    return 2.0*x*y / (x + y);
}

void TEST(bool a)
{
    if (a == true)
        cout << "Not value!\n";
}

#include <iostream>
using namespace std;
const int Max_Num = 10;
int In_put(double *, int);
double Pro_data(double *, int);
void Display(const double *, int, double);

int main()
{
    double grade[Max_Num];
    int count;
    double avg_grade;

    count=In_put(grade, Max_Num);
    avg_grade=Pro_data(grade, count);
    Display(grade, count, avg_grade);

    system("pause");
}

int In_put(double *grade,int a)
{
    cout << "Please enter ten golf scores (press any non-numeric button to end): \n";
    int count=0;
    for (int i = 0; i < a; i++)
    {
        cin >> grade[i];
        if (cin.fail())
        {
            cout << "End!\n";
            return count;
        }
        count++;
    }
    return count;
}

double Pro_data(double *grade, int count)
{
    double sum=0;
    for (int i = 0; i < count; i++)
    {
        sum += grade[i];
    }
    
    return sum / count;
}

void Display(const double *grade, int count, double a)
{
    cout << "The grades you entered are:";
    for (int i = 0; i < count; i++)
    {
        cout << grade[i] << " ";
    }
    
    cout << "\nThe average score is " << a << ".\n";
}

#include<iostream>
using namespace std;
const int Max_num = 10;

struct box
{
    char maker[40];
    float height;
    float width;
    float length;
    float volume;
};

bool In_put(box *,int);
void Display(box,int);
void Setting(box *,int);

int main()
{
    box *abc = new box[Max_num];
    int count=0;

    for (int i = 0; i < Max_num; i++)
    {    
        if (In_put(abc, i))
            break;
        count++;
    }

    cout << "You have entered " << count << " boxes.\n";
    for (int j = 0; j < count; j++)
    {
        Display(abc[j], j);
    }
    
    system("pause");
}

bool In_put(box *abc, int i)
{
    cout << "Please enter the maker of the box, as well as the length, width, and height:\n";
    cin >> abc[i].maker;
    if (cin.fail())
    {
        cout << "The maker of the input box has an error.\n";
        return cin.fail();
    }
    cin >> abc[i].length;
    if (cin.fail())
    {
        cout << "The maker of the input length has an error.\n";
        return cin.fail();
    }
    cin >> abc[i].width;
    if (cin.fail())
    {
        cout << "The maker of the input width has an error.\n";
        return cin.fail();
    }
    cin >> abc[i].height;
    if (cin.fail())
    {
        cout << "The maker of the input height has an error.\n";
        return cin.fail();
    }
    Setting(abc,i);
    return false;
}

void Setting(box *abc, int i)
{
    abc[i].volume = abc[i].length*abc[i].width*abc[i].height;
}

void Display(box abc,int j)
{
    cout << "The " << j+1 << "th box has the following information:\n";
    cout << "maker:" << abc.maker << endl;
    cout << "length:" << abc.length << endl;
    cout << "width:" << abc.width << endl;
    cout << "height:" << abc.height << endl;
    cout << "volume:" << abc.volume << endl;
}

#include <iostream>
long double probability(unsigned, unsigned, unsigned, unsigned);
int main()
{
    using namespace std;
    double total1, choices1;
    double total2, choices2;
    cout << "Enter the total number of Domain choices on the game card and\n"
        "the number of picks allowed:\n";
    cin >> total1 >> choices1;
    cout << "Enter the total number of Special choices on the game card and\n"
        "the number of picks allowed:\n";
    cin >> total2 >> choices2;
    while (!(cin.fail()) && choices1 <= total1 && choices2 <= total2)
    {
        cout << "You have one chance in ";
        cout << probability(total1, choices1, total2, choices2);
        cout << " of winning.\n";
        cout << "Next four numbers (Non-numeric to quit): ";
        cin >> total1 >> choices1;
        cin >> total2 >> choices2;
    }
    cout << "bye\n";
    system("pause");
    return 0;
}

long double probability(unsigned numbers1, unsigned picks1, unsigned numbers2, unsigned picks2)
{
    long double result = 1.0;  // here come some local variables
    long double n;
    unsigned p;

    for (n = numbers1, p = picks1; p > 0; n--, p--)
        result = result * n / p;
    for (n = numbers2, p = picks2; p > 0; n--, p--)
        result = result * n / p;
    return result;
}

#include <iostream>
using namespace std;
unsigned long factorial(unsigned int);

int main()
{
    unsigned int pp;
    unsigned long qq;
    cout << "Please enter a non-negative number:";
    if (cin >> pp)
    {
        qq = factorial(pp);
        cout << "The factorial of this value is:" << qq << endl;
    }
    system("pause");
}

unsigned long factorial(unsigned int pp)
{
    unsigned long qq;
    if (pp > 0)
        qq = pp * factorial(pp - 1);
    else
        return 1;
    return qq;
}

#include <iostream>
using namespace std;
const int Max_num = 10;
int Fill_array(double *, int);
void Show_array(const double *, int);
void Reverse_array(double *, int);

int main()
{
    double abc[Max_num];
    int num_rel;
    num_rel=Fill_array(abc, Max_num);
    Show_array(abc, num_rel);
    Reverse_array(abc, num_rel);
    Show_array(abc, num_rel);
    Reverse_array(abc+1, num_rel-2);
    Show_array(abc, num_rel);

    system("pause");
}

int Fill_array(double *abc, int t)
{
    int count_num = 0;
    cout << "Please enter no more than" << t << "digits (experiencing non-numeric exits):\n";
    for (int i = 0; i < t; i++)
    {
        if (!(cin >> abc[i]))
            break;
        count_num++;
    }
    cout << "Input completed.\n";
    return count_num;
}

void Show_array(const double *abc, int t)
{
    for (int i = 0; i < t; i++)
    {
        cout << abc[i] << endl;
    }
}

void Reverse_array(double *abc, int t)
{
    cout << "Reverse!" << endl;
    int i = 0, j = t - 1;
    double qqq;
    while (j > i)
    {
        qqq = abc[i];
        abc[i] = abc[j];
        abc[j] = qqq;
        i++;
        j--;
    }
}

#include <iostream>
const int Max = 5;

double * fill_array(double *, double *);
void show_array(const double *, const double *); 
void revalue(double, double *, double *);

int main()
{
    using namespace std;
    double properties[Max];

    double *end = fill_array(properties, properties+Max);
    show_array(properties, end);
    if (end > properties)
    {
        cout << "Enter revaluation factor: ";
        double factor;
        while (!(cin >> factor))  
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
            cout << "Bad input; Please enter a number: ";
        }
        revalue(factor,properties, end);
        show_array(properties, end);
    }
    cout << "Done.\n";
    
    system("pause");
}

double * fill_array(double * ar, double * br)
{
    using namespace std;
    double temp;
    double *i;
    int j = 0;
    for (i = ar; i<br; i++,j++)
    {
        cout << "Enter value #" << (j + 1) << ": ";
        cin >> temp;
        if (!cin)    
        {
            cin.clear();
            while (cin.get() != '\n')
                continue;
            cout << "Bad input; input process terminated.\n";
            break;
        }
        else if (temp < 0)   
            break;
        *i = temp;
    }
    return i;
}

void show_array(const double *ar, const double *br)
{
    using namespace std;
    const double *i;
    int j = 0;
    for (i = ar; i < br; i++,j++)
    {
        cout << "Property #" << (j + 1) << ": $";
        cout << *i << endl;
    }
}

void revalue(double r,double *ar,double *br)
{
    double *i;
    for (i = ar; i < br; i++)
        (*i)*= r;
}

 

#include <iostream>
#include <string>
const int Seasons = 4;
const char * Snames[Seasons] = { "Spring", "Summer", "Fall", "Winter" };

int main()
{
    double expenses[Seasons];
    fill(expenses);
    show(expenses);
    system("pause");
}

void fill(double * pa)
{
    for (int i = 0; i < Seasons; i++)
    {
        std::cout << "Enter " << Snames[i] << " expenses: ";
        std::cin >> pa[i];
    }
}

void show(double * da)
{
    double total = 0.0;
    std::cout << "\nEXPENSES\n";
    for (int i = 0; i < Seasons; i++)
    {
        std::cout << Snames[i] << ": $" << da[i] << '\n';
        total += da[i];
    }
    std::cout << "Total: $" << total << '\n';
}
#include <iostream>
#include <string>
const int Seasons = 4;
const char * Snames[Seasons] = { "Spring", "Summer", "Fall", "Winter" };
struct expenses
{
    double expenses;
};
void fill(expenses *);
void show(expenses *);

int main()
{
    expenses *cost = new expenses[Seasons];
    fill(cost);
    show(cost);
    system("pause");
}

void fill(expenses * pa)
{
    for (int i = 0; i < Seasons; i++)
    {
        std::cout << "Enter " << Snames[i] << " expenses: ";
        std::cin >> pa[i].expenses;
    }
}

void show(expenses * da)
{
    double total = 0.0;
    std::cout << "\nEXPENSES\n";
    for (int i = 0; i < Seasons; i++)
    {
        std::cout << Snames[i] << ": $" << da[i].expenses << '\n';
        total += da[i].expenses;
    }
    std::cout << "Total: $" << total << '\n';
}

#include <iostream>
using namespace std;
const int SLEN = 30;
struct student {
    char fullname[SLEN];
    char hobby[SLEN];
    int ooplevel;
};

int getinfo(student [], int);
void display1(student);
void display2(const student *);
void display3(const student *, int);

int main()
{
    cout << "Enter class size:";
    int class_size;
    while (!(cin >> class_size))
    {
        cin.clear();
        cin.ignore();
        cout << "Please enter class size:";
    };
    
    student * ptr_stu = new student[class_size];
    int entered = getinfo(ptr_stu, class_size);
    for (int i = 0; i < entered; i++)
    {
        display1(ptr_stu[i]);
        display2(&ptr_stu[i]);
    }
    display3(ptr_stu, entered);
    delete[] ptr_stu;
    cout << "Done\n";
    system("pause");
}

int getinfo(student pa[], int n)
{
    int count = 0;
    for (int i = 0; i < n; i++)
    {
        cin.ignore();
        cout << "Please enter the fullname:";
        cin.getline(pa[i].fullname, SLEN);
        cout << "Please enter the hobby:";
        cin.getline(pa[i].hobby, SLEN);
        cout << "Please enter the ooplevel:";
        cin >> pa[i].ooplevel;
        count++;
    }
    cout << "\nEnter end!";
    return count;
}

void display1(student pa)
{
    cout << "\ndisplay1:\nFullName:" << pa.fullname << "\nhobby:" << pa.hobby
        << "\nooplevel:" << pa.ooplevel << endl;
}
void display2(const student * pa)
{
    cout << "\ndisplay2:\nFullName:" << pa->fullname << "\nhobby:" << pa->hobby
        << "\nooplevel:" << pa->ooplevel << endl;
}
void display3(const student * pa, int n)
{
    cout << "\ndispaly3:\n" << endl;
    for (int i = 0; i < n; i++)
        cout << i+1 << "::FullName:" << pa[i].fullname << "\nhobby:" << pa[i].hobby
        << "\nooplevel:" << pa[i].ooplevel << endl;
}

#include <iostream>
using namespace std;

double add(double, double);
double sub(double, double);
double calculate(double, double, double (double, double));

int main()
{
    double a, b, c, d;
    cout << "Please enter two values:\n";
    while ((cin >> a) && (cin >> b))
    {
        c=calculate(a, b, add);
        d=calculate(a, b, sub);
        cout << "The sum and subtraction of the values are:" << c << "," << d << endl;
        cout << "Please continue to enter:\n";
    }
    system("pause");
}

double add(double a, double b)
{
    double c;
    c = a + b;
    return c;
}

double sub(double a, double b)
{
    double d;
    d = a - b;
    return d;
}

double calculate(double a, double b, double cal(double, double))
{
    double e;
    e = cal(a, b);
    return e;
}

转载于:https://www.cnblogs.com/CJT-blog/p/10277801.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值