练习题

Posted banmei-brandy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了练习题相关的知识,希望对你有一定的参考价值。

 1.(简单用一下引用变量,没有采用书中的题目)定义一个替身结构体,存储名字(char[])和力量值(int)。使用结构体引用作为形参写两个函数,一个不加const,使得能对定义的结构体做修改,另一个加上const不变动它的内容。第一个函数设置替身的名字和力量值,第二个函数输出结构的信息。

#include<iostream>
using namespace std;

struct stand

    int power;
    char name[15];
;

void show_stand(const stand & temp_show);
void set_stand(stand & temp_set);

int main()

    stand new_stand;

    set_stand(new_stand);
    show_stand(new_stand);

    system("pause");


void show_stand(const stand & temp_show)

    cout << "name:" << temp_show.name << endl;
    cout << "power:" << temp_show.power << endl;


void set_stand(stand & temp_set)

    cout << "Enter stand‘s name:";
    cin .get(temp_set.name,15);
    cin.get();
    cout << "Enter stand‘s power:";
    cin >> temp_set.power;
    cout << "\n";

 

2.编写一个函数,接受一个指向string对象的引用作为参数,并将该string对象的内容转换为大写,使用toupper函数。通过循环提示输入。

#include<iostream>
#include<cctype>
#include<string>
using namespace std;

void upper_string(string & string_temp);

int main()

    string input_string;
    
    cout << "Enter a string (q to quit): ";

    getline(cin,input_string);

    while (input_string != "q")
    
        upper_string(input_string);
        cout << input_string;
        cout << "\nNext string (q to quit): ";
        getline(cin, input_string);
    

    cout << "Bye.\n";
    system("pause");


void upper_string(string & string_temp)

    for (int i = 0; string_temp[i] != \0; i++)
    
        string_temp[i] = toupper(string_temp[i]);
    

 

3.完成书上的例程,编写一个set函数,接受一个结构体引用和一个字符串,使用new为结构体内的字符指针动态分配空间以存储该字符串。利用函数重载编写两个show函数,都使用默认参数,一个使用上面定义的结构体,输出它存储的字符串,另一个直接输出传入的字符串。

#include<iostream>
#include<cstring>
using namespace std;

struct stringy 
    char * str;
    int ct;
;

void set(stringy & st_ref, string str_set_temp);
void show(const stringy st_show_temp, int times = 1);
void show(const string str_show_temp, int times = 1);

int main()

    stringy beany;
    char testing[] = "Reality isn‘t it used to be.";

    set(beany,testing);
    show(beany);
    show(beany, 2);
    testing[0] = D;
    testing[1] = u;
    show(testing, 3);
    show("Done!");

    system("pause");


void set(stringy & st_ref, string str_set_temp)

    st_ref.ct = str_set_temp.length();    //获取字符串的长度
    st_ref.str = new char[st_ref.ct];    //为结构体引用里面的字符数组分配空间
    for (int i = 0; i < st_ref.ct; i++)
    
        st_ref.str[i] = str_set_temp[i];
    


void show(const stringy st_show_temp, int times = 1)

    for (int t = 0; t < times; t++)
    
        for (int i = 0; i < st_show_temp.ct; i++)
        
            cout << st_show_temp.str[i];
        
        cout << "\n";
    


void show(const string str_show_temp, int times = 1)

    for (int t = 0; t < times; t++)
    
        for (int i = 0; i < str_show_temp.length(); i++)
        
            cout << str_show_temp[i];
        
        cout << "\n";
    

 

4.简单使用模板函数。编写模板函数,接受不同类型的数组和其大小,输出其中的最大值。先使用int数组测试,再使用double数组测试。

#include<iostream>
using namespace std;

template <typename T>
T maxn(T * t_ptr, int n);

template <typename T>
void input_num(T * temp, int n);

int main()

    int array_size; 

    //先使用int数组测试
    cout << "How many numbers:(int) ";
    cin >> array_size;

    int * int_array = new int [array_size];
    input_num(int_array,array_size);
    cout << "Max number: " << maxn(int_array, array_size) << endl;

    //再使用double数组测试
    cout << "How many numbers:(double) ";
    cin >> array_size;

    double * double_array = new double[array_size];
    input_num(double_array, array_size);
    cout << "Max number: " << maxn(double_array, array_size) << endl;

    delete[]int_array;
    delete[]double_array;
    system("pause");


template <typename T>
T maxn(T * t_ptr, int n)

    T max = t_ptr[0];
    for (int i = 0; i < n; i++)
    
        if (t_ptr[i] > max)
            max = t_ptr[i];
        else ;
    
    return max;


template <typename T>
void input_num(T * temp, int n)

    cout << "Enter the numbers:" << endl;
    for (int i = 0; i < n; i++)
    
        cin >> temp[i];
    

*需要注意模板函数每次函数原型和函数的实现之前,都要加上template<typename ...>

以上是关于练习题的主要内容,如果未能解决你的问题,请参考以下文章

C语言学习笔记

开始学习C++

通过 fstream 创建结构

2021年霸榜的程序员书有这样12本

VS2015 控制台cl编译器全局环境变量配置

2018阅读记录