C++Primer第五版 6.5.3节练习
2015-09-16 07:10
357 查看
练习6.47:改写6.3.2节(第205页)练习中使用递归输出vector内容的程序,使其有条件地输出与执行过程有关的信息。例如,每次调用时输出vector对象的大小。分别在打开和关闭调试器的情况下编译并执行这个程序。
练习6.48:说明下面这个循环的含义,它对assert的使用合理吗?
答:不合理,当不再输入,或者s = sought时,此时cin为空,表达式求值为假,断言实现,输出错误信息,并退出程序。
练习6.47
练习6.48:说明下面这个循环的含义,它对assert的使用合理吗?
string s; while (cin >> s && s != sought) {} //空函数体 assert(cin);
答:不合理,当不再输入,或者s = sought时,此时cin为空,表达式求值为假,断言实现,输出错误信息,并退出程序。
练习6.47
/* *练习6.47 *2015/6/25 *问题描述:练习6.47:改写6.3.2节(第205页)练习中使用递归输出vector内容的程序,使其有条件地输出与执行过程有关的信息。例如,每次调用时输出vector对象的大小。分别在打开和关闭调试器的情况下编译并执行这个程序。 *功能:递归改写 *作者:Nick Feng *邮箱:nickgreen23@163.com * */ #include <iostream> #include <vector> using namespace std; void print(vector<string> vec, vector<string>::size_type n) // { if (n != vec.size()-1) print(vec,n+1); cout << vec <<" "; } void print_debug(vector<string> vec, vector<string>::size_type n) //关闭调试状态 { #ifndef NDEBUG cerr << __func__ << ": size is " << vec.size() << endl; #endif if (n != vec.size()-1) cout << vec <<" "; print(vec,n+1); } void print_debug_2(vector<string> vec, vector<string>::size_type n)//打开调试状态 { cerr << __func__ << ": size is " << vec.size() << endl; if (n != vec.size()-1) cout << vec <<" "; print(vec,n+1); } int main() { vector<string> vec; string s; while (cin >> s) vec.push_back(s); vector<string>::size_type n = 0; print(vec,n); cout << endl; print_debug(vec,n); cout << endl; print_debug_2(vec,n); return 0; }
相关文章推荐
- C++Primer第五版 6.5.2节练习
- Leetcode Maximal Square
- C语言之赋值操作符和表达式
- C语言中联合体union妙用
- C++那些细节--typedef关键字
- C语言之位操作符
- 配置vim编写C/C++程序时自动缩进
- c++程序设计梳理(谭浩强)3-4章
- c++程序设计梳理(谭浩强)7-8章
- c++程序设计梳理(谭浩强)9章
- c++程序设计梳理(谭浩强)5-6章
- c++程序设计梳理(谭浩强)13章
- 讲解C++中的枚举类型以及声明新类型的方法
- c++主函数输出圆柱体的半径和高,然后调用函数输出其体积
- 链表java_类c++,linkedlist,iterator
- 回调函数
- C++虚函数表解析
- 小C的故事(快速学C语言,,,极速版!)
- 《VC++就业培训宝典之MFC视频教程》学习笔记
- 简单选择排序的C++实现