C语言实训指导书 下载本文

实训十 指针的应用

一、实训目的

1、掌握指针的概念、指针变量的定义

2、掌握指针的运算(取地址运算&、取内容运算*、指针移动的运算等) 3、掌握指针与数组的关系 4、掌握指针与函数的关系 二、预习内容

指针变量的定义、赋值和取地址&、取内容*、移动等操作,数组元素的多种表示方法 三、上机内容

1、分析下列程序的运行结果,并上机验证。 ① main()

{ int i, j, *pi, *pj; pi=&i; pj=&j; 程序的运行结果是: i=5; j=7; printf( \ printf( \}

② main() 程序的运行结果是: { int a[ ]={ 1, 2, 3 }; int *p, i; p=a; for ( i=0; i<3; i++ ) printf( \ %d %d %d\\n\}

③ main()

{ int a[ ]={ 2, 5, 3, 6, 8 }; 程序的运行结果是: int *p, i=1, s=0; for ( p=a; p

printf( \ %d\\n\}

21

④ int ff( char *x ) 若从键盘输入asdfghgfdsa { char *p=x, *q; 则输出结果为: int i, k=1; q = p+strlen(x)-1; 若从键盘输入aweftfew for ( i=1; i<=strlen(x)/2; i++) 则输出结果为:

if (*p==*q) { p++; q--; } else { k=0; break; } return k; }

main() 用户自定义函数的功能是: { char a[80]; gets(a);

if ( ff (a)==1 ) printf( \

else printf(\}

2、 以下是求三个数中的最大数的程序,试完整程序。 void cut( int *p, int *q) { int t;

t=*p; ; *q=t; } main()

{ int a, b, c;

scanf( \if ( a

3、以下是将字符串复制到另一个字符串中的源程序,其中函数cprstr的形参为两个字符指针变量,其中,pm指向原字符串,pn指向目标字符串,试完整源程序。 #include \

void cpystr( char *pm, char *pn) {

while ( ( *pn=*pm )!='\\0' ) { ; ;

} }

main( )

{ char *pa=\ b[20], *pb; pb=b;

cpystr ( );

printf( \ pa, pb ); }

22

三、补充说明

1、参考教材

《c语言程序设计》 谭浩强编著,清华大学出版社 2、教学建议

(1) 该课程实践性较强,需要学生多作练习 (2) 教师需要有比较熟练的编程经验

(3) 针对实训题,可以组织两到三次讨论,以便学生熟练掌握编程的基本思想

23