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++primerplus》第8章练习题的更多相关文章

  1. 《C++ primerplus》第13章练习题

    1.对CD类的派生练习.基类CD类存储作者和作品号等信息,派生类Classic额外增加一格"主要作品"的信息.主函数使用拷贝构造函数.按引用传递参数的函数和指针来测试基类和派生类的 ...

  2. 《C++primerplus》第12章练习题

    做一下倒数两题,都是在队列模拟的程序基础上做点修改测试. 5.找出平均等候时间为1分钟时,每小时到达的客户数为多少(试验时间不少于100小时). 指定队伍最大长度10人,模拟100小时.粗略估计答案在 ...

  3. 《C++primerplus》第11章练习题

    1.修改程序清单11.5(随机漫步),使之以特定的格式将结果写入文件中. //vector.h -- Vector Class #ifndef _VECTOR_H_ #define _VECTOR_H ...

  4. 《C++primerplus》第10章练习题

    1.定义一个类表示银行账户.数据成员包括姓名,账号和存款.成员函数可以执行初始化数据.显示数据和取款存款的功能. //Bank.cpp #include<iostream> #includ ...

  5. 《C++primerplus》第9章练习题

    1.(未使用原书例题)练习多文件组织.在一个头文件中定义一种学生的结构体,存储姓名和年龄,声明三个函数分别用于询问有多少个学生,输入学生的信息和展示学生的信息.在另一个源文件中给出所有函数的定义.在主 ...

  6. 《C++primerplus》第7章练习题

    1.用户不断输入两个数,计算调和平均数,直到其中一个数为0. #include<iostream> using namespace std; double harm_mean(double ...

  7. 《C++primerplus》第6章练习题

    本来前面五题都做完了,写博客时没保存好草稿= =,写了个整合版的程序,实现前五题的关键部分. 1.定义一个叫jojo的结构,存储姓名.替身和力量值,使用动态结构数组初始化二乔.承太郎和乔鲁诺乔巴纳等人 ...

  8. 《C++primerplus》第4章练习题

    注:略过部分题目,修改了题设要求,实现差不多的功能 1.使用字符数组.要求用户输入姓名,等第和年龄,输出其姓名和年龄,等第降一级(即字母高一级). #include<iostream> u ...

  9. python第一章练习题

    本章总节 练习题 1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释 编译型:把源代码编译成机器语言的可执行文件,程序执行的时候执行可执行文件即可. 优点:程序执行不 ...

随机推荐

  1. ES6常用总结(一)

    let,const let声明变量,const声明常量,两者均为块级作用域 let,const在块级作用域内不允许重复声明 const声明的基本数据类型不可以修改,引用数据类型可以修改.具体看我的另一 ...

  2. 【HttpRunner v3.x】笔记 ——4. 测试用例-结构解析

    一.官方首推pytest格式 上篇文章我们知道了,httprunner可以支持三种格式的用例,分别是pytest.yaml和json.yaml和json是以前的版本所使用的用例格式,但是在3.x版本上 ...

  3. Java单例模式的实现与破坏

    单例模式是一种设计模式,是在整个运行过程中只需要产生一个实例.那么怎样去创建呢,以下提供了几种方案. 一.创建单例对象 懒汉式 public class TestSingleton { // 构造方法 ...

  4. C/C++ 实现PE文件特征码识别

    PE文件就是我们常说的EXE可执行文件,针对文件特征的识别可以清晰的知道该程序是使用何种编程语言实现的,前提是要有特征库,PE特征识别有多种形式,第一种是静态识别,此方法就是只针对磁盘中文件的特征码字 ...

  5. 5 分钟带你掌握 Makefile 分析

    摘要:Makefile是一个名为GNU-Make软件所需要的脚本文件,该脚本文件可以指导Make软件控制arm-gcc等工具链去编译工程文件最终得到可执行文件,几乎所有的Linux发行版都内置了GNU ...

  6. Linux下rm操作误删恢复

    1.查看被误删的分区 df /home/Java/...      一直到刚刚被误删的文件的路径下 2.在debugfs打开分区 open /dev/ssl       最好这个分区可能不一样,根据上 ...

  7. es创建普通索引以及各种查询

    创建索引 创建普通索引: PUT /my_index { "settings": { "index": { "number_of_shards&quo ...

  8. 软件工程与UML作业3(互评作业)

    博客班级 https://edu.cnblogs.com/campus/fzzcxy/2018SE1/ 作业要求 https://edu.cnblogs.com/campus/fzzcxy/2018S ...

  9. zookeeper源码之服务端核心执行模块

    服务端核心执行模块包括一下几个部分 1.leader选举. 2.

  10. 在自己win系统里面给idea配置Git

    这里直接是写好的步骤 下载链接