一、选择题
1.下列数组定义语句,正确的是_________。
A.int a[3,4]; B.int n=3,m=4;int a[n][m];
C.int a[3][4]; D.int a(3)(4);
2.阅读下列初始化数组程序段:
char a[ ]= "ABCDEF";
char b[ ]={'A', 'B', 'C', 'D', 'E', 'F'};
则下面叙述正确的是_________。
A.a 和 b 完全相同 B.a 和 b 只是长度相等 C.a 和 b 不相同,a 是指针数组 D.a 数组长度比 b 数组长
3.设有数组定义:char array[]="China";,则数组 array 所占的空间为_________。
A.4 个字节 B.5 个字节 C.6 个字节 D.7 个字节 4.下列关于指针运算的描述错误的是_________。
A.在一定条件下,两个指针可以相加
B.在一定条件下,两个指针可以进行逻辑判断 C.在一定条件下,指针可以为空值
D.在一定条件下,两个指针可以相互赋值
5.已知 int *p,a;,则语句 p=&a;中的运算符“&”的含义是_________。
A.逻辑与运算 B.位与运算 C.取指针内容 D.取变量地址 6.若有说明语句 int a[10], *p=a;,则对数组元素的正确引用是_________。
A.a[p] B.p[a] C.*(p+2) D.p+2 7.定义如下一维数组:int a[5],*p=a;,则下列描述错误的是_________。
A.表达式 p=p+1 是合法的 B.表达式 a=a+1 是合法的 C.表达式 p-a 是合法的 D.表达式 a+2 是合法的 8.下列对变量的引用中错误的是_________。
A.int a;int &p = a; B.char a;char &p = a;
C.int a;int &p;p = a; D.float a;float &p = a;
9.设有如下程序:
# include < iostream>
using namespace std;
void main () {
int **x,*y,z = 10;
y = &z;
x = &y;
cout<<**x+1<< end1;
}
上述程序的输出结果是_________。
A.y 的地址 B.z 的地址 C.11 D.运行错误 10.下列语句错误的是_________。
A.char *p="John"; p[2]='a';
B.char name[5]="John";name[2]='a';
C.char name[5]="John",*p=name; p[2]='a';
D.char name[5]="John",*p=&name[2];*p='a';
11.已知有 int a[3][4]={{1,2,5,3},{2,4,7,9},{3,6,5,8}},*p=&a[0][0];,则表达式(*p+2)+*(p+2) 的值应为_________。
A.10 B.5 C.6 D.8 12.已知有 int a[5]={1,3,5,7,9},*p=&a[3];,则表达式 p[-1]的值为_________。
A.表示形式不合法 B.值不确定
C.5 D.6
13.若有以下定义,则值为 3 的表达式是_________。
int a[]={1,2,3,4,5,6,7,8,9,10},*p=a;
A.p+=2,*(p++) B.p+=2,*++p C.p+=3,*p++ D.p+=2, ++*p 14.已知如下变量的定义 char s[10],*p;,下列_________语句正确。
A.s= "asdfghj"; B.p="asdfgh"; C.cin<<s; D.p=s;cin<<p;
15.下列程序的输出结果是_________。
# include < iostream>
using namespace std;
void main () {
int x [6]={1,3,5,7,9,11},*k,**s;
k = x;
s = &k;
cout << *(k ++) << “,” << **s<< end1;
}
A.3,3 B.1,1 C.3,5 D.1,3 16.已知:
struct { int i;
char c;
float a;
}ex;
则 sizeof(ex);的值是_________。
A.6 B.7 C.8 D.9
17.设有以下说明语句:
struct ex {
int x;
float y;
char z;
}example;
则下面的叙述中不正确的是_________。
A.struct 是结构类型的关键字 B.example 是结构类型名 C.x、y、z 都是结构成员名 D.struct ex 是结构体类型
18.若有以下结构说明和变量的定义,且如图 4.33 所示指针 p 指向变量 a,指针 q 指向变量 b。
struct node {
char data;
struct node *next;
}a,b,*p=&a,*q=&b;
图 4.33 指针 5
↑p a
↑q
b 9 0
data next data next
则不能把节点 b 连接到节点 a 之后的语句是_________。
A.a.next=q; B.p.next=&b; C.p->next=&b; D.(*p).next=q;
二、填空题
1.在 C++程序中,一个数组的名字实际上是指向该数组_________元素的指针,并且在 任何时候都不允许_________。
2.若变量 y 是变量 x 的引用,则对变量 y 的操作就是对变量_________的操作。
3.假定有如下定义:int x;,若要将整型变量 y 定义为变量 x 的引用,则应使用的定义语 句是_________。
4.执行_________操作将动态分配 p 所指向的数据空间,执行_________操作将释放由 p 所指向的动态分配的数据空间。
5.完善程序,使 5×5 数组的主对角线元素为 1,其他为 0。
#include "iostream"
using namespace std;
void main() {
int j,k,a[5][5];
for(j=0;j<5;j++) for(k=0;k<5;k++)
if( ) ; else ; for (j=0;j<5;j++) {
for(k=0;k<5;k++) cout<<a[j][k]<<" ";
cout<<endl;
} }
6.随机产生 6 位学生的分数(分数范围为 0~100),存放在数组 a 中,以每 2 分一个“*”
显示,如图 4.34 所示。
图 4.34 显示样式
#include "cstdlib"
#include "iostream"
using namespace std;
void main() {
int a[6],i,j;
for(i=0;i<6;i++)
#include "iostream"
using namespace std;
void main()
#include "iostream"
using namespace std;
#define M 5
while(k<M+N && i<M && j<N) {
while(k<M+N &&_________) c[k++]=b[j++];
while(k<M+N &&_________) c[k++]=a[j++];
for(k=0;k<M+N;k++) cout<<c[k]<<" ";
}
9.下面程序的功能是在结构体数组中查找分数最高和最低学生的姓名和成绩,请填空。
#include "iostream"
using namespace std;
void main()
if(stud[i].score>stud[max].score)_________;
else if(stud[i].score<stud[min].score)_________;
cout<<"最高分:"<<stud[max].name<<","<<stud[max].score<<endl;
cout<<"最低分:"<<stud[min].name<<","<<stud[min].score<<endl;
}
while( _________ ) {
#include "iostream"
using namespace std;
void main() {
int j;
int m[3][2]={10,20,30,40,50,60};
for(j=0;j<2;j++)
cout<<m[2-j][j]<<endl;
} 2.
#include "iostream"
using namespace std;
void main()
#include "iostream"
using namespace std;
void main()
cout<<"m-n="<<m-n<<endl;
} 4.
#include "iostream"
using namespace std;
void main()
cout<<x<<","<<p<<endl;
} 5.
#include "iostream"
using namespace std;
void main () {
int x[]={5,4,3,2,1},i,*p,m=0;
for(p=x,i=1;p+i<=x+4;i++) {
cout<<*(p+i);
#include "iostream"
using namespace std;
void main() {
char str[100],*p;
cout<<"Please input a string:";
cin>>str;
p=str;
for(int i=0;*p!='\0';p++,i++);
cout<<"i="<<i<<endl;
}