今天给大家带来指针问题的另一个案例。题目是:将一个已知数组中最大的数与第一个元素交换,最小的与最后一个元素交换,并输出数组。
关于数组指针,我们需要了解的是,a[3]={1,2,3};该数组的首地址就是a。定义一个指针int *p;通过p=a就可以将p指向数组首地址了。同时,元素a[0]的地址恰好与数组地址重合,即&a[0]与a正好是同一数值。有疑问的朋友可以通过小程序测试下。下面贴上程序代码,纯手动打造,请各位朋友指教。
main()
{
int *max,*min,max_i,min_i;
int a[8]={34,12,56,34,66,23,99,87};
int i,temp;
max=min=a;//最大值最小值指针初始化为a[0]
max_i=min_i=0;//最大值最小值下标初始化为0
printf("修改前的数组是\n");
for(i=0;i<8;i++)
{
printf("%d ",a[i]);
}
printf("\n");
for(i=0;i<8;i++)
{
if(a[i]>*max)
max=&a[i];//寻找最大值
if(a[i]<*min)
min=&a[i];//寻找最小值
}
printf("%d %d",*max,*min);
temp=a[0];
a[0]=*max;
*max=temp;
temp=a[7];
a[7]=*min;
*min=temp;
printf("修改后的数组是\n");
for(i=0;i<8;i++)
{
printf("%d ",a[i]);
}
printf("\n");
}
运行后的结果如下
今天的编程演练就到这里,有什么问题请评论区评论给我,小编会及时回复哦,谢谢亲的支持!