一维数组的定义与访问
一维数组的定义与访问
C++一维数组基本应用(不包括变长数组):数组定义、初始化与元素访问。
一维数组把同类型的若干元素排成一行,用下标访问。定义如 int a[5]; 表示 5 个 int,下标从 0 到 4。可以在定义时初始化:int a[5] = {2, 4, 6}; 未写出的元素补 0。访问写作 a[i]。大纲明确不包括变长数组:长度应是编译期常量(或常量表达式),不要写 int n; cin >> n; int a[n];。元素在内存中连续存放,但三级先掌握「名字 + 下标」,不必展开指针算术。
客观题常考:下标范围、部分初始化后某元素的值、sizeof(a) 与 sizeof(a[0]) 的关系。判断题会把 a[5] 说成合法访问。编程题读入 n 再开数组时,应用足够大的固定上限(如 int a[1005]),而不是 VLA。认证标准以 C++11 为准,变长数组不属于该标准。
int a[5] = {2, 4, 6};
cout << a[0] << ' ' << a[2]; // 2 6
cout << a[3]; // 0(未列出的元素)
// a[5] 越界,不要访问
下标从 0 起算;把长度 n 当成最大合法下标,或漏掉未初始化元素为 0 的规则,是最常见的错法。
一个数组定义为 double array[3];,则这个数组占用内存的大小为( )。
以下数组定义,符合 C++ 语言语法的是( )。
下列关于 C++ 语言中数组的叙述,不正确的是( )。
在 C++语言中,长度为 n 的数组,合理的下标范围是从 0 到 n,包括 0 和 n。
在 C++ 语言中,可以使用字符(如 '0')作为数组下标。
在 C++ 语言中,数组被定义时,它的大小就确定了。
如果数组定义为 long long array[] = {3, 5, 7, 2};,则数组 array 占用的字节数为( )。
一个数组定义为 double array[3];,则可合理访问这个数组的元素的下标最大为( )。
以下数组定义,符合 C++ 语言语法的是( )。
下列关于 C++ 语言中数组的叙述,不正确的是( )。
在 C++ 语言中,长度为 n 的数组,访问下标为 n 的元素会引起编译错误。
在 C++ 语言中,数组下标的大小决定元素在逻辑上的先后顺序,与元素在内存中位置的先后顺序无关。
在 C++ 语言中,定义数组时,[] 中必须指定元素个数。
下面 C++ 数组的定义中,会丢失数据的是
下面 C++ 代码执行后的输出是()。
char ch[10]={'1'};
cout<<ch[2]<<endl;
执行 C++ 代码将输出 0 5,5 之后还有一个空格。()
int list[10]={1,2,3,4,5,6,7,8,9,10};
for(int i=0;i<10;i++)
{
if(i%5==0)
{
cout<<list[i]<<" ";
}
}
下面 C++ 代码将输出 1。()
int list[10]={1};
cout<<list<<endl;
下面 C++ 程序将输出 1。()
int arr[10]={1};
cout<<arr[0]<<endl;
在 C++ 语言中,字符数组被定义时,它的大小可以调整。( )
数组的所有元素在内存中可以不连续存放。
C++ 中可以对数组和数组的每个基础类型的元素赋值。
关于一维数组,下列程序能够正确执行的是( )。
A.
int a[10];
int sum=0;
for(int i=0;i<=10;i++) {
sum=sum+a[i];
}
B.
int a[10]={1,2,3,4,5,6,7,8,9,10};
int sum=0;
for(int i=0;i<=10;i++) {
sum=sum+a[i];
}
C.
int a[10]={1,2,3,4,5,6,7,8,9,10};
int sum=0;
for(int i=0;i<10;i++) {
um=sum+a[i];
}
D.
int a[10]={0};
int sum=0;
for(int i=0;i<=10;i++) {
sum=sum+a[i];
}
原文保真说明:原卷印刷错误 1 处、来源改写 1 处(照原卷保留,未作修改)
来源题面被改写版式题干
原卷作
um=sum+a[i];洛谷有题把四段代码收成外链截图;已按官方 PDF 第 3–4 页恢复为四个代码块。选项 C 第 4 行原卷印作 um=sum+a[i](少 s),照录。
已按官方原件恢复:现为原卷原文
原卷印刷如此错字题干 · 第 4 行
原卷作
um=sum+a[i];,常规写法应为sum=sum+a[i];原卷选项 C 第 4 行印作 um=sum+a[i],比 sum 少一个 s(图像与文本层一致),照原卷转写。
下面的程序中,会输出( )。
int a[10]={1,2,3,4,5,6,7,8,9,10};
cout<<a[10]<<endl;
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写版式题干
原卷作
int a[10]={1,2,3,4,5,6,7,8,9,10};洛谷有题数组初值与 cout 两侧加了空格;已按官方 PDF 第 4 页列位恢复。
已按官方原件恢复:现为原卷原文
下列程序将输出 1。( )
int a[10]={1};
cout<<a[1]<<endl;
如何正确定义一个长度为 5 的整型数组( )
以下关于 C++ 数组的说法,错误的是( )。
执行以下 C++ 代码后,数组 arr 的内容是( )。
int arr[4] = {1, 2, 3};
arr[3] = arr[0] + arr[2];
以下 C++ 代码中存在几处错误( )。
#include <iostream>
using namespace std;
int main() {
const int SIZE = 5;
int arr[SIZE];
for (int i = 0; i <= SIZE; i++) {
arr[i] = i * 2;
}
cout << arr[SIZE] << endl;
return 0;
}
原文保真说明:来源改写 1 处(照原卷保留,未作修改)
来源题面被改写版式题干 · 第 2 行
原卷作
using namespace std;洛谷有题 using namespace std; 后多一空行;官方 PDF 第 4 页列位重建为 11 行、无空行,QC 已恢复。
已按官方原件恢复:现为原卷原文
以下关于标准 C++ 一维数组的描述,哪一项是错误的?( )
以下代码是一个程序的部分代码,能够正确执行,输出的结果是( )
int arr[5] = {1, 2, 3, 4, 5};
int p = arr[1];
cout << (p + 2) << endl;
在 C++ 中,数组名不能改变,数组名不能被赋值。
在 C++ 中,int a[] = {1, 2, 3, 4, 5}; 可以定义一个包含 5 个元素的整型数组。
C++ 表达式 z = a > b ? x : y 等同于:
if (a > b) {
z = x;
} else {
z = y;
}
以下代码执行后,输出将会是 2。
int main() {
int arr[5] = {1, 2, 3, 4, 5};
cout << arr[3 > 2 ? 1 : 2] << endl;
return 0;
}
执行以下代码后,输出结果是:( )。
int arr[] = {5, 10, 15, 20, 25, 30};
int count = sizeof(arr) / sizeof(arr[0]);
cout << count;
定义 int arr[5] = {1,2,3}; ,则 arr[3] 的值为 0,arr[5] 是合法下标。
定义 double arr[10]; ,未手动初始化时,数组中所有元素的默认值为 0.0。
定义 int arr[] = {1,2,3}; ,则 sizeof(arr) 的结果为 12(int 占 4 字节)。
以下数组定义,符合 C++ 语法的是( )。