设变量x的类型为整型
第六章 指针
一、选择题
1. 设变量x的类型为整型,指针变量pb的类型为整型, 则正确的赋值表达式是( )。
(A) pb=&x (B) pb=x (C) *pb=&x (D) *pb=x
2. 常量NULL的值是( )
(A) 0 (B) -1 (C) 1 (D) 2
3. 以下程序的输出结果是( )。
(A) 4 (B) 6 (C) 8 (D) 10
main( ){int m=4,n=6,*pm=&m,*pn=&n;*pm=*pm+*pn; printf(“%d”,m);}
4. 设数组a的首地址为194,则以下程序的输出结果是( )。
(A) 212 (B) 204 (C) 1a4 (D) 1a6
main( ){ int a[]={0,1,2,3,4,5,6,7,8,9},*p=a;printf(“%x\n”,p+9);}
5. 设二维数组a有5行6列,则不能正确表示数组元素a[1][2]的首地址是( )。
(A) &a[1][2] (B) *(a+1)+2 (C) a[1]+2 (D) *(a[1]+2) 6. 以下不正确的字符串赋值或初始化的是( )。
(A) char *s; s=“string”; (B) char s[ ]={„s?, „t?, „r?, „i?, „n?, „g?, „0?};
(C) char s[10]; s=“string”; (D) char s[]=“string”;
7. 以下程序的输出结果是( )。
(A) 23 (B) 24 (C) 25 (D) 26
void fun(int *x) {*x=*x+1; printf(“%d\n”,*x); }
main( ){ int a=25; fun(&a); }
8. 以下不能实现对两个整数进行正确交换的是( )。
(A) void swap(int *p,int *q) { int a,*t=&a; *t=*p; *p=*q; *q=*t; }
main( ) {int a=10,b=20; swap(&a,&b); }
(B) void swap(int *p,int *q) { int t; t=*p; *p=*q; *q=t; }
main( ) {int a=10,b=20; swap(&a,&b); }
(C) void swap(int *p,int *q) { int t; t=*p; *p=*q; *q=t; }
main( ) {int *a,*b; *a=10; *b=20; swap(a,b); }
(D) void swap(int *p,int *q) { int t; t=*p; *p=*q; *q=t; }
main( ) {int a=10,b=20,*x=&a,*y=&b; swap(x,y); } 9. 以下程序的输出结果是( )。
(A) 720 (B) 120 (C) 24 (D) 6
int f(int *b, int n){int i,s=1; for(i=0;i<=n; i++) s=s*b[i]; return (s); }
main( ){ int x,a[ ]={2,3,4,5,6,7,8,9}; x=f(a,3); printf(“%d\n”,x);}
10. 以下程序的输出结果是( )。
(A) 55 (B) 66 (C) 78 (D) 91
int add(int (*p)[4],int n){int i,j,s=0;for(i=0;i
x,(h[1].p)->y);
}
(A) 12 (B) 23 (C) 14 (D) 32
二、填空题
1. 通过变量名或地址访问程序中一个实体的存储空间的方式称为___________访问。把地
址存放在一个变量中,然后通过先找出地址变量中的值,再由此地址找到最终要访问的
变量的方法称为___________访问。
2. 定义指针变量语句int *p;表示的含义是_______________________________。
3. 任何类型的指针变量均可以赋值为_____________。
4. 以下程序的输出结果是_____________________。
main( ){ int a=10,b=20,*pa=&a,*pb=&b;pa=pb;printf(“%d,%d”,*pa,*pb);}
5. 以下程序的输出结果是_____________________。
main( ){int a=10,b=20,*pa=&a,*pb=&b,*p;p=pa;pa=pb;pb=p;printf(“%d,%d”,*pa,*pb);}
6. 以下程序的输出结果是_____________________。
main( ){int a=10,b=20,t,*pa=&a,*pb=&b;t=*pa;*pa=*pb;*pb=t;printf(“%d,%d”,*pa,*pb);}
7. 以下程序的输出结果是_____________________。
main( ){int x=2,*px=&x,**py=&px; printf(“%d\t%d”,*px,**py);}
8. 以下程序的输出结果是________________。
main( )
{
int i,j,*p,(*q)[3],a[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;i<3;i++) for(j=0;j<3;j++) printf("%d\t",a[i][j]); printf("\n");
for(p=a[0];p=0; i--) printf(“%s\n”,p[i]);}
11. 以下程序的输出结果是________________。
main( ){char *p[ ]={“111”,“222”,“333”,“444”},i; for(i=3; i>=0; i--) printf(“%c\n”,*p[i]);}
12. 以下程序的输出结果是________________。
int sum(int *p,int n){int i,s; for(i=0,s=0; i1){++argv; puts(argv); argc--;}
三、编程题
1( 设计一个数测试字符串的长度。
2( 设计一个函数完成对10个字符串进行排序。
3( 设计一个函数找出二维数组中最大值所在的行数和列数。