实验八 指针及其运算(参考答案) 实验目的 要点提示 1.变量在内存单元的地址称为该变量的“指针”。 2.指针变量是用来存放其它变量地址的变量。 3.指针变量定义的一 形式 类型标识符 指针变量名: 4.指针运算符 &(取变量地址运算符)和*(取值运算符)是互逆的运算符,右结合。 +,一,+,一运算符是按地址计算规则进行的。 5。用指针作为函数参数,可以实现“调用函数改变变量的值,在主调函数中使用这些 改变的值 6。数组的指针是指数组的起始地址(首地址),数组元素的指针是指数组元素的地址。 数组名代表数组的首地址,是地址常量。 实验内容 1指针变量的说明,初始化和使用。 2. 指针作为函数参数 3.数组的指针和指针数组的指针变量的说明和使用 4.数组名作为函数参数 实验步骤 实验1 main() it和l,*p2,【和】:/体指针变量说明语句*/ int a,ba printf("\n Please input a and b:): scanf ("%dd",&a,&b): n1=ka÷ n2=b: if (a<b) {ppl:pl=p2;p2=p:}/体将pl和p2变量的值进行交换*/ printf(“max=%d,min-%dn",【*和l,*p2】): 程序运行结果:
实验八 指针及其运算(参考答案) 实验目的 理解指针的概念,会定义和使用指针变量,掌握指针的运算规则,学会使用数组的指针 和指向数组的指针变量。 要点提示 1.变量在内存单元的地址称为该变量的“指针”。 2.指针变量是用来存放其它变量地址的变量。 3.指针变量定义的一般形式: 类型标识符 *指针变量名; 4.指针运算符 &(取变量地址运算符)和*(取值运算符)是互逆的运算符,右结合。 ++,-,+,- 运算符是按地址计算规则进行的。 5. 用指针作为函数参数,可以实现“调用函数改变变量的值,在主调函数中使用这些 改变的值。 6. 数组的指针是指数组的起始地址(首地址),数组元素的指针是指数组元素的地址。 数组名代表数组的首地址,是地址常量。 实验内容 1. 指针变量的说明,初始化和使用。 2. 指针作为函数参数。 3. 数组的指针和指针数组的指针变量的说明和使用 4. 数组名作为函数参数 实验步骤 实验 1 main() { int *p1,*p2, 【 *p 】; /* 指针变量说明语句 */ int a, b; printf("\n Please input a and b:"); scanf("%d%d",&a,&b); p1=&a; p2=&b; if (a<b) { p=p1; p1=p2; p2=p;} /* 将 p1 和 p2 变量的值进行交换 */ printf("max=%d,min=%d\n",【*p1,*p2】); } 程序运行结果:
Please input a and b:12 34 【max=34min=12】 实验2 main() int a.b.c int pl.p printf("nInput 3 numbers:") scanf("%d%d%d",&a,&b,&c): pl=&a;p2=&b:p3=&c: if(ab)swap(【pl,p2】):/体函数调用*/ if(ac)swap(【pl,p3】): /*函数调用*/ if (be) swap(【p2,p3】)】 /体函数调用* printf("\nThe sorted numbers:%d,%d,%d\n",a,b,c); swap(int *pl,int *p2) 【intp】 p=*pl;和l=p2;p2=p: 程序运行结果: Input 3 numbers:100 200 150 【The sorted numbers:100l50200】 实验3 #define N 5 main() {int抑,i,a[ p=a; printf("\nInput 5 numbers:") for (p<a+N;p++) scanf(%d",【p】): 【p=a】: printf(\nOutput array:"): for (p<atN:p++) printf(%d“,【和】): 程序运行结果: Input 5 numbe s:13579 0 utput array:【13579】 实验4 main()
Please input a and b: 12 34 【 max=34 min=12 】 实验 2 main() { int a,b,c; int *p1,*p2,*p3; printf("\nInput 3 numbers:"); scanf("%d%d%d", &a,&b,&c); p1=&a; p2=&b; p3=&c; if (a>b) swap(【p1,p2】); /* 函数调用 */ if (a>c) swap(【p1,p3】); /* 函数调用 */ if (b>c) swap(【p2,p3】); /* 函数调用 */ printf("\nThe sorted numbers: %d,%d,%d\n",a,b,c); } swap(int *p1, int *p2) { 【int p 】; p=*p1; *p1=*p2; *p2=p; } 程序运行结果: Input 3 numbers: 100 200 150 【The sorted numbers: 100 150 200 】 实验 3 #define N 5 main() { int *p,i,a[N]; p=a; printf("\nInput 5 numbers:"); for (; p<a+N; p++) scanf("%d", 【 p 】); 【p=a】; printf("\nOutput array:"); for (; p<a+N; p++) printf("%d ",【 *p 】); } 程序运行结果: Input 5 numbers: 1 3 5 7 9 Output array:【 1 3 5 7 9 】 实验 4 main()
fint al61.x.i: for(i=1:i<-5;i+)scanf(“%d,a+i):/读数到a[1]a[5]*/ printf("\nInput x:): scanf("d",&x); *0三y:i=5: /体将x存入a[0]中*/ while (x!=*(a+i)) 【i 21 if (i>0 1)printf("%5d's position is:%4d\n",x,i) else printf("%5d Not been found!\n",x); 程序运行结果: Input 5 numbers:1 3 5 7 9 Input x:3 【3's position is2】 实验5 (float average static int score[5]=(60,70,80,90,80,i; float aver: printf("\Scores:"): for (i=0;i<5;i++) printf(d (scoe)) aver=【average(score).;】 printf("\nAverage score:%6.2f",aver): float average(int *array) (int i; float aver,sum-0: for(i=0:i(5:i++) sum=sum +*(array+i): aver=sum/5: 【return(aver);】 程序运行结果: 【Scores:6070809080】 【Average score:76.00】
{int a[6],x,i; printf("\nInput 5 numbers:"); for (i=1; i<=5; i++) scanf("%d",a+i); /* 读数到 a[1].a[5] */ printf("\nInput x:"); scanf("%d", &x); *a=x; i=5; /* 将 x 存入 a[0]中 */ while (x!=*(a+i)) 【 i- 】; if (【 i>0 】) printf("%5d's position is: %4d\n",x,i); else printf("%5d Not been found!\n",x); } 程序运行结果: Input 5 numbers: 1 3 5 7 9 Input x: 3 【 3's position is 2 】 实验 5 main() { float average(); static int score[5]={60,70,80,90,80}, i; float aver; printf("\Scores:"); for (i=0; i<5; i++) printf("%d ", *(score+i)); aver= 【average(score) ;】 printf("\nAverage score: %6.2f",aver); } float average(int *array) {int i; float aver,sum=0; for (i=0;i<5;i++) sum=sum + *(array+i); aver=sum/5; 【return(aver) ;】 } 程序运行结果: 【Scores: 60 70 80 90 80】 【Average score: 76.00 】