数组中找出最大和第二大元素
从数组中找出最大和第二大元素,并把它们分别储存到由largest和second_largest指向的变量中 //从数组中找出最大和第二大元素,并把它们分别储存到由largest和second_largest指向的变量中#include<stdio.h>
int main()
{
void find_two_largest(const int *a, int n, int *largest, int *second_largest);
int i, *a, *L, *SL, arr;
for (i = 0;i < 10;i++)
{
scanf_s("%d", &arr);
}
a = arr;
if (a>a)
{
L = &a;
SL = &a;
}
else
{
L = &a;
SL = &a;
}
find_two_largest(a, 10, L, SL);
}
void find_two_largest(const int *a, int n, int *largest, int *second_largest)
{
int i, s;
for (i = 1;i <= n;i++, a++)
{
if (*largest < *a)
{
if(*second_largest < *largest)
*second_largest = *largest;
*largest = *a;
}
else if (*second_largest < *a)
{
s = *second_largest;
*second_largest = *a;
if (*second_largest == *largest)
*second_largest = s;
}
}
if (*second_largest > *largest) // 最后再次确认
{
s = *second_largest;
*second_largest = *largest;
*largest = s;
}
printf("largest = %d, second_largest = %d\n",*largest,*second_largest);
} 本帖最后由 jackz007 于 2020-12-25 11:07 编辑
#include <stdio.h>
int main(void)
{
int d = {0} , e = {0} , f , i , j, n , t ;
int largest , second_largest ;
for(i = 0 ; i < 256 ; i ++) e = i ;
scanf("%d" , & n) ;
for(i = 0 ; i < n ; i ++) scanf("%d" , & d) ;
for(i = 0 ; i < n - 1 ; i ++) {
for(j = i + 1 ; j < n ; j ++) {
if(d] < d]) {
t = e ;
e = e ;
e = t ;
}
}
}
for(largest = second_largest = -1 , f = 0 , i = 1 ; i < n ; i ++) {
if(d] < d]) {
largest = e ;
second_largest = e ;
f ++ ;
break ;
}
}
if(f) {
printf("index : %d , %d\n" , largest , second_largest) ;
printf("value : %d , %d\n" , d , d) ;
} else {
printf("none of largest and second_largest data.\n") ;
}
}
编译、运行实况:
D:\00.Excise\C>g++ -o x x.c
D:\00.Excise\C>x
18
1 2 3 4 5 6 7 8 9 9 8 7 6 5 4 3 2 1
index : 8 , 7
value : 9 , 8
D:\00.Excise\C>
页:
[1]