实验十 指针(一) |
u 实验目的 1、通过实验进一步掌握指针的概念,会定义和使用指针变量。 2、能正确使用数组的指针和指向数组的指针变量。 3、能正确使用字符串的指针和指向字符串的指针变量。 4、能正确使用指向函数的指针变量。 5、了解指向指针的指针的概念及其使用方法。 u 预习内容 见教材第十章 u 实验重点 1、通过实验进一步掌握指针的概念,会定义和使用指针变量。 2、能正确使用数组的指针和指向数组的指针变量。 3、能正确使用字符串的指针和指向字符串的指针变量。 4、能正确使用指向函数的指针变量。 u 实验难点 1、能正确使用数组的指针和指向数组的指针变量。 2、能正确使用字符串的指针和指向字符串的指针变量。 u 实验内容 编程序并上机调试运行程序,要求都用指针实现: 1、输入三个整数,按由小到大的顺序输出,然后将程序改为:输入三个字符串,按由小到大顺序输出。 2、将一个3×3的矩阵转置,用一函数实现之。 3、有n个人围成一圈,顺序排号。从第1个人开始1—3报数,凡报到3的人退出圈子,问最后留下的是原来第几号的那位。 u 参考例题 【例】从10个数中找出其中最大值和最小值。 调用一个函数只能得到一个返回值,今用全局变量在函数之间“传递”数据。 程序如下: int max,min; /*全局变量*/ void max_min_value(int array[],int n) {int *p,*array_end; array_end=array+n; max=min=*array; for(p=array+1;p<array_end;p++) if(*p>max)max=*p; else if (*p<min)min=*p; return; } main() {int i,number[10]; printf("enter 10 integer umbers:\n"); for(i=0;i<10;i++) scanf("%d",&number[i]); max_min_value(number,10); printf("\nmax=%d,min=%d\n",max,min); } 【例】以上程序可改为: int max,min; /*全局变量*/ void max_min_value(int *array,int n) {int *p,*array_end; array_end=array+n; max=min=*array; for(p=array+1;p<array_end;p++) if(*p>max)max=*p; else if (*p<min)min=*p; return; } main() {int i,number[10],*p; p=number; /*使p指向number数组*/ printf("enter 10 integer umbers:\n"); for(i=0;i<10;i++,p++) scanf("%d",p); p=number; max_min_value(p,10); printf("\nmax=%d,min=%d\n",max,min); } |
|