求数组中所有元素的最大值和下标

求数组中所有元素的最大值和下标,第1张

数组中所有元素的最大值可以用打擂台的方法很方便的求出。首先设最大元素所在的下标为0。然后对下标值从1一直到n-1进行遍历。如果新检查元素的值大于当前的最大元素值,就更新最大值的下标。便历结束时就可以输出最大值的下标以及最大值的大小。
int max=0;
for(i=1;i<n;i++)
if(a[max]<a[i])max=i;
printf("a[%d]=%d\n",max,a[max]);

matlab提供了一些基本的函数,以方便一些基本 *** 作,这些你可以通过找一些函数,或者参考一下一些基本教材!你问的那个问题,用函数max(A),就可以实现,其中A是一个数组,当然也可以是一个矩阵,它返回的是每一列的最大值,最终是以一个行向量的形式输出;如果你说的数组不是1维的话,也可以通过下面的形式转换一下max(A(:));你可以尝试一下!由于matlab中,函数很多,在这就不方便给你放下面了!希望能对你有帮助!

int findmax(int a[],int length)
{
int i,maxvalue=0;
for (i=0;i<length;i++)
{
if (i==0)
{
maxvalue = a[i];
}
else
{
if (maxvalue < a[i])
{
maxvalue = a[i];
}
}
}
return maxvalue;
}
int findmin(int a[],int length)
{
int i,minvalue=0;
for (i=0;i<length;i++)
{
if (i==0)
{
minvalue = a[i];
}
else
{
if (minvalue > a[i])
{
minvalue = a[i];
}
}
}
return minvalue;
}
int main()
{

int i,j;
int mark[10];

for(j=0;j<10;j++)
{
scanf("%d\n",&mark[j]);
}
printf("最大值:%d\n",findmax(mark,10));
printf("最小值:%d\n",findmin(mark,10));
}

for(i=0;i<N;i++)
{for(j=0;j<N;j++)
cin>>a[i][j];
if(b[i]<a[i][j]) b[i]=a[i][j];
cout<<a[i][j]<<endl;
}
有问题,改成这样
for(i=0;i<N;i++)
{
b[i]=-10000000000000;//总之这个数要足够小
for(j=0;j<N;j++)
cin>>a[i][j];
for(j=0;j<N;j++) //必须要这句,否则就只是比较一个了
{
if(b[i]<a[i][j])
b[i]=a[i][j];
}
cout<<a[i][j]<<endl;
}

#include <stdioh>
int max(int arr[], int len)
{
if(1 == len) // 只有一个元素
{
return arr[0];
}
int a = arr[0]; //第一个元素
int b = max(arr + 1, len - 1); //第二个元素起的最大值
return a > b a : b;
}
int main(void)
{
int a[] = {1,2,3,4,5,6,7,8,9,10};
printf("最大值:%d\n", max(a, sizeof(a) / sizeof(a[0])));
return 0;
}

要求数组a中索引从0到n-1的最大值,先递归求索引从0到n-2的最大值,设该值为m,然后返回m和a[n-1]中大的那个值。

Java代码:

public class HelloWorld {
    public static void main(String []args){
        Systemoutprintln(max(new int[] {5, 3, 1, 2, 6, 4}));
    }
    public static int max(int[] a) {
        return max(a, alength - 1);
    }
    private static int max(int[] a, int i) {
        if (i == 0) {
            return a[0];
        }
        int m = max(a, i - 1);
        return a[i] > m  a[i] : m;
    }
}

#include<stdioh>

void main()

{

   int i,n;

double a[100],max;//避免数据过大溢出导致输入无效,所以用double;

max=a[0];//假设最大值为a[0]

printf("请输入录入数据个数:\n");

scanf("%d",&n);

printf("\n");

   printf("请输入数据数值,并回车:\n");//数据录入

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

scanf("%lf",&a[i]);

for(i=0;i<n;i++)//数据比较大小

if(a[i]>max)max=a[i];

printf("最大值=%2lf",max);//输出数据带2位小数

}

首先把数组的第一个数赋值给变量max和min,分别表示最大值和最小值,再依次判断数组的其他,判断当前的最大值和最小值是否就是最大值和最小值,如果不是进行替换,最后输出最大值和最小值。

#include<stdioh>
#define N 6
int main()
{
int a[N],max,min,i;
for(i=0;i<N;i++)//输入数组 
scanf("%d",&a[i]);
max=min=a[0];//把数组第一个数赋值给max和min 
for(i=1;i<N;i++){//依次判断剩下每个数 
if(a[i]>max) max=a[i];//如果该数大于max,把其赋值给max 
if(a[i]<min) min=a[i];//如果该数小于min,把其赋值给min 
}
printf("最大值:%d,最小值:%d\n",max,min);
return 0;
}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13371936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-23
下一篇 2023-07-23

发表评论

登录后才能评论

评论列表(0条)

保存