湖北理工学院c语言实验报告六答案(完整版)
实验六 指针
实验课程名:高级语言程序设计(C)
专业班级: 学号: 姓名:
实验时间: 实验地点: 指导教师:
一、实验目的和要求
1. 通过实验进一步掌握指针的概念,会定义和使用指针变量;
2. 能正确使用数组的指针和指向数组的指针变量;
3. 能正确使用字符串的指针和指向字符串的指针变量;
4. 能正确使用指向函数的指针变量;
5. 了解指向指针的指针的概念及其使用方法。
二、实验内容
1、任务名称
1.上机验证以下c70101.c程序的运行结果
#include
void main()
{ int i,j,*pi,*pj;
pi=&i;
pj=&j;
i=5;
j=7;
printf("\n%d\t%d\t%d\t%d",i,j,pi,pj);
printf("\n%d\t%d\t%d\t%d",&i,*&i,&j,*&j);
}
运行结果 :
5 7 -34 -32
-34 5 -32 7
运行结果分析:指针的值与指针指向的变量值的区别。在VC环境下,以上运行结果中的负数是另一个值。
2、任务名称
源代码:
#include
void main()
{ int i,a[]={1,2,3},*p;
p=a; /*将数组a首地址赋给指针p*/
for (i=0;i<3;i++)
printf("%d,%d,%d,%d\n",a[i],p[i],*(p+i),*(a+i));
}
运行结果:(需要截图)
运行结果分析:把数组a[3]的首地址a存入指针变量p,所以a[i]和p[i],*(p+i),*(a+i)表示数组a[3]中的元素。
3、任务名称
源代码:
#include
void main()
{ int j,a[12],*p=a;
for(j=0;j<12;j++)
scanf("%d",p++);
p=a;
for(j=1;j<=12;j++)
{ printf("%4d",*p++);
if(j%4 == 0)
printf("\n");
}
}???
运行结果:(需要截图)
运行结果分析:
把数组a[12]的首地址赋给指针变量p,指针p指向数组a的第一个元素。在for循环中依次输入12个数,最后输出数组中的元素。
4、任务名称
源代码:
#include
void main( )
{ int a,b,c,*p=&c;
void sum(int ,int ,int *);
void swap(int * ,int * );
scanf("%d%d",&a,&b);
sum(a,b,p);
swap(&a,&b);
printf("sum=%d\n",c);
printf("a=%d,b=%d\n",a,b);
}
void sum(int a,int b,int *c)
{ *c=a+b;
}
void swap(int *a,int *b)
{ int t;
t=*a;
*a=*b;
*b=t;
}
运行结果:(需要截图)
运行结果分析:
输入两个整型数给变量a,b,指针p指向整型变量c,调用函数sum,把实参中的a,b传给形参a和b,实参p和形参c指向同一个变量,把a,b之和赋给p所指的变量c。然后调用swap函数使变量a和b的值交换。
5、任务名称
源代码:
#include
int table[10];
void lookup(int *t,int *a,int n)
{ int k;
*a=t[0];
for(k=1;k
if(*a>t[k]) *a=t[k];
}
void main()
{ int k,min,*p=&min;
for (k=0;k<10;k++)
scanf("%d",table+k);
lookup( table , p ,10);
printf("min=%d\n",min);
}
运行结果:(需要截图)
运行结果分析:函数lookup的功能是找到数组t中的最小值并把他赋给指针变量a所指向的变量。