C++Primer Plus习题记录-Chapter7

IDE : VS2017
C++
//7-1
#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cctype>
#include <array>
#include <iomanip>

using namespace std;
double add(double x, double y);
double mux(double x, double y);
double calculate(double x, double y, double (*fun)(double, double));
int main() {
    double x = 0.0, y = 0.0;
    cin >> x >> y;
    cout << calculate(x, y, add) << "\n" << calculate(x, y, mux);
    return 0;
}
double add(double x, double y) {
    return x + y;
}
double mux(double x, double y) {
    return x * y;
}
double calculate(double x, double y, double (*fun)(double, double)) {
    return (*fun)(x, y);
}
//7-2
#include "pch.h" #include <iostream> #include <fstream> #include <cstdlib> #include <string> #include <cctype> #include <array> #include <iomanip> using namespace std; void ingrade(double *a, unsigned int *number); void display(const double *a, const unsigned int number); void aver(const double *a, const unsigned int number); int main() { double a[10]; unsigned int enter=0; ingrade(a, &enter); display(a, enter); aver(a, enter); return 0; } void ingrade(double *a,unsigned int *number) { while (cin >> a[(*number)++]&&(*number)<11) { if ((a[*number-1] == -1)) break; } (*number)--; } void display(const double *a,const unsigned int number) { for (unsigned int i = 0; i < number; i++) { cout << a[i] << " "; } } void aver(const double *a, const unsigned int number) { double sum = 0.0; for (unsigned int i = 0; i < number; i++) { sum += a[i]; } cout<<sum/number; }

7-3

#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cctype>
#include <array>
#include <iomanip>

using namespace std;

struct box
{
    char maker[40];
    float height;
    float width;
    float length;
    float volume;
};
void PrintBox(box boxs);
void PrintAdd(box * boxs);
int main() {
    box boxs = { "Light monster",1.78,2.2,3.1,8.5 };
    PrintBox(boxs);
    PrintAdd(&boxs);

    return 0;
}
void PrintBox(box boxs) {
    cout << "name: " << boxs.maker << " ";
    cout << "height: " << boxs.height << " ";
    cout << "width: " << boxs.width << " ";
    cout << "length: " << boxs.length << " ";
    cout << "volume: " << boxs.volume << endl;
}
void PrintAdd(box * boxs) {
    boxs->volume = boxs->height*boxs->length*boxs->width;
    cout << boxs->volume;
}

7-4

#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cctype>
#include <array>
#include <iomanip>

using namespace std;
long double ritio(long double x, double y);
int main() {
    long double n1, n2, p1, p2;
    cin >> n1 >> p1 >> n2 >> p2;
    cout << ritio(n1, p1)*ritio(n2, p2);

    return 0;
}
long double ritio(long double x, double y) {
    long double ritios = 1.0;
    long double n = 0.0, p = 0.0;
    for (n = x, p = y; p > 0; n--, p--) {
        ritios *= p / n;
    }
    return ritios;
}

7-5

#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cctype>
#include <array>
#include <iomanip>

using namespace std;
double factorial(int n);
int main() {
    int n;
    double sum;
    cin >> n;
    sum = factorial(n);
    cout << sum;
    return 0;
}
double factorial(int n) {
    if (n == 0 || n == 1)
        return 1;
    else
        return n * factorial(n - 1);
}

7-6

#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cctype>
#include <array>
#include <iomanip>

using namespace std;
int Fill_array(double *ar, int Size);
void Show_array(double *ar, int Size);
void Reverse_array(double *ar, int Size);
int main() {
    const int Size = 10;
    double ar[Size];
    int length=Fill_array(ar, Size);
    Show_array(ar, length);
    Reverse_array(ar, length);
    Show_array(ar, length);
    return 0;
}
int Fill_array(double *ar, int Size) {
    cout << "Please in put double type:";
    int i = 0;
    while (i<Size&&cin>>ar[i])
    {
        i++;
    }
    return i;
}
void Show_array(double *ar, int Size) {
    for (int i = 0; i < Size; i++)
        cout << ar[i] << " ";
    cout << endl;
}
void Reverse_array(double *ar, int Size) {
    for (int i = 0; i < Size/2; i++) {
        double temp = ar[i];
        ar[i] = ar[Size - i - 1];
        ar[Size - i - 1] = temp;
    }
}

7-7

#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cctype>
#include <array>
#include <iomanip>

using namespace std;
double *Fill_array(double *ar, int Size);
void Show_array(double *ar, double* Size);
int main() {
    const int Size = 10;
    double ar[Size];
    double *length=Fill_array(ar, Size);
    Show_array(ar, length);
    return 0;
}
double *Fill_array(double *ar, int Size) {
    cout << "Please in put double type:";
    int i = 0;
    while (i<Size&&cin>>*ar)
    {
        i++;
        ar = ar + 1;
    }
    return ar;
}
void Show_array(double *ar, double* Size) {
    for (;ar<Size; ar++)
        cout << *ar << " ";
    cout << endl;
}

