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. 解决warning MSB8012:问题

    问题描述: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning M ...

  2. Sequence (矩阵快速幂+快速幂+费马小定理)

            Holion August will eat every thing he has found. Now there are many foods,but he does not wa ...

  3. Brackets(括号最大匹配问题(区间dp))

    We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a ...

  4. [V&N公开赛] CheckIn

    V&N战队考核+招新,赵师傅出的Web题,做着感觉有点顶,趁热打铁写write up记录一下考察的知识点 这道题说是CheckIn其实还是有一定难度的(也可能是我太菜了),进入题目直接给出了f ...

  5. 【MySQL】我这样分析MySQL中的事务,面试官对我刮目相看!!

    写在前面 相信大部分小伙伴在面试过程中,只会针对面试官提出的表面问题来进行回答.其实不然,面试官问的每一个问题都是经过深思熟虑的,面试的时间相对来说也是短暂的,面试官不可能在很短的时间内就对你非常了解 ...

  6. 实际项目中遇到EF实体类的操作问题及操作方法

    之前一直做ASP,都是直接写数据库操作语句,但是现在使用linq或者EF了,具体数据库操作不会了,遇到几个问题,然后经过查找资料解决了,记录一下. 一.遇到序列化问题 遇到循环引用问题,我的项目是一个 ...

  7. MySQL 日期时间类型怎么选?千万不要乱用!

    构建数据库写程序避免不了使用日期和时间,对于数据库来说,有多种日期时间字段可供选择,如 timestamp 和 datetime 以及使用 int 来存储 unix timestamp. 不仅新手,包 ...

  8. Oracle12C配置对外访问

    Oracle12C配置对外访问 第一步: 开放端口或者关闭防火墙 第二步: 配置Oracle net manager打开Net manager 修改为共享服务器 第三步: 配置连接数打开Databas ...

  9. vue相关知识点及面试

    ### vue #### vue生命周期 beforeCreated `实例初始化,数据观察和event/watch事件配置之前被调用` created `实例创建后立即调用,数据观测,数据和方法运算 ...

  10. element封装表格

    <template> <div> <el-scrollbar class="table-wrap"> <el-table v-loadin ...