上机实验11 指针一.doc_第1页
上机实验11 指针一.doc_第2页
上机实验11 指针一.doc_第3页
上机实验11 指针一.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

上机实验11 指针(一)一目的要求 掌握指针的基本概念; 掌握指针变量的定义和初始化; 掌握指针作为函数参数的使用; 掌握用下标、数组名或指针等不同方式引用数组元素; 掌握数组名作函数参数的方法。二实验内容【实验题1】程序填空,交换指针p1,p2所指向的变量。#include void main ( ) int a=1,b=2, *p1, *p2, *pt;p1= &a ;p2= &b ;/p1指向变量a,p1指向变量bprintf(“a=%d, b=%d n”, a,b);printf(“*p1=%d, *p2=%d n”, *p1,*p2);/交换指针变量p1,p2的指向 pt=p1 ; p1=p2 ; p2=pt ;printf(“a=%d, b=%d n”, a,b);printf(“*p1=%d, *p2=%d n”, *p1,*p2);运行结果:a= 1 , b= 2 *p1= 1 , *p2= 2 a= 1 , b= 2 *p1= 2 , *p2= 1 【实验题2】程序填空,交换指针p1,p2所指向的变量的值。#include void main ( ) int a=1,b=2, *p1, *p2, temp;p1= &a ;p2= &b ;/p1指向变量a,p1指向变量bprintf(“a=%d, b=%d n”, a,b);printf(“*p1=%d, *p2=%d n”, *p1,*p2);/交换p1,p2所指向的变量的值 temp= *p1 ; *p1=*p2 ; *p2=temp ;printf(“a=%d, b=%d n”, a,b);printf(“*p1=%d, *p2=%d n”, *p1,*p2);运行结果:a= 1 , b= 2 *p1= 2 , *p2= 2 a= 2 , b= 1 *p1= 2 , *p2= 1 【实验题3】程序填空:输入三个整型变量i,j,k的值。请设置三个指针变量p1,p2,p3,分别指向i,j,k。然后通过p1,p2,p3使i,j,k三个变量的值依次交换,即原来i的值赋给j, 原来j的值赋给k, 原来k的值赋给i。输出交换后i,j,k的值。 i jk分析:三个值轮换跟两个值互换是一样的原理,在变量被赋新值之前必须保证原值已经被保存。设temp为临时变量,则temp=i; i=k; k=j; j=temp ,参考以上做法,要求:轮换时要求用指针p1,p2,p3来替代i,j,k。源程序:#include void main ( ) int i,j,k,temp, *p1= &i ,*p2= &j ,*p3= &k ; printf(Input i j k: ); scanf(%d%d%d,&i,&j,&k); /输入i j k/i-j-k-itemp= *p1 ; *p1=*p3 ; *p3=*p2 ; *p2 = temp;printf(%d %d %d n, *p1,*p2, *p3); /输出轮换后的i j k输入:1 2 3输出:3 1 2【实验题4】程序填空:输入三个整数,要求设计2个指针变量p1,p2 ,使p1指向这三个数的最大值,p2指向最小者 ,并输出最大值和最小值。# include void main ( ) int a,b,c, *p1, *p2;scanf(“%d%d%d”,&a,&b,&c);/ 令p1指向最大值,p2指向最小值p1= &(ab?a:b) ; /p1指向a,b中较大者if( *p1c ) p1=&c; /令 p2指向最小值p2= &(ac ) p2=&c; printf(“max=%d, min=%d”, *p1,*p2 );运行结果:输入 1 2 3 输出 max=3,min=1 【实验题5】编写一个交换两个数的函数swap(int *p1,int *p2),函数的形式参数使用指针变量,在main()函数中调用swap()函数实现实参的交换。# include int swap(int *p1,int *p2)int temp;temp=*p1;*p1=*p2;*p2=temp;void main ( ) swap(*p1,*p2);【实验题8】程序填空:请用下标、数组名、指针等不同方法来输出数组元素。方法2: 用数组名引用数组元素,源程序如下:#include void main ( ) int i, a5=1,2,3,4,5; for(i=0 ; i5 ; i+ ) printf(%d , *( a+i ) ); printf(n);方法1:用下标引用数组元素,源程序如下:#include void main ( ) int i, a5=1,2,3,4,5; for( i=0 ; i5 ; i+ ) printf(%d , ai ); printf(n);方法4: 用指针引用数组元素,源程序如下:#include void main ( ) int a5=1,2,3,4,5, *p; for( p=a ; pa+5 ; p+ ) printf(%d , *p ); printf(n);方法3: 用指针和下标引用数组元素,源程序如下:#include void main ( ) int i, a5=1,2,3,4,5, *p; for( p=a , i=0 ; i5 ; i+ ) printf(%d , *(p+i) ); printf(n);由此可见,若指针p=a, 则ai*(a+ i )*(p+i )p i &aia+i p+ i 而对指针p进行自增或自减运算,意味着移动指针,即 p+ 表示令指针p指向 下 (上/下)一个元素,而p- 表示令指针p指向上 (上/下)一个元素。【实验题9】程序填空:利用指针,将数组a中的10个整数按相反顺序存放.源程序如下:#include void main ( ) int i,t, a10,*p,*q;printf(Input 10 integers:);for(i=0; i10; i+) scanf(%d, &ai );p= &a0 ; q= &a9 ; /p指向首元素,q指向最后一个元素for( ; i=0 ; i5 ; i+ ) /逐对交换对称元素t= *p; *p= *q; *q=t; for(i=0; i10; i+) printf(%d , ai );printf(n);【实验10】程序设计(冒泡排序):输入8个实数,要求用冒泡法将这8个实数按降序排列,输出排序结果。# include void sort(int *x,int n)int i,j,s; for(i=0; i n ;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论