| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1909 人关注过本帖
标题:指针运算找到数组中最大和第二大元素
只看楼主 加入收藏
小奶呆瓜
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-11-19
结帖率:0
收藏
 问题点数:0 回复次数:6 
指针运算找到数组中最大和第二大元素
编写下列函数:
void find_two_largest(const int*a,int n,int*largest,int*second_largest);
a指向长度为n的数组。函数从数组中找出最大和第二大元素,并把它们分别储存到由largest和second_largest指向的变量中,要求使用指针算术运算而不是取下标来访问数组元素。
搜索更多相关主题的帖子: 指针 int 数组 元素 最大 
2020-12-24 09:23
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册:2010-3-16
收藏
得分:0 
程序代码:
void find_two_largest(const int*a,int n,int*largest,int*second_largest)
{
    *largest=*a++;
    *second_largest=INT_MIN;
    for(int i=1;i<n;i++,a++)
    {        
        if(*largest<*a)
        {
            *second_largest=*largest;
            *largest=*a;
        }
        else if(*second_largest<*a)
            *second_largest=*a;            
    }
}


[此贴子已经被作者于2020-12-24 17:23编辑过]

2020-12-24 11:15
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:0 
     (print     car (sort a  #'>)) )
      (print  (  car  (cdr (sort a #'>)))  )

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2020-12-24 16:15
小奶呆瓜
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-11-19
收藏
得分:0 
宏定义的INT_MAX*代表什么啊
2020-12-24 16:49
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册:2010-3-16
收藏
得分:0 
回复 4楼 小奶呆瓜
INT_MAX,INT_MIN是头文件limits.h里定义的int类型的最大值和最小值,这里要设置成最小值。
2020-12-24 17:24
风过无痕1989
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:8
帖 子:228
专家分:1050
注 册:2020-7-17
收藏
得分:0 
回复 楼主 小奶呆瓜
程序代码:
//从数组中找出最大和第二大元素,并把它们分别储存到由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[10];
     for (i = 0;i < 10;i++)
    {
        scanf_s("%d", &arr[i]);
    } 
    a = arr;
    if (a[0]>a[1])
    {
        L = &a[0];
        SL = &a[1];
    }
    else
    {
        L = &a[1];
        SL = &a[0];
    }
    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);
}
2020-12-25 08:52
小奶呆瓜
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2020-11-19
收藏
得分:0 
感谢大佬们💖
2020-12-26 15:53
快速回复:指针运算找到数组中最大和第二大元素
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016927 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved