指针练习题
一、 选择题
1. 阅读下面程序,执行后的结果为(    )
# include “stdio.h”
void fun ( int *a , int *b )
{ int k=5;
  *a = k ;  *b = *a + k ; }
main( )
{ int *a , *b, x = 10 , y = 15 ;
a= &x ; b = &y ;
fun ( a , b );
printf ( “%d,%d\n”, *a , *b ) ; }
A)  10,15    B)  5,15    C)  5,10    D)  15,10
2.以下选项中,不能正确赋值的是(    )
A) char s[ ] = “china” ;        B)  char s[10 ] ; s1[ ]= “china” ;
C) char *s = “china” ;        D)  char *s[4] = “china\n” ;
3. 设有以下定义:
int a[4][3]= {1,2,3,4,5,6,7,8,9,10,11,12};
字符串函数编程题  int (*prt) [3] = a ,*p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是(    ) 
A)  * ( (*prt+1) [2] )  B)  *(*(p+5))    C)  (*prt+1) +2    D)  *(p+5)
4.已知: int a[6], *p = a ; 则下列不能表示a[1]地址的表达式是(      ) 
A)  p+1      B)  ++p        C)  a+1        D) a++
5. 以下程序的运行结果是(      ) 
# include “stdio.h”
main( )
{ int a[ ]={1,2,3, 4,5,6,7,8,9,10,11,12};
int *p=a+5; *q=NULL;
*q=*(p+5);
printf(“%d  %d\n”,*p,*q );  }
A)  运行后报错      B)  6  6        C)  6  11        D)  5  5
6. 若有以下说明和语句,请选出哪个是对c数组元素的正确引用(      ) 
int c[ 4 ][ 5 ] , ( *cp )[ 5 ] ;
cp = c ;
A)  cp + 1      B)  *( cp + 3 )        C)  *( cp + 1 ) + 3      D) *( *cp + 2)
7.以下程序的运行结果是(      ) 
point ( char * p ) { p+=3;}
main ( )
{ char b [ 4 ] = { ‘a’ , ‘b’ , ‘c’ , ‘d’ } , *p = b ;
  point ( p ) ;  printf (“%c\n”, *p ) ;  }
A)  a          B)  b          C)  c          D)  d
8. 程序中若有以下说明和语句
void fun ( char * ) { ............ } ;
main ( )
{ char * s , a[5] = {0} ,  ( *f 1 ) ( )=fun , ch ;
  s=“one” ; ........}
以下选项中对函数fun的正确调用语句是(      ) 
A)  * f 1 ( *s ) ;    B)  fun (&a ) ;    C)  ( *f 1 )( a )    D)  ch =  * f 1 ( s ) ;
9. 阅读下面程序,执行后的结果为(    )
# include “stdio.h”
void fun ( int *a , int *b )
{ int k=5;
  *a = k ;  *b = *a + k ; }
main( )
{ int *a , *b, x = 10 , y = 15 ;
a= &x ; b = &y ;
fun ( a , b );
printf ( “%d,%d\n”, *a , *b ) ; }
A)  5,10    B)  5,15    C)  10,15    D)  15,10
10. 以下程序的运行结果是(      ) 
Main()
{
char *p1,*p2, str[50]= “ABCDEFG”;
p1= “abcd”; p2= “efgh”;
strcpy(str+1,p2+1); strcpy(str+3,p1+3);
}
A)  AfghdEFG    B)  Abfhd    C)  Afghd    D)  Afgd
11阅读下面程序,执行后的结果为(      )
  int fun ( int x[ ] , int n )
  { static int sum = 0 , i ;
for ( i=0 ; i< n ; i++) sum+=x[ i ] ;
return sum ;}
  main ( )
{ int a[ ]= {1,2,3,4,5}; b[ ]= {6,7,8,9}, s = 0 ;
  s = fun ( a , 5 ) + fun ( b , 4 ) ; printf (“%d\n” ,  s ) ; }
A)  55    B)  45    C)  50    D) 60
12设有以下定义:
int a[4][3]= {1,2,3,4,5,6,7,8,9,10,11,12};
  int (*prt) [3] = a ,*p=a[0];
则下列能够正确表示数组元素a[2][2]的表达式是(    ) 
A)  * ( (*prt+2) [2] )  B)  *(p+9)    C)  (*prt+2) +2    D)  *(*(p+9))
二、 填空题
1.阅读下面程序,则程序的执行结果为_____________。 
#include “stdio.h”
fun ( int k , int * p )
{ int a,b;
if ( k= =1 || k= =2)  *p = 1;
else {  fun ( k-1, &a) ;
fun ( k-2, &b) ;
*p = a + b ; }  }
main( )
{  int x ;
  fun ( 6, &x) ;
printf ( “ %d\n ”, x ); }
13设已有定义: char *st = “ how are you”; 下列程序段中正确的是(    )
A) char a[11]; strcpy( ++a, st);
  B) char a[11], *p; strcpy( p=a+1, &st[4]);
  C) char a[11]; strcpy( a, st);
D)  char a[ ], *p; strcpy( p=&a[1], st+2);
三、编程题
1.编写一函数,用来删除字符串中的空格。
2. 编写一函数,其功能是检查一个字符串是否是回文,当字符串是回文时, 函数返回字符串: yes!, 否则函数返回: no!, 并在主函数中输出.所谓回文即正文与反向的拼写都一样,例如: adgda 。10分)
3. 编写一个用矩形法求定积分的通用函数,分别求。(说明:sin、cos、exp已在系统的数学函数库中)。
答案:
一、 选择题
1-5. CBDDA  6-10. DACAD  11-15. DBB
二  1. 8

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。