通过海量题库、编程比赛和实时排名,系统化提升您的编程能力。
第1题
有如下程序,编译运行程序将出现的情况是()。
#include<iostream> using namespace std; int main() { int *p; *p=9; cout<<"The value at p:"<<*p; return 0; }
编译时出现语法错误,不能生成可执行文件
运行时一定输出:The value at p:9
运行时一定输出:The value at p: *9
运行时有可能出错
第2题
下列有关指针的用法中,错误的是()。
int i;int *p=&i;
int i;int *pi=*p;
int *p;p=0;
int i=5;int *p;p=&i;
第3题
如果有以下定义及初始化: int a=3,*p=&a; ,则由此可以推断,*p的值是()。
变量a的值,即3
变量a的地址值
变量p的地址值
无意义
第4题
执行语句序列 int x=1,&y=x; cout<<x<<"-"<<y<<endl; ,输出结果为()。
x−x
1−1
1−0
异常
第5题
若有以下定义 int a=100,*p=&a; ,说法错误的是()。
其中*表示p是一个指针变量
声明变量p,获得变量a的地址
变量p只可以指向一个整型变量
变量p的值为100
第6题
若定义 int a[]={0,1,2,3,4,5,6,7,8,9},*p=a,i; (0≤i≤9),则对a数组元素不正确的引用是()。
a[p-a]
*(&a[i])
p[i]
a[10]
第7题
下列关于指针的运算中,()是非法的。
两个指针在一定条件下,可以进行相等或不等的比较运算
可以将一个空指针赋值给某个指针
一个指针可以加上两个整数之差
两个指针在一定条件下可以相加
第8题
下面程序的输出结果为()。
#include<iostream.h> void main() { int x; int &y=x;//变量引用 y=99; cout<<"x="<<x<<endl; }
x=99
x=9
x=0
第9题
存在定义 int a[10],x,*pa; ,若 pa=&a[0]; ,下列哪个选项和其他3个选项不是等价的?
x=pa;
x=(a+1);
x=*(pa+1);
x=a[1];
第10题
有以下程序,输出结果是()。
#include<iostream.h> void main() { static int b[][3]={{1,2,3},{4,5,6}}; b[0][2]=12;b[1][2]=18; cout<<"*b="<<*(*b+1)<<"t"<<b[0][2]+b[1][2]+*(*(b+1)+2)<<"\n"; cout<< b[0][2]+b[1][2]+b[2][2]<<endl; }
1 4 18 30
1 4 4 8
4 4 18 1
4 4 30 1
第11题
下列将字符串进行初始化中,正确的是()。
char s[2][10]="12345abcd";
char s[2][3]="xyz";
char s[3]={'a','x','y'};
char s2[4][3]={"xyz","mnp"};
第12题
对于 int *pa[5]; 的描述,正确的是()。
pa是一个指向数组的指针,所指向的数组是5个int型元素
pa是一个指向某个数组中第5个元素的指针,该元素是int型变量
pa[5]表示某个数组的第5个元素的指针,每个元素是一个int型指针
pa是一个具有5个元素的指针数组,每个元素是一个int型指针
第13题
下面程序的输出结果是()。
#include<iostream.h> #include<string.h> void main() { char a[]="Hello Test",b[]="Test"; strcpy(a,b); cout<<a<<endl; }
Hello
Test
Hello Test
Hello Test HelloTest
第14题
有如下程序,该程序的输出结果是()。
#include<iostream.h> void main() { char str[2][5]={"1234","5678"},*p[2]; int i,j,s=0; for(i=0;i<2;i++)p[i]=str[i]; for(i=0;i<2;i++) for(j=0;p[i][j]>'\0';j+=2) s=10*s+p[i][j]-'0'; cout<<s; }
1357
2468
3556
23678
第15题
以下程序的输出结果是()。
#include<iostream> using namespace std; void fun(char**q) { ++q; cout<<*q<<endl; } main() { static char*s[]={"HI","HELLO","TEST"}; char**p; p=s; fun(p); system("PAUSE"); return 0; }
为空
HI
HELLO
TEST
第16题
以下程序的执行结果是()。
#include<iostream.h> int a[8]={1,2,3,4,5,6,7}; void fun(int *pa,int n); void main() { int m=8; fun(a,m); cout<<a[7]<<endl; } void fun(int *pa,int n) { for(int i=0;i<n;i++) *(pa+7)+=*(pa+i); }
0
1
4
28
第17题
以下程序段是函数返回a所指数组中最大的值所在的下标值,横线处的语句为()。
fun(int*a,int n) { int i,j=0,k; k=j; for(j=i;j<n;j++) if(a[j]>a[k])________; return (k); }
k=j
k=i
i=j
i=n
第18题
下列枚举类型的定义中,包含枚举值3的是()。
enum test{RED=-1,YELLOW,BLUE,BLACK};
enum test{RED,YELLOW=4,BLUE,BLACK};
enum test{RED=1,YELLOW,BLUE=2,BLACK};
enum test{RED,YELLOW=6,BLUE,BLACK};
第19题
要定义一个具有5个元素的一维数组vect,初值依次是30,50,-88,0和0,下列定义语句中错误的是()。
int vect[]={30,50,-88};
int vect[]={30,50,-88,0};
int vect[5]={30,50,-88,0,0};
int vect[5]={30,50,-88};
第20题
已知数组定义 char a[3][4]; ,下列表达式中错误的是()。
a[2]="WIN"
strcpy(a[2],"WIN")
a[2][3]='W'
a[0][1]=a[0][1]
第21题
已知数组 int arr[5]={1,2,3,4,5}; ,下列语句中输出结果不是2的是()。
cout<<arr+1<<endl;
cout<<(arr+1)<<endl;
cout<<arr[1]<<endl;
cout<<**arr<<endl;
第22题
有如下类定义,横线处应填写的表达式是()。
class A{ char *a; public: A():a(0){} A(char *aa){ a=________; strcpy(a,aa); } ~A(){delete []a;} };
new char[strlen(aa)+1]
char[strlen(aa)+1]
char[strlen(aa)]
new char[sizeof(a)-1]
第23题
要定义整型数组x,使之包括初值为0的三个元素,下列语句中错误的是()。
int x[3]={0,0,0};
int x[]={0};
static int x[3]={0};
第24题
有语句序列 char str[10]; cin>>str; ,输入"I love this game"时,str中的字符串是()。
"I love this game"
"I love thi"
"Ilove"
"I"
第25题
字符串"a+b=12\n\t"的长度为()。
12
10
8
6
第26题
下列有关一维数组a的定义中,语法正确的是()。
int a(10);
int n=7,a[n];
int n;cin>>n;int a[n];
const int size=10;int a[size];
第27题
#include<iostream> using namespace std; int main() { int *p; *p =9; cout<<"The value at p:"<<*p; return 0; }
第28题
下列语句中,错误的是()。
const int buffer=256;
const doublepoint;
int const buffer=256;
doubleconst point;
第29题
有说明 int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a; ,数值为9的表达式是()。
p+9
(p+8)
*p+=9
p+8
第30题
语句 int *p=&k; ,与其等效的语句序列是()。
int *p;p=&k;
int *p;p=k;
int *p,*p=&k;
int *p;*p=k;
第31题
有定义 int a[5]={1,3,5,7,9},*p=a; ,不能得到数值5的表达式是()。
a[2]
a[3]
*(p+2)
*p+4
第32题
下列语句中,正确的是()。
char*myString="Hello-World!";
char myString="Hello-World!";
char myString[11]="Hello-World!";
char myString[12]="Hello-World!";
第33题
下列定义语句中,错误的是()。
int px;
char *acp[10];
char (*pac)[10];
int(*p)();
第34题
有语句序列 int x=100,&r=x;cout<<x<<"-"<<r<<endl; (x地址为0012FF7C),输出结果为()。
100-100
100-0012FF7C
0012FF7C-100
0012FF7C-0012FF7C
第35题
字符指针p指向"abcdefg",执行 char*ap=new char[strlen(p)+1]; 后,ap指向的字符数组元素个数为()。
9
7
第36题
有如下程序段,产生编译错误的语句是()。
int i=0,j=1; int &r=i; //① r=j; //② int *p=&i; //③ *p=&r; //④
④
③
②
①
第37题
有如下程序段,输出结果是()。
#include<iostream> using namespace std; int main() { char*p="abcdefgh",*r; r=p; cout<<*r<<endl; return 0; }
a
b
c
d
第38题
给出下面程序输出结果是()。
#include<iostream.h> void main() { int *p1; int **p2=&p1; int b=20; p1=&b; cout<<**p2<<endl; }
20
40
30
第39题
有定义及初始化 int a=3,*p=&a; ,*p的值是()。
变量P的地址值
第40题
有定义 int b[10]={1,2,3,4,5,6,7,8,9,10},*q=b; ,数值为8的表达式是()。
q+8
(q+7)
*q+=8
q+7
第41题
下列程序的输出结果是()。
#include<iostream.h> void main() { int n[][3]={10,20,30,40,50,60}; int (*p)[3]; p=n; cout<<p[0][0]<<","<<*(*p+0)+1<<","<<*(p[2])<<endl; }
10,30,50
10,20,30
20,40,60
10,30,60
第42题
类中的一个字符指针成员指向具有m个字节的存储空间时,它所能存储的字符串的最大长度为()。
m-2
m-1
m
m+1
第43题
下面关于指针的说法中错误的是()。
在指针定义的同时可以对其进行初始化
指针根据其所指向变量的类型的不同,所占用内存大小也不同
指针中存放的是内存单元的地址
相同类型的指针之间可以相互赋值
选择题(43题,共计43分)