• C++Primer Plus习题记录-Chapter8


    8-2

    #include "pch.h"
    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    #include <string>
    #include <cctype>
    #include <array>
    #include <iomanip>
    
    using namespace std;
    struct CandyBar
    {
        string brand;
        double weight;
        int heat;
    };
    void info_candy(CandyBar &changed_para, char* str, double m, int n);
    void show(CandyBar &candy);//test
    
    int main() {
        CandyBar init_para = {
            "Millennium Munch",
            2.85,
            350
        };
        show(init_para);
        char ch[20];
        cin.getline(ch,20);
        double m;
        cin >> m;
        int n;
        cin >> n;
        info_candy(init_para, ch, m, n);
        show(init_para);
        return 0;
    }
    void info_candy(CandyBar &changed_para, char* str, double m, int n) {
        changed_para.brand = str;
        changed_para.weight = m;
        changed_para.heat = n;
    }
    void show(CandyBar &candy) {
        cout << candy.brand << "
    " << candy.weight << "
    " << candy.heat << endl;
    }

     8-3

    #include "pch.h"
    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    #include <string>
    #include <cctype>
    #include <array>
    #include <iomanip>
    #include <algorithm>
    using namespace std;
    void upper(string& lower);
    int main() {
        string lower;
        getline(cin, lower);
        while (lower!="q")
        {
            upper(lower);
            cout << lower << endl;
            getline(cin, lower);
        }
        return 0;
    }
    void upper(string & lower) {
        char *pt= &lower[0];
        int length = lower.size();
        pt[0]=toupper(pt[0]);
        for (int i = 1; i < length; i++) {
            pt[i]=toupper(pt[i]);
        }
    }

     8-4

    using namespace std;
    struct stringy
    {
        char* str;
        int ct;
    };
    void set(stringy &beany, char []);
    void show(stringy str,int n=1);
    void show(const char* str, int n=1);
    int main() {
        stringy beany;
        char testing[] = "Reality isn't what it used to be.";
        set(beany, testing);
        show(beany);
        testing[0] = 'D';
        testing[1] = 'u';
        show(testing);
        show(testing, 3);
        show("Done!");
    
        return 0;
    }
    void set(stringy &beany, char ch[]) {
            beany.str = ch;
    }
    void show(stringy str,int n) {
        for (int i = 0; i < n; i++)
            cout << str.str << endl;
    }
    void show(const char* str, int n) {
        for (int i = 0; i < n; i++)
            cout << str << endl;
    }

     8-5

    template<class T>
    T maxn(T a[]);
    
    int main() {
        
        int a[5] = { 1,2,3,4,5 };
        double aa[5] = { 2.1,3.1,4.1,1.1,1.0 };
        int max1 = maxn(a);
        double max2 = maxn(aa);
        cout << max1 << ' ' << max2;
        return 0;
    }
    template<class T>
    T maxn(T a[]) {
        T temp=a[0];
        for (int i = 1; i < 5; i++) {
            if (a[i] > temp)
                temp = a[i];
        }
        return temp;
    }

     8-6

    using namespace std;
    template<typename T>
    T maxn(T ar[], int n);
    template <> const char* maxn(const char* ch[], int n);
    int main(void) {
        const char *ch[3] = { "aa","b","ccc" };
        int a[6] = { 1,2,3,4,2,4 };
        double b[4] = { 1.1,2.2,0.3,2.4 };
        int maxa = maxn(a,6);
        double maxb = maxn(b, 4);
        const char* pr;
        pr = maxn(ch, 3);
        cout << maxa << " " << maxb << " " << &pr << " " << static_cast<const void*>(pr);
        return 0;
    }
    template<typename T>
    T maxn(T ar[], int n) {
        T temp;
        temp = ar[0];
        for (int i = 1; i < n; i++) {
            if (ar[i] > temp)
                temp = ar[i];
        }
        return temp;
    }
    template <> const char* maxn(const char* ch[], int n) {
        const char *temp = ch[0];
        for (int i = 1; i < n; i++) {
            if (strlen(temp) < strlen(ch[i]))
                temp = ch[i];
        }
        return temp;
    }

    8-7

    using namespace std;
    
    template<typename T>
    T sumArray(T ar[], int n);
    template<typename T>
    T sumArray(T* ar[], int n);
    struct debts
    {
        char name[50];
        double amount;
    };
    int main(void) {
        int things[6] = { 13,31,103,301,310,130 };
        debts mr[3]= {
            {"Light",13.4},
            {"Lighr",13.1},
            {"Lighy",13.2}
        };
        double* pd[3];
        for (int i = 0; i < 3; i++) {
            pd[i] = &mr[i].amount;
        }
        int sum1;
        sum1=sumArray(things, 6);
        double sum2;
        sum2 = sumArray(pd, 3);
        cout << sum1 << " " << sum2;
        return 0;
    }
    
    template<typename T>
    T sumArray(T ar[], int n) {
        T sum = 0;
        for (int i = 0; i < n; i++)
            sum += ar[i];
        return sum;
    }
    template<typename T>
    T sumArray(T* ar[], int n) {
        T sum = 0;
        for (int i = 0; i < n; i++)
            sum += *ar[i];
        return sum;
    }
  • 相关阅读:
    快捷定位目录 z武器
    [UOJ317]【NOI2017】游戏 题解
    2-SAT 问题与解法小结
    link-cut-tree 简单介绍
    hihocoder #1456 : Rikka with Lattice(杜教筛)
    杜教筛小结
    BZOJ 2969: 矩形粉刷(期望)
    UVA10294 Arif in Dhaka (群论,Polya定理)
    BZOJ 1926: [Sdoi2010]粟粟的书架(主席树,二分答案)
    BZOJ 2683: 简单题(CDQ分治 + 树状数组)
  • 原文地址:https://www.cnblogs.com/lightmonster/p/10320227.html
Copyright © 2020-2023  润新知