C++ primer第3章作业
来源:互联网 发布:沪港通交易数据 编辑:程序博客网 时间:2024/06/02 23:56
习题3.1
用适当的using声明,而不是用std::访问标准库的名字,给定次与幂,求结果
#include<iostream>using std::cin;using std::cout;class cimi{double di;int mi;public:cimi(double a,int b){di = a;mi = b;double temp=1;for (int i = 1; i <= b; i++){temp *= this->di;}std::cout << temp << std::endl;}};int main(){cout << "请输入底数与幂" << std::endl;double di;int mi;cin >> di;cin >> mi;cimi d(di, mi);system("pause");return 0;}
习题3.5
编写程序实现从标准输入每次读入一行文本,然后改写程序,每次读入一个单词
#include<iostream>#include<string>int main(){std::string z;while (getline(std::cin, z))//一次一行std::cout << z << std::endl;return 0;}
int main1(){std::string z;while (std::cin >> z)//一次一个单词{std::cout << z << std::endl;}return 0;}
3.7
编写一个程序读入2个String对象测试他们是否相等,若不相等指出哪个大,在测试他们长度
#include<iostream>#include<string>//测试是否相等,谁大int main(){std::string s1, s2;getline(std::cin, s1);getline(std::cin, s2);if (s1 == s2){std::cout << "equal" << std::endl;}else if (s1 > s2)std::cout << "s1>s2" << std::endl;elsestd::cout << "s2>s1" << std::endl;system("pause"); return 0;}
#include<iostream>#include<string>int main(){std::string s1, s2;getline(std::cin, s1);getline(std::cin, s2);if (s1.size() == s2.size()){std::cout << "equal" << std::endl;}else if (s1.size()>s2.size())std::cout << "s1>s2" << std::endl;elsestd::cout << "s2>s1" << std::endl;system("pause"); return 0;}
习题3.8编写一个程序,从标准读入多个string对象.连到一起,然后改写程序把连接后的string以空格隔开
#include<iostream>#include<string>int main(){std::string s1, s2;while (std::cin >> s1)s2 += s1;std::cout << s2 << std::endl;system("pause");return 0;}
以空格隔开
#include<iostream>#include<string>int main(){std::string s1, s2;while (std::cin >> s1){s2 += s1;s2 += " ";}std::cout << s2 << std::endl;system("pause");return 0;}
编写程序,从string对象中去掉标点符号,
#include<iostream>#include<string>int main(){std::string s;getline(std::cin, s);for (std::string::size_type j=0; j != s.size()-1; j++){if (ispunct(s[j])){std::cout << "木有此字符串" << std::endl;system("pause");return 0;}}std::cout << "此字符串为" << s << std::endl;system("pause");}
习题3.13
读入一组整数到vector对象,计算并输出每对相邻元素的和,如果读入元素个数是奇数则提示用户最后一个元素没有求和
#include<iostream>#include<vector>int main(){std::vector<int> num;int a;while (std::cin >> a)num.push_back(a);if (num.size() == 0){std::cout << "无元素" << std::endl;}//下一节/*for(std::vector<int>::iterator q=num.begin();q!=num.end()-1;q+=2){std::cout<<*q+*(q+1)<<std::endl;}*/for (std::vector<int>::size_type ix = 0; ix != num.size()-1; ix+=2){std::cout << num[ix] + num[ix + 1] << std::endl;}if (num.size() % 2 != 0){std::cout << "最后一个元素" << num[num.size() - 1] <<"没有相加"<< std::endl;}system("pause");return 0;}
修改程序,头尾配对
#include<iostream>#include<vector>int main(){std::vector<int> num;int a;while (std::cin >> a)num.push_back(a);std::vector<int>::size_type first = 0;std::vector<int>::size_type last = num.size() - 1;for (first, last; first < last; last--, first++){std::cout << num[first] + num[last] << std::endl;}if (first == last){std::cout << "居中这个数"<<num[first]<<"木有被加" << std::endl;}system("pause");return 0;}
读入一段文本到vector对象,每个单词都存储为vector的一个元素,把vector对象中的字母转换为大写字母,输出vector对象中转换的元素
#include<iostream>#include<string>#include<vector>#include<cctype>int main(){std::vector<std::string> str1;std::string str;while (std::cin >> str){str1.push_back(str);}if (str1.size() == 0){std::cout << "没有元素" << std::endl;return 0;}for (std::vector<std::string>::size_type ix = 0; ix != str1.size(); ++ix){for (std::string::size_type index = 0; index != str1[ix].size(); ++index){if (islower(str1[ix][index])) //测试字符是否为小写字母str1[ix][index] = toupper(str1[ix][index]); // 将字符c转换为大写英文字母}if ((ix + 1) % 8 == 0){std::cout << std::endl;}}return 0;}
习题3.18
编写程序来创建10个元素的vector对象,用迭代器把每个元素值改成当前值2倍
#include<iostream>#include<string>#include<vector>#include<cctype>int main(){std::vector<int> a;int num;while (std::cin >> num)a.push_back(num);for (std::vector<int>::iterator p = a.begin(); p != a.end(); ++p){*p = (*p) * 2;}system("pause");return 0;}
习题3.21
何时使用const 迭代器?又在何时使用const_iterator?解释两者的区别
const 迭代器是迭代器常量,该迭代器本身的值不能修改,即该迭代器在定义时
需要初始化,而且初始化之后,不能再指向其他元素。若需要指向固定元素的
迭代器,则可以使用const 迭代器。
向const 对象的引用,即通过这种迭代器访问到的对象是常量。该对象不能修
改,因此,const_iterator 类型只能用于读取容器内的元素,不能修改元素的
值。若只需遍历容器中的元素而无需修改它们,则可以使用const_iterator。
如果采用下面的方法来计算mid 会产生什么结果?
vector<int>::iterator mid = (vi.begin() + vi.end())/2;
迭代器没有初始化,肯定错误
习题3.23
解释下面每个bitset 对象包含的位模式: (
a) bitset<64> bitvec(32);
(b) bitset<32> bv(1010101);
(c) string bstr; cin >> bstr; bitset<8> bv(bstr);
(a)第5个位置为1,从0开始,32=2的5次方,其他都为0
(b)0、2、4、5、7、8、11、13、 14、16、17、18、19 位置为1,其余位置均为0。因为十进制数1010101 对应的
二进制数为000000000000011110110100110110101。
注意: (c)bv 有8 个二进制位,(位编号从0 开始)用读入的字符串的从右至左的8 个字符对bv 的0~7 位进行初始化
习题3.24
考虑这样的序列1,2,3,5,8,13,21,并初始化一个将该序列数字所对应的位置设 置为1 的bitset<32>对象。然后换个方法,给定一个空的bitset 对象,编写一 小段程序把相应的数位设置为1。
#include<iostream>#include<bitset>int main(){std::bitset<32> bv;int x = 0, y = 1, z;z = x + y;while (z <= 21){bv.set(z);x = y;y = z;z = x + y;}}斐波那契定律
- C++ primer第3章作业
- 我的C++ primer plus第3章作业总结
- C++Primer 第3章笔记整理
- C++Primer第5版读书笔记(第3章)
- [C/C++] 第12章 类 primer
- 我的C++ primer plus第4章作业总结
- 我的C++ primer plus第5章作业总结
- C++ primer plus第6版第三章作业
- C++ primer plus第6版第四章作业
- C++Primer第3章3.2.3练习。
- Primer C 4th(第3章习题)
- 【C++Primer学习笔记】第3章 标准库类型
- 学习C Primer Plus第3章之心得
- c primer plus第3章总结:数据类型
- 《c++primer》笔记 第3章 字符串、向量和数组
- 《C Primer Plus(第5版)中文版》第7章编程练习第3题
- C++Primer 读书笔记 第1章 开始
- C++Primer 读书笔记 第2章 浏览
- 量到质的变化
- 【记录】螺栓连接——预紧力
- 1412261858-蓝桥杯-基础练习 特殊的数字
- Cracking the coding interview汇总目录
- Quick Cocos2dx 调试问题
- C++ primer第3章作业
- IOS Modal Segue和Unwind Segue的使用Demo-附完整工程
- 【02】台大机器学习L7 The VC Dimension
- oc学习2
- Quartz调查统计:12大编程语言收入排行榜
- 我的java之旅
- 如何快速的解决Maven依赖冲突
- 【记录】递归
- 图解git(转)