C语言:求出数组a[20]中最大、最小元素的值,以及它们的下标

用C语言编程:求出数组a[20]中最大、最小元素的值,以及它们的下标。哪位大侠帮忙写写程序。

/*
* Copyright(c) 2011,南京四开电子企业有限公司 伺服驱动部
* All rights reserved
*
* 文件名称:test_lesson7
* 描 述:功能求出数组array[20]中最大、最小元素的值,以及它们的下标
*
* 作 者:张宏兵
* 完成日期:2011年07月06日
*/
#include<stdio.h>
int maxArray(int x ,int y);
int minArray(int x ,int y);
int main(void)
{
int i = 0 ;
int array[20] ;
printf("请连续输入20个整型数:\n");
do
{
scanf("%d",&array[i]);//将20个数赋给array数组,按回车输入值
i++;
} while(i < 20);
int maxTemp = array[0];
int minTemp = array[0];
int maxIndex = 0;
int minIndex = 0;
for(i=1;i<20;i++)
{
maxTemp = maxArray(array[i] , maxTemp); //最大值与最小值
minTemp = minArray(array[i] , minTemp);
}
for(i=0;i<20;i++)
{
if (maxTemp == array[i]) // 最大值与最小值的下标
{
maxIndex = i;
}
if (minTemp == array[i])
{
minIndex = i;
}
}
printf("Array[20]中最大值为%d,最小值%d,最大值下标为array[%d],最小值下标为array[%d] \n",maxTemp,minTemp,maxIndex,minIndex);
return 0;
}
/**********************************
* 函数名称:maxArray(int x , int y)
* 说 明:输出最大值
* 输 入:x , y
* 输 出:return 值
**********************************/
int maxArray(int x, int y)
{
int z;
z = x>y?x:y;
return z;
}
/**********************************
* 函数名称:minArray(int x , int y)
* 说 明:输出最小值
* 输 入:x , y
* 输 出:return 值
**********************************/
int minArray(int x, int y)
{
int z;
z = x<y?x:y;
return z;
}
/*
* 说 明:以上程序在visual C++环境下运行正确!
*
*/
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-22
思路:将a[0]设为max或min并将0记为最大和最小的下标,然后循环遍历以后的数据,遇到大的或小的就更新max和min的值,同时更新最大最小的下标。
这是循环和数组结合的比较典型的题目,思路已经提供,希望你能自行完成程序,这样学习的会比较深刻些。
祝你好运。本回答被网友采纳
第2个回答  2011-06-22
#include<stdio.h>
#include<stdlib.h>
int main()
{
int a[20]={-2,1,2,3,10,5,6,7,8,9,10,-2},big,small;
big=small=a[0];
for(int i=0;i<20;i++)
{
big=big<a[i]?a[i]:big;
small=small>a[i]?a[i]:small;
}
printf("max number is:%d\nat:",big);
for(int i=0;i<20;i++)
if(a[i]==big) printf("%d ",i);
printf("min number is:%d\nat:",small);
for(int i=0;i<20;i++)
if(a[i]==small) printf("%d ",i);
printf("\n");
system("pause");
}