7-8

#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cctype>
#include <array>
#include <iomanip>

using namespace std;
void fill(double *pa);
void show(double *pa);

const int Size = 4;
const char *Season[Size] = { "Spring","Summer","Fall","Winter" };
struct cost
{
    double expenses[Size];
};
void fill(cost *pCost);
void show(cost *pCost);
int main() {
    cout << "Situation A:" << endl;
    double pa[Size] = { 0 };
    fill(pa);
    show(pa);
    cout << "Situation B:" << endl;
    cost *pCost=new cost;
    fill(pCost);
    show(pCost);
    delete pCost;
    return 0;
}
void fill(double *pa) {
    for (int i = 0; i < Size; i++) {
        cout << Season[i] << ": ";
        cin >> pa[i];
    }
}
void show(double *pa) {
    double total=0.0;
    cout << "\nEXPENSES\n";
    for (int i = 0; i < Size; i++) {
        cout << Season[i] << ": $" << pa[i] << endl;
        total += pa[i];
    }
    cout << "Total expenses: $" << total << endl;
}
void fill(struct cost *pCost) {
    for (int i = 0; i < Size; i++) {
        cout << "Enter " << Season[i] << "expenses: ";
        cin >> pCost->expenses[i];
    }
}
void show(struct cost *pCost) {
    double total=0.0;
    cout << "\nEXPENSES\n";
    for (int i = 0; i < Size; i++) {
        cout << Season[i] << ": $" << pCost->expenses[i] << endl;
        total += pCost->expenses[i];
    }
    cout << "Total expenses: $" << total;
}

7-9

#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cctype>
#include <array>
#include <iomanip>

using namespace std;
const int SLEN = 30;
struct student
{
    char fullname[SLEN];
    char hobby[SLEN];
    int ooplevel;
};
int getinfo(student pa[], int n) {
    int true_in = 0;
    for (int i = 0; i < n; i++) {
        cout << "Enter the info of student #" << i + 1 << endl;
        cout << "Enter full name(blank line to quit): ";
        cin.getline(pa[i].fullname, SLEN);
        cout << "Enter hobby: ";
        cin.getline(pa[i].hobby, SLEN);
        cout << "Enter opplevel: ";
        cin >> pa[i].ooplevel;
        while (cin.get() != '\n')
            continue;
        true_in++;
    }
    return true_in;
}
void display1(student st)
{
    cout << "Using display1(student st): " << endl;
    cout << "Full name: " << st.fullname << endl;
    cout << "Hobby: " << st.hobby << endl;
    cout << "Ooplevel: " << st.ooplevel << endl;
}
void display2(const student *st)
{
    cout << "Using display2(const student *st)" << endl;
    cout << "Full name: " << st->fullname << endl;
    cout << "Hobby: " << st->hobby << endl;
    cout << "Ooplevel: " << st->ooplevel << endl;
}
void display3(const student pa[], int n)
{
    cout << "Using display3(const student pa[], int n)" << endl;;
    for (int i = 0; i < n; i++)
    {
        cout << "Infomation of student #" << i + 1 << ": " << endl;
        cout << "Full name: " << pa[i].fullname << endl;
        cout << "Hobby: " << pa[i].hobby << endl;
        cout << "Ooplevel: " << pa[i].ooplevel << endl;
    }
}
int main() {
    cout << "Enter class size: ";
    int class_size;
    cin >> class_size;
    while (cin.get() != '\n')
        continue;
    student *ptr_std = new student[class_size];
    int entered = getinfo(ptr_std, class_size);
    for (int i = 0; i < entered; i++) {
        display1(ptr_std[i]);
        display2(&ptr_std[i]);
    }
    display3(ptr_std, entered);
    delete[] ptr_std;
    cout << "Done\n";
    return 0;
}

7-10

#include "pch.h"
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <cctype>
#include <array>
#include <iomanip>

using namespace std;
double add(double x, double y);
double mux(double x, double y);
double calculate(double x, double y, double (*fun)(double, double));
int main() {
    double x = 0.0, y = 0.0;
    cin >> x >> y;
    cout << calculate(x, y, add) << "\n" << calculate(x, y, mux);
    return 0;
}
double add(double x, double y) {
    return x + y;
}
double mux(double x, double y) {
    return x * y;
}
double calculate(double x, double y, double (*fun)(double, double)) {
    return (*fun)(x, y);
}

 

posted @ 2019-01-23 21:51  Lightmonster  阅读(249)  评论(0编辑  收藏  举报