| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1233 人关注过本帖
标题:求个大佬帮下,用指针函数解决
只看楼主 加入收藏
青少年世代
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-12-8
结帖率:75%
收藏
已结贴  问题点数:20 回复次数:5 
求个大佬帮下,用指针函数解决
要求:在一个数组内。求出最大值和次大值,以及最大值和次大值的位置,用数组存输出的值,如输出数组是f_out[4]={最大值,位置,次大值,次最大值的位置},这样的顺序,请问能帮下么?
搜索更多相关主题的帖子: 指针 函数 最大值 位置 输出 
2017-12-15 20:41
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54066
注 册:2011-1-18
收藏
得分:0 
最大值的位置 = 0
次大值的位置 = 1
for( size_t i=2; …………
    if( buf[i] > 两者之最小值 )
         两者之最小值的索引 = i
if 最大值 < 次大值
    调换一下索引
2017-12-15 20:59
青少年世代
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-12-8
收藏
得分:0 
回复 2楼 rjsp
图片附件: 游客没有浏览图片的权限,请 登录注册
如果按照第一个最大第二个次大值这样排序,我这样写有问题,请问怎么修改呢?
2017-12-15 21:48
青少年世代
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-12-8
收藏
得分:0 
显示的时候,如果按照顺序第0位最大,第1位次大,他就会出现这样的情况,而且,改变几个顺序,第二个i值总是变成4....
2017-12-15 21:54
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
收藏
得分:0 
程序代码:
void getFirstTwo(int* a,int len){
    int max1,max2;//最大值,次最大值 
    int index1,index2;//最大值索引,次最大值索引 
    max1 = max2 = a[0];
    index1 = index2 = 0;
    
    for(int i=1;i<len;i++){
        if(a[i]>max1){
            max2 = max1;
            max1 = a[i];
            index1 = i;
        }else if(a[i]>max2){
            max2 = a[i];
            index2 = i;
        }
    } 
    printf("max1 = %d  index1 = %d \n max2 = %d  index2 = %d\n",max1,index1,max2,index2);
    
}
2017-12-16 14:25
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
收藏
得分:20 
仔细看了一看,我的代码和你的没区别,后来想了一下,是赋初值的时候不合理,因为最大值和次最大值不可能相等,所以应该像以下这样:
赋初值的时候,max1 = a[0],max2 = a[1];
index1=0,index2 = 1;
这样就不会出现bug了
2017-12-16 14:35
快速回复:求个大佬帮下,用指针函数解决
数据加载中...
 
   



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

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