C语言习题集合(指针) 下载本文

第七章 指 针 ·17·

while(*(t-1)

*(t--)=*(t-1); *(t--)=ch;

}

????15.若有定义:int a[]={1,2,3,4,5,6,7,8,9,10,11,12}, *p[3], m; 则下面程序段的输出是

____11____。

for ( m=0; m<3; m++) p[m]=&a[m*4]; printf(\%d\\n\, p[2][2]);

16.下面程序的运行结果是_1,2_______。

#include \stdio.h\ main() {

char s[]=\1357\, *t; t=s;

printf(\%c, %c\\n\, *t, ++*t);

}

17.以下程序将数组a中的数据按逆序存放。请填空。

#include \stdio.h\ #define M 10

main()

{

int a[M], m, n, temp;

for( m=0; m

m=0;

n=M-1; while(m

temp=*(a+m);

【*(a+m)=*(a+n)】; *(【a+n】)=temp;

m++; n--;}

for (m=0;m

}

18.以下程序在a数组中查找与x值相同的元素的所在位置。请填空。

#include \stdio.h\ main() {

int a[11], x, m;

printf(\please input ten numbers:\\n\); for(m=1;m<11;m++) scanf(\%d\, a+m); printf(\please input x:\);

第七章 指 针 ·18·

scanf(\%d\, &x); *a=【x】; m=10;

while (x!=*(a+m)) 【m--】;

if (m>0) printf(\]'s position is : M\\n\, x, m); else printf(\%d not been found!\\n\, x);

}

19.以下程序的功能是________。

#include \stdio.h\

main() {

char * s[]=={ \PASCAL\, \FORTRAN\, \COBOL\, \BASIC\}; char **p; int n; p=s;

for (n=0;n<4;n++)

printf(\%s\\n\, *(p++));

}

20.若有定义和语句:int a[4]={1,2,3,4},*p; p=&a[2]; ,则*--p的值是_2_______。 21.若有定义和语句:int a[2][3]={0}, (*p)[3]; p=a;,则p+1表示数组__指向数组a的第二行。

22.若有如下定义和语句:

int *p[3], a[6], n;

for (m=0;m<3;m++) p[m]=&a[2*m]; 则*p[0]引用的是a数组元素【a[0]】;*(p[1]+1)引用的是a数组元素【a[3]】。

23.若有以下定义和语句,在程序中引用数组元素a[m]的四种形式是:【*(p+m)】、【*(a+m)】、【p[m]】和a[m]。(假设m 已正确说明并赋值) int a[10], *p; p=a;

24.下面程序的输出结果是__1 3 5 7 9 11______。 #include \stdio.h\

main() {

int b[2][3]={1,3,5,7,9,11}; int *a[2][3]; int i,j;

int **p, m;

for(i=0;i<2;i++) for(j=0;j<3;j++) a[i][j]=*(b+i)+j; p=a[0];

for(m=0;m<6;m++) {

第七章 指 针 ·19·

printf(\M\, **p);

p++; }

}

25.定义语句int *f();和int (*f)();的含义分别为【返回值的类型为int *型的函数f】和【指向返回值的类型为int 型的函数的指针】。

26.请根据运行结果,完成main函数中的填空。 Array_add( int a[], int n) {

int m, sum=0;

for (m=0;m

main()

{

int Array_add(int a[], int n);

static int a[3][4]={2,4,6,8,10,12,14,16,18,20,22,24}; int *p, total1, total2; 【int (*pt)()】; pt=Array_add; p=a[0];

total1=Array_add(p,12); total2=(*pt)(【a[0],12】);

printf(\total1=%d\\ntotal2=%d\\n\, total1,total2);12 }

运行结果:total1=156 total2=156