}
A. #### B.10 C. 有语法错误 D.*q
(4)若程序段static char line[]=”Visual C++”; char *point=line; 则point的值为( )。
A. ”Visual C++” B. line的首地址 C. Visual D. \\0
(5) 相同数据类型的数组名和指针变量均表示地址,以下不正确的说法是( )。
A. 数组名代表的地址不变,指针变量存放的地址可变。
B. 数组名代表的存储空间不变,指针变量指向的存储空间长度可变。 C. A和B的说法均正确。 D. 没有差别。
(6) 若有以下定义,则下列操作错误的是( )。
int a[5]={1,3,5,7,9},*p=new int [5];
A.p=a; B.*p=a; C.*(p+1)=a[1]; D.*p=*a
(7) 若有以下定义,则释放指针所指内存空间的操作是( )。 int *p=new int [10];
A.delete []r; B.delete *r C.delete r; delete r[]
(8) 若有以下定义,下列值为6的表示式是( )。 int a[3][5]={{1,2},{2,4,6,8},{10,20,30,40,50}};
A.*(a+2)+3 B.a[2][3] C.*(*(a+1)+2) D.*(*(a+2)+3)
(9)若int (*p)[5];,则下列正确的叙述是( )。 A. 是指针数组
B. (*p)[5]与*p[5]等价
C. p的指针,它可指向一维数组中任一元素
D. p是指针,它只能指向一个包含5个int类型元素的一维数组
(10)执行下列程序段后,字符串str1的值是( )。 char str1[8] ,*str2[]=”AA\\0BB”;
strcpy(str1,str2);
A. AA\\0BB B. AA BB C. AA D.AA\\0BB\\0
2.写出下列程序运行结果: (1)#include
void main() { int x=100,y=200; int *p=&x; (*p)++; p=&y; *p=x;
cout< } (2) #include void main() { int a[]={10,20,30,40,50,60,70,80,90,100}; int i,*p,sum=0; p=a; for(i=1;i<10;i=i+2) sum+=p[i]; cout<<\ } (3) #include void main() { float b[][4]={1.0,2.0,1.2,3.0,4.0,3.1,1.6,1.7,1.8,1.9,2.0,2.1}; float *p,sum=1.0; int i; p=&b[0][1]; for(i=0;i<3;i++) { sum=sum*(*(p+i)); cout<<\ } (4) #include void main() {char *b[]={\ char *p; p=b[2]; cout<<*p<<'\\t'<<*b< } (5) #include void main() {int i,a[]={10,20,30,40},*p[4],**q; for(i=0;i<4;i++) p[i]=a+i; q=p; cout<<**++q< } (6) #include #include #define N 5 void main() {char* course[]={\ \ int i,j,k; char *temp; for(i=0;i for(j=i+1;j if(strcmp(course[k],course[j])>0) k=j; if(k!=i) {temp=course[i]; course[i]=course[k]; course[k]=temp; } } for(i=0;i