找到N个元素中的两个最大数字

时间:2015-10-11 22:09:00

标签: c arrays numbers

我有作业,你必须找到n个元素中的两个最大数字(元素的数量是' a')但我似乎无法找到第二大数字。你能帮我么?谢谢

#include<stdio.h>

int main()
{
int a, c, i; 
int b; 
b=0;
c=0;

scanf(" %d",&a);
for(i=2;i<=a;i++) //find the biggest number
{
scanf("%d",&c);

if(b<c)
b=c;     
}
if (a > c) //Here I cant find my second biggest number
c = a;
printf("%d %d", b, c);      
return 0;
}

1 个答案:

答案 0 :(得分:1)

这是一个小程序,可以找到数组中最大和第二大的值。

从中获取的相关位是它一次扫描一个元素数组并将其与当前“最大值”进行比较。如果数组中的值较大,则将其存储为新的最大值。在存储之前,它将旧的最大值复制为新的“第二大值”。

[编辑:我已更新算法以处理永远不会设置第二大值的情况。例如,输入集为{2,1}。另外我更新它以处理负数。]

#include <stdio.h>
#include <limits.h>

int myArray [] = {2,5,9,1,7,13,3,11};

#define NumElements( array ) sizeof(array)/sizeof(array[0])

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

    int i;
    int largest = INT_MIN;
    int secondLargest = INT_MIN;

    for( i=0; i<NumElements(myArray); i++ )
    {
        if( myArray[i] > largest )
        {
            secondLargest = largest;
            largest = myArray[i];
        }
        else if( myArray[i] > secondLargest )
        {
            secondLargest = myArray[i];
        }
    }

    printf( "largest: %d\n", largest );
    printf( "second largest: %d\n", secondLargest );

    return 0;
}