利用指针的方法,求数组中的最大数和最小数

请用C语言编写

代码如下:

#include "stdafx.h"

#include "stdio.h"

int u,v;

find_u_v (int *p,int n)

{

 int *q;

 u=v=*p;

 for(q=p;q<p+n;q++)

 {if(u<*q) u=*q;

   else if(v>*q)  v=*q;

 }

}

int main(int argc, char* argv[])

{ int i,num[10];

 printf("intput 10 numbers\n");

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

  scanf("%d",&num[i]);

 find_u_v(num,10);

 printf("\n\n u=%d;v=%d\n",u,v);

}


扩展资料

指针是编程语言中的一个对象,利用地址,它的值直接指向存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。

意思是通过它能找到以它为地址的内存单元。在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之中。指针参考了存储器中某个地址,通过被称为反参考指针的动作,可以取出在那个地址中存储的值。

作个比喻,假设将电脑存储器当成一本书,一张内容记录了某个页码加上行号的便利贴,可以被当成是一个指向特定页面的指针;根据便利粘贴面的页码与行号,翻到那个页面,把那个页面的那一行文字读出来,就相当于是对这个指针进行反参考的动作。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2007-10-30
//---------------------------------------------------------------------------

#include <stdio.h>

int main(int argc, char* argv[])
{ int a[10];
int *mi,*ma,i;
mi=ma=a;
for (i = 0; i < 10; i++) { //对数组进行赋值
a[i]=i+1;
}
for (i = 0; i < 10; i++) { //找极值
if (*mi>a[i]) { //极小值
mi=&a[i];
}
if (*ma<a[i]) {//极大值
ma=&a[i];
}
}
printf("MAX=%d\nMIN=%d\n",*ma,*mi); //输出极值

return 0;
}
//---------------------------------------------------------------------------
第2个回答  2007-10-30
这个题和这个列子一样:
从10个数中找出其中最大的和最小的.

不要求改变数组元素的值,只要求的最大和最小值.但是调用一个函数只能得到一个返回值,为了能得到两个结果值.用全局变量在函数之间传递数据.

程序如下:

int max,min;
void max_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 numberd:\n");
for(i=0;i<10;i++)
scanf("%d",&number[i]);
max_min_value(number,10);
printf(;\nmax=%d,min=%d\n",max,min);
}

试试......本回答被提问者采纳
相似回答