实验目的: <1>学会并善于利用指针 <2>了解通过指针引用数组,字符串等 <3>区分指向函数的指针 实验器材: 机房计算机 C语言基础设计教材 实验内容: <1>对输入的两个整数按大小顺序输出,用函数处理,而且用指针类型的数据做函数参数 <2>用指针方法,对10个整数按大到小排列顺序 <3>输入两个整数,然后让用户选择1或2,选1时调用max函数,输出二者中的大数,选2时调用min函数,输出二者中的小数。 实验步骤: <1>#include<stdio.h> int main() {void swap(int *p1,int *p2); int a,b; int *pointer_1,*pointer_2; printf("please enter a and b:\n"); scanf("%d,%d",&a,&b); pointer_1=&a; pointer_2=&b; if(a<b) swap(pointer_1,pointer_2); printf("max=%d,min=%d",a,b); return 0; } void swap(int *p1,int *p2) {int temp; temp=*p1; *p1=*p2; *p2=temp; } <2>#include<stdio.h> int main() {void sort(int x[],int n); int i,*p,a[10]; p=a; printf("please enter 10 integer numders:"); for(i=0;i<10;i++) scanf("%d",p++); p=a; sort(p,10); for(p=a,i=0;i<10;i++) {printf("%d ",*p); p++; } printf("\n"); return 0; } void sort(int x[],int n) {int i,j,k,t; for(i=0;i<n-1;i++) {k=i; for(j=i+1;j<n;j++) if(x[j]>x[k])k=j; if(k!=i) {t=x[i];x[i]=x[k];x[k]=t; } } } <3>#include<stdio.h> int main() {int max(int x,int y); int min(int x,int y); int(*p)(int,int); int a,b,c,n; printf("please enter a ang b:"); scanf("%d,%d",&a,&b); printf("please choose 1 or 2:"); scanf("%d",&n); if(n==1)p=max; else if(n==2)p=min; c=(*p)(a,b); printf("a=%d,b=%d\n",a,b); if(n==1)printf("max=%d\n",c); else printf("min=%d\n",c); return 0; } int max(int x,int y) {int z; if(x>y)z=x; else z=y; return(z); } I nt min(int x,int y) {int z; if(x<y)z=x; else z=y; return(z); } 实验结果(附数据和图表): <1> <2> <3> 实验结果分析及结论: 对于<1>:在函数调用时,将实参变量的值传送给形参变量,采取的是值传递,在函数调用之后,p1,p2都不存在 对于<2>:函数中用数组名作为形参, 便于理解,还有在函数中可以用a[i]表示数组元素 对于<3>:调用函数的语句是c=(*p)(a,b);,根据输入的数字决定指针变量指向哪个元素 实验心得体会和建议: 通过此次实验,学会了用指针处理问题 ,明白了,地址其实是按址访问,地址的意义,会区分指向行的指针,使我对这些知识点更加印象深刻。弄懂实验原理,并且体会到了实验的操作本事是靠自我亲自动手,亲自开动脑筋,亲自去请教别人才能得到提高的。锻炼自己独立编写程序的能力。
|
C语言之指针
最新推荐文章于 2024-06-14 10:22:04 发布