教 学 大 纲
  授 课 教 案
  CAI 课 件
  实 验 指 导
  习   题
  课 程 试 卷
  参 考 资 料
 
    

第 5 实验 指针

一、实验目的

1 .掌握指针的概念,会定义和使用指针变量。

2 .学会使用数组的指针和指向数组的指针变量。

3 .学会使用字符串的指针和指向字符串的指针变量。

4 .了解指向指针的指针的概念及其使用方法。

二、实验例题

1.通过指针变量访问整型变量。

main()

{ int a,b,*p1,*p2;

a=10; b=30;

p1=&a;

p2=&b;

printf( “ %d,%d\n ” ,a,b);

printf( “ %d,%d\n ” ,*p1,*p2);

}

2.使用指针变量把输入的两个整数 a , b 按由大到小的次序输出。

main()

{ int a,b,*p1,*p2,*p;

scanf( “ %d%d ” ,&a,&b);

p1=&a; p2=&b;

if(a<b)

{ p=p1; p1=p2; p2=p;}

printf( “ a=%d, b=%d\n ” ,a,b);

printf( “ max=%d,min=%d\n ” *p1,*p2);

}

运行时输入数据为: 8 18 ↙

3. 使用指针变量作为函数的参数,把输入的两个整数 a , b 按由大到小的次序输出。

swap( int *q1, int *q2)

{ int t;

t=*q1;

*q1=*q2;

*q2=t;

}

main()

{ int a,b,*p1,*p2;

scanf( “ %d%d ” ,&a,&b);

p1=&a; p2=&b;

if( a<b ) swap(p1,p2);

printf( “ %d,%d\n ” ,a,b);

}

运行时输入数据为: 8 18 ↙

4.用指向数组元素的指针变量处理数组,输出数组 a 的 10 个元素。

main()

{ int a[10],i,*p;

for(i=0;i<10;i++)

scanf( “ %d ” ,&a[i]);

printf(( “ \n ” );

for(p=a;p<(a+10);p++)

printf( “ %d ” ,*p);

}

5.用选择排序法对 10 个整数按由大到小排序。

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;}

}

}

main()

{ int *p,i,a[10];

p=a;

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++);

}

三、实验习题

从键盘输入三个整数,定义三个指针变量 p1 , p2 , p3 ,使 p1 指向三个数中的最大者, p2 指向次大者, p3 指向最小者,然后按由大到小的次序输出三个数。

 

 

版权所有 © 2006-2007 沈阳大学信息工程学院 计算机基础教研室