| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 8177 人关注过本帖
标题:找出一个数组中前三个最大的数字,帮忙看下
只看楼主 加入收藏
huxiangwenhu
Rank: 4
等 级:业余侠客
威 望:1
帖 子:191
专家分:262
注 册:2010-6-1
结帖率:90.91%
收藏
已结贴  问题点数:10 回复次数:9 
找出一个数组中前三个最大的数字,帮忙看下
题目本意,找出前三大的数字,但是只能找出最大的,第二个和第三个都找不除,帮忙看看问题所在,谢谢大家了
#include<stdio.h>
main()
{
    float ave[10]={1,2,3,4,5,6,7,8,9,5};
    float max1,max2,max3;
    int first,second,third,i;
    first=second=third=0;
    max1=max2=max3=ave[0];
    for(i=0;i<10;i++)
    {
        if(max1<ave[i])
            {max1=ave[i];
             first=i+1;
            }

        if(max2<max1&&max2>ave[i])
            {
            max2=ave[i];
            second=i+1;
            }
       if(max3<max2&&max2>ave[i])
            {
            max3=ave[i];
            third=i+1;
            }
    }
    printf("最大的数字为:%d\n",first);
    printf("第二大的数字为:%d\n",second);
    printf("第三大的数字为:%d\n",third);
    getch();
    }
搜索更多相关主题的帖子: 中前 数字 
2010-06-21 22:40
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:3 
程序代码:
#include<stdio.h>
#include<conio.h>
main()
{
    float ave[10]={1,2,3,4,5,6,7,8,9,5};
    float max1,max2,max3;
    int first,second,third,i;
    first=second=third=0;
    max1=max2=max3=ave[0];
    for(i=0;i<10;i++)
    {
        if(max1<ave[i])
            {max1=ave[i];
             first=i+1;
            }
    }
    for(i=0;i<10;i++)
    {
        if(max2<max1&&max2<ave[i]&&max1!=ave[i])
            {
            max2=ave[i];
            second=i+1;
            }
    }
    for(i=0;i<10;i++)
    {
       if(max3<max2&&max3<ave[i]&&max2!=ave[i]&&max1!=ave[i])
            {
            max3=ave[i];
            third=i+1;
            }
       }
    printf("最大的数字为:%d\n",first);
    printf("第二大的数字为:%d\n",second);
    printf("第三大的数字为:%d\n",third);
    getch();

 } 
不做解释了,相信你看的懂

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2010-06-22 00:36
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:3 
你可以先排好序按从大到小或从小到大,然后去前三个或后三个就行了呗!

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-22 10:17
蓝色色
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2010-4-9
收藏
得分:0 
人才,原来可以这么解啊
2010-06-22 10:41
starjun14
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:266
专家分:136
注 册:2009-4-26
收藏
得分:0 
能不能麻烦高手解释一下代码的意思呢?
2010-06-23 07:29
笨到家啦
Rank: 2
等 级:论坛游民
帖 子:19
专家分:73
注 册:2010-6-7
收藏
得分:2 
回复 2楼 waterstar
求第二大数时的 if 语句:  if(max2<max1&&max2<ave[i]&&max1!=ave[i])
改成:if(max2<ave[i]&&max1>=ave[i]) 是不是会更好!
同理求第三大数时的 if 语句: if(max3<max2&&max3<ave[i]&&max2!=ave[i]&&max1!=ave[i])
改成:if(max3<ave[i]&&max2>=ave[i])
我想这样改过后更容易理解和实现。


[ 本帖最后由 笨到家啦 于 2010-6-23 08:40 编辑 ]
2010-06-23 08:32
a397448342
Rank: 1
等 级:新手上路
帖 子:27
专家分:6
注 册:2010-5-27
收藏
得分:0 
一个小白经过
2010-06-23 09:39
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 6楼 笨到家啦
不行,如果要那样改的话,后面的max1只能是大于ave[i]

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2010-06-23 13:31
myhnuhai
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:3
帖 子:425
专家分:1725
注 册:2010-3-17
收藏
得分:0 
看看这个能满足你简单的要求:
#include <stdio.h>
void main()
{
    float ave[10]={1,2,3,4,5,6,7,8,9,5};
    float av[10],temp;
    int i,j;
    for(i=0;i<10;i++)
    {
    av[i]=ave[i];
    printf("%.0f ",av[i]);
    }
    printf("\n");
    for(i=0;i<10;i++)
    for(j=0;j<10;j++)
    if(av[i]>av[j])
    {
        temp=av[i];
        av[i]=av[j];
        av[j]=temp;
    }
      printf("最大的数字为:%.0f\n",av[0]);
    printf("第二大的数字为:%.0f\n",av[1]);
    printf("第三大的数字为:%.0f\n",av[2]);
}

不要让肮脏的记忆,迷失了原本纯洁的心灵!
2010-06-23 14:19
key8714
Rank: 2
等 级:论坛游民
帖 子:48
专家分:87
注 册:2010-6-9
收藏
得分:2 
#include<stdio.h>
#include<stdlib.h>
int main()
{
    float a[10]={1,2,3,4,5,6,7,8,9,5};/*a[0]-a[9]*/
float max1,max2,max3;
    int i,j,k=0;
    {for(i=0;i<10;i++)
    for(j=1;j<i+1;j++)
    if (a[i]<a[j])
        max1=a[j];
        printf("%1.0f\n",max1);
}
{for(i=0;i<10;i++)
for(j=1;j<i+1;j++)
if(a[j]>a[i]&&a[j]!=max1)
max2=a[j];
printf("%1.0f\n",max2);
}
{for(i=0;i<10;i++)
for(j=1;j<i+1;j++)
if(a[j]>a[i]&&a[j]!=max1&&a[j]!=max2)
max3=a[j];
printf("%1.0f\n",max3);
}
    system("pause");
}
2010-06-23 16:59
快速回复:找出一个数组中前三个最大的数字,帮忙看下
数据加载中...
 
   



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

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