我有作业,你必须找到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;
}
答案 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;
}