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--;
    }
}

猜你喜欢

转载自www.cnblogs.com/CJT-blog/p/10277801.html
今日推荐