指针练习题
一、 选择题
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小时内删除。
发表评论