实训十 指针的应用
一、实训目的
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