首页 / C++ / c++primer练习4.6-4.12
c++primer练习4.6-4.12
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++primer练习4.6-4.12,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2112字,纯文字阅读大概需要4分钟。
内容图文
![c++primer练习4.6-4.12](/upload/InfoBanner/zyjiaocheng/609/a8414c8e5bb44772b1d760c83b09e85b.jpg)
4.20
vector<string>::iterator iter;
*iter++;
(*iter)++;
*iter.empty();
iter->empty()
++*iter;
iter++->empty();
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<string> i = {"0","1","2","3"};
vector<string>::iterator iter;
for(iter = i.begin(); iter != i.end(); )
{
cout << *iter++ <<endl;
}
}
表达式合理,输出0 1 2 3,表达式的含义是取迭代器指向的参数的值,迭代器向后移一位.
- (a)合法。返回迭代器所指向的元素,然后迭代器递增。
- (b)不合法。因为
vector
元素类型是string
,没有++
操作。 - (c)不合法。这里应该加括号,变为(*iter).empty()。
- (d)合法。判断迭代器当前的元素是否为空。
- (e)不合法。
string
类型没有++
操作。 - (f)合法。判断迭代器当前元素是否为空,然后迭代器递增。
4.21.
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int> shuZu = {0,1,2,3,4,5,6,7,8,9,10};
vector<int>::iterator iter;
for(iter = shuZu.begin(); iter != shuZu.end(); iter++)
{
if((*iter)%2 == 1)
{
*iter = 2*(*iter);
}
cout << *iter << endl;
}
}
4.22
(1)
#include <string>
#include <iostream>
using namespace std;
int main()
{
int grade;
string finalgrade;
cin >> grade;
finalgrade = (grade >= 90 ) ? "high pass" :(grade >= 75) ? "pass" :(grade >= 60) ? "low pass" :"failed";
cout << finalgrade << endl;
system("pause");
}
(2)
#include <string>
#include <iostream>
using namespace std;
int main()
{
int grade;
string finalgrade;
cin >> grade;
if(grade >= 90)
{
finalgrade = "high pass";
}
if(grade >= 75 && grade < 90)
{
finalgrade = "pass";
}
if(grade >= 60 && grade < 75)
{
finalgrade = "low pass";
}
if(grade < 60)
{
finalgrade = "fail";
}
cout << finalgrade << endl;
system("pause");
}
4.23 由于这一条表达式中 == 的优先级高于 = ,所以会先做 == ,就会造成把bool型赋给string的错误,+运算时这条表达式中优先级最高的所以改为
string p1 = s +(s[s.size()-1] == 's' ? "" : "s");
4.24
如果条件运算符满足的是左结合律。那么
finalgrade = (grade > 90) ? "high pass" : (grade <60 ) ? "fail" :"pass";
等同于
finalgrade = ((grade > 90) ? "high pass" : (grade < 60)) ? "fail" : "pass";?
假如此时 grade > 90
,第一个条件表达式的结果是 "high pass"
,而字符串字面值的类型是 const char *
,非空所以为真。因此第二个条件表达式的结果是 "fail"
。这样就出现了自相矛盾的逻辑。
内容总结
以上是互联网集市为您收集整理的c++primer练习4.6-4.12全部内容,希望文章能够帮你解决c++primer练习4.6-4.12所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。