您的位置:首页 > 编程语言 > C语言/C++

C++primer[习题][第三章][21-30]

2017-11-26 18:35 495 查看
3.21

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{
vector<int> ivec(10, 42);
for (auto i = ivec.begin(); i != ivec.end(); i++)
{
cout << *i << " ";
}
return 0;
}


3.22

#include <iostream>
#include <vector>
#include <string>

using std::cin;
using std::cout;
using std::endl;
using std::vector;
using std::string;
int main()
{
vector<string> svec(10, "hello ");
for (auto i = svec.begin(); i != svec.end(); i++)
{
for (auto &c : (*i))
{
c = toupper(c);
}
cout << *i;
}
return 0;
}


3.23

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{
vector<int> ivec(10, 20);
for (auto &c : ivec)
{
c *= 2;
}
for (auto &c : ivec)
{
cout << c << " ";
}
return 0;
}


3.24

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{
vector<int> ivec(10, 20);
for (auto i = ivec.begin(); i != ivec.end() - 1; i++)
{
cout << *i + *(i + 1) << " ";
}
auto i = ivec.begin();
auto j = ivec.end() - 1;
while (i < j)
{
cout << *i + *j << " ";
i++;
j--;
}
return 0;
}


3.25

#include <iostream>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::vector;

int main()
{
vector<unsigned> scores(11, 0);
auto scoresiter = scores.begin();
unsigned grade;
while (cin >> grade)
{
if (grade <= 100)
{
++*(scoresiter + grade / 10);
}
}
for (auto score : scores)
{
cout << score << " ";
}
return 0;
}


3.26

迭代器没有加法运算,end-beg表示当前位置与起始位置之间相隔多少元素,除2则为中间位置与beg的差距,加上beg则表示将beg移动到中间位置。

3.27

unsigned buf_size = 1024;
int ia[buf_size];               //非法,buf_size必须是个常量表达式
int ib[4 * 7 - 14];             //正确。
int ic[txt_size()];             //非法,txt_size()必须是个常量值
char st[11] = "fundamental";    //非法,数组大小应该为12


3.28

string sa[10];          //值为空字符串
int ia[10];             //值全为0
int main()
{
string sa2[10];     //值为空字符串
int ia2[10];        //未定义值
return 0;
}


3.29

1.数组定长。

2.数组不可以随意增加删除元素。

3.30

constexpr size_t array_size = 10;
int ia[array_size];
for (size_t ix = 1; ix <= array_size; i++)
{
ia[ix] = ix;
}


当ix到10,下标越界,需要改成
size_t ix = 0; ix < array_size; i++
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: