大学MOOC C++程序设计(太原科技大学)1454519167 最新慕课完整章节测试答案
第13讲 数组的定义和使用
文章目录
第13讲 掌握数组的定义和使用
1、单选题:
下列关于数组的描述正确是:
选项:
A: 数组的长度是固定的,而其中元素的数据类型可以不同
B: 数组的长度是固定的,而其中元素的数据类型必须相同
C: 数组的长度是可变的,而其中元素的数据类型可以不同
D: 数组的长度是可变的,而其中元素的数据类型必须相同
答案: 【 数组的长度是固定的,而其中元素的数据类型必须相同】
2、单选题:
在C++语言中引用数组元素时,下面关于数组下标数据类型的说法错误的是:
选项:
A: 整型常量
B: 整型表达式
C: 整型常量或整型表达式
D: 任何类型的表达式
答案: 【 任何类型的表达式】
3、单选题:
要定义数组A,使得其中每个元素的数据分别依次为:3、9、4、8、0、0、0,错误的定义语句是:
选项:
A: int A[]={3,9,4,8,0,0,0};
B: int A[9]={3,9,4,8,0,0,0};
C: int A[]={3,9,4,8};
D: int A[7]={3,9,4,8};
答案: 【 int A[]={3,9,4,8};】
4、单选题:
有如下数组声明:int value[30];,下标值引用错误的是:
选项:
A: value[30]
B: value[0]
C: value[10]
D: value[20]
答案: 【 value[30]】
5、单选题:
以下叙述中错误的是:
选项:
A: 对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B: 数组名代表的是数组所占存储区的首地址,其值不可改变
C: 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D: 可以通过赋初值的方式确定数组元素的个数
答案: 【 当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息】
6、单选题:
以下正确的二维数组定义是:
选项:
A: int a[][]={1,2,3,4,5,6};
B: int a[2][]={1,2,3,4,5,6};
C: int a[][3]={1,2,3,4,5,6};
D: int a[2,3]={1,2,3,4,5,6};
答案: 【 int a[][3]={1,2,3,4,5,6};】
7、单选题:
以下对二维数组a进行初始化正确的是:
选项:
A: int a[2][]={{1,0,1},{5,2,3}} ;
B: int a[][3]={{1,2,3},{4,5,6}} ;
C: int a[2][4]={{1,2,3},{4,5},{6}} ;
D: int a[][3]={{1,0,1},{},{1,1}} ;
答案: 【 int a[][3]={{1,2,3},{4,5,6}} ;】
8、单选题:
若有定义:int a[3][4];则正确引用数组a元素的是:
选项:
A: a[2][4]
B: a[3][3]
C: a[0][0]
D: a[3][4]
答案: 【 a[0][0]】
9、单选题:
若有定义:int a[][4]={0,0};以下叙述中错误的是:
选项:
A: 数组a的每个元素都可得到初值0
B: 二维数组a的第一维大小为1
C: 因为初值个数除以a中第二维大小的值的商为0,故数组a的行数为1
D: 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0
答案: 【 只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0】
10、单选题:
下面选项中等价的是:
选项:
A: int a[2][3]={1,0,2,2,4,5}与int a[2][]= {1,0,2,2,4,5};
B: int a[][3]= {1,0,2,2,4,5}与int a[2][3]= {1,0,2,2,4,5};
C: int a[2][3]={3,4,5}与int a[][3]={3,4,5};
D: int a[2][3]={0,1}与int a[2][3]={{0},{1}};
答案: 【 int a[][3]= {1,0,2,2,4,5}与int a[2][3]= {1,0,2,2,4,5};】
第17讲 指针的定义与使用
第17讲 理解指针的定义,掌握指针的使用方法
1、单选题:
下面对于指针的描述不正确的是:
选项:
A: 指针是地址变量
B: 指针不能用除0以外的常量赋值
C: 两个指针变量的加法无意义
D: 指针指向不同基类型的变量长度不同
答案: 【 指针指向不同基类型的变量长度不同】
2、单选题:
在int a=3,int *p=&a;中,*p的值是:
选项:
A: 变量a的地址值
B: 无意义
C: 变量p的地址值
D: 3
答案: 【 3】
3、单选题:
已知int a, *pa=&a;输出指针pa十进制的地址值的方法是:
选项:
A: cout<<pa;
B: cout<<*pa;
C: cout<<&pa;
D: cout<<long(&pa);
答案: 【 cout<<long(&pa);】
4、单选题:
变量的指针,其含义是指该变量的:
选项:
A: 值
B: 地址
C: 名
D: 一个标志
答案: 【 地址】
5、单选题:
已有定义int k=2;int *ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值是:
选项:
A: k=*ptr1+*ptr2
B: ptr2=k
C: ptr1=ptr2
D: k=*ptr1*(*ptr2)
答案: 【 ptr2=k】
6、单选题:
若有int *p,a=4;和p=&a;下面那个选项均代表地址?
选项:
A: a,p,*&a
B: &*a,&a,*p
C: *&p,*p,&a
D: &a,&*p,p
答案: 【 &a,&*p,p】
7、单选题:
若变量已正确定义并且指针p已经指向变量x,则*&x相当于:
选项:
A: x
B: p
C: &x
D: &*p
答案: 【 x】
8、单选题:
若定义了int m,n=0,*p1=&m;则下列哪个表达式与m=n等价。
选项:
A: m=*p1
B: *p1=&*n
C: *&p1=&*n
D: *p1=*&n
答案: 【 *p1=*&n】
9、单选题:
假如指针p已经指向整型变量x,则(*p)++相当于:
选项:
A: x++
B: p++
C: *(p++)
D: &x++
答案: 【 x++】
10、单选题:
对于基类型相同的两个指针变量之间,不合理的运算是:
选项:
A: <
B: =
C: +
D: -
答案: 【 +】
第18讲 指针与数组
第18讲 掌握指针对一维数组的操作
1、单选题:
以下四种说法中,正确的一项是:
选项:
A: C++允许在字符串上进行整体操作
B: 语句:char vn[]=”Brown”;将vn定义成一个有5个元素的数组,因为”Brown”中含有5个字符
C: 对指针只要赋给一个地址值就可以了
D: 一维的指针数组实际上是一个二维数组
答案: 【 C++允许在字符串上进行整体操作】
2、单选题:
定义如下一维数组:int a[5],*p=a;则下面描述错误的是:
选项:
A: 表达式p=p+1是合法的
B: 表达式a=a+1是合法的
C: 表达式p-a是合法的
D: 表达式a+2是合法的
答案: 【 表达式a=a+1是合法的】
3、单选题:
若有语句int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则哪个不是对a数组元素的正确引用(其中0≤i<10)。
选项:
A: p[i]
B: *(*(a+i))
C: a[p-a]
D: *(&a[i])
答案: 【 *(*(a+i))】
4、单选题:
有如下程序段:int *p,a[6]={-1,0,1,2,3,4}; p=a+3;执行该程序段后,*p的值为:
选项:
A: 4
B: 2
C: 1
D: NULL
答案: 【 2】
5、单选题:
若有定义 char s[10];则在下面表达式中不表示s[1]的地址的是:
选项:
A: s+1
B: s++
C: &s[0]+1
D: &s[1]
答案: 【 s++】
6、单选题:
若要对a进行合法的自减运算,则之前应有下面哪个说明?
选项:
A: int p[3];int *a=p;
B: int k;int *a=&k;
C: char *a[3];
D: int b[10];int *a=b+1;
答案: 【 int b[10];int *a=b+1;】
7、单选题:
若有定义int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;则数值不为3的表达式是:
选项:
A: x[3]
B: p1=x+3,*p1++
C: p1=x+2,*(p1++)
D: p1=x+2,*++p1
答案: 【 p1=x+2,*(p1++)】
8、单选题:
若有定义int x[6]={2,4,6,8,5,7},*p=x,i;要求依次输出x数组6个元素中的值,不能完成此操作的语句是:
选项:
A: for(i=0;i<6;i++) cout<<setw(2)<<*(p++);
B: for(i=0;i<6;i++) cout<<setw(2)<<*(p+i);
C: for(i=0;i<6;i++) cout<<setw(2)<<*p++);
D: for(i=0;i<6;i++) cout<<setw(2)<<(*p)++;
答案: 【 for(i=0;i<6;i++) cout<<setw(2)<<(*p)++;】
9、单选题:
下面程序执行后的输出结果是:#include <iostream>using namespace std;void sum(int *a) { a[0]=a[1];}int main(){ int aa[10]={1,2,3,4,5,6,7,8,9,10},i;for(i=2;i>=0;i--) sum(&aa[i]);cout<<aa[0];return 0;}
选项:
A: 1
B: 2
C: 3
D: 4
答案: 【 4】
10、单选题:
下面程序执行后的输出结果
