3.30指出下面代码的索引错误。
constexpr size_t array_size = 10;
int ia[array_size];
for (size_t ix = 1; //下标应从0开始
ix <= array_size; //不能大于等于数组大小
++ix){
ia[ix] = ix;
}
3.31编写一段程序,定义一个含有10个int的数组,令每个元素的值就是其下标值。
#include <iostream>
#include <string>
using namespace std;
int main(){
const size_t array_size = 10;
int ia[array_size];
for (size_t ix = 0; ix < array_size; ++ix)
{
ia[ix] = ix;
cout << ia[ix] << " ";
}
return 0;
}
3.32 将上一题刚刚创建的数组拷贝给另外一个数组。利用vector重写程序,实现类似的功能。
//数组
#include <iostream>
#include <string>
using namespace std;
int main(){
const size_t array_size = 10;
int ia[array_size];
int ib[array_size];
//赋值
for (size_t ix = 0; ix < array_size; ++ix)
{
ia[ix] = ix;
cout << ia[ix] << " ";
}
cout << endl;
//拷贝
for (size_t i = 0; i < array_size; ++i)
{
ib[i] = ia[i];
cout << ia[i] << " ";
}
return 0;
}
//vector
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
const size_t size = 10;
vector<int> v;
vector<int> v2;
for (size_t i = 0; i != size; ++i)
{
v.push_back(i);
cout << v[i] << " ";
}
cout << endl;
for (size_t i = 0; i != size; ++i)
{
v2.push_back(v[i]);
cout << v2[i] << " ";
}
return 0;
}
3.33对于下列程序来说,如果不初始化scores
将会发生什么?
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main(){
unsigned scores[11];
unsigned grade;
while (cin >> grade)
{
if (grade <= 100)
{
++scores[grade / 10];
}
}
return 0;
}
不初始化scores内值为随机值,统计结果必然不正确。