乐乐学编程 发表于 2020-12-25 09:10:24

数组中找出最大和第二大元素

从数组中找出最大和第二大元素,并把它们分别储存到由largest和second_largest指向的变量中

风过无痕1989 发表于 2020-12-25 09:30:10

//从数组中找出最大和第二大元素,并把它们分别储存到由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:05:03

本帖最后由 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]
查看完整版本: 数组中找出最大和第二大元素