| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3009 人关注过本帖
标题:输入 10 个数字,然后输出其中最大的 3 个数字,用我的思路怎么做
只看楼主 加入收藏
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
结帖率:93.75%
收藏
已结贴  问题点数:10 回复次数:15 
输入 10 个数字,然后输出其中最大的 3 个数字,用我的思路怎么做
能继续帮我写下吗,我烦恼了好几天了
输入10个数字(不用考虑负数),输出其中最大的3个数字,找出第一个后,需要把这个数字置0,然后找第二个最大的,这要怎么做
#include <stdio.h>
void main()
{
    int a,max,b;
    int score[10];
    for(a=0;a<10;a++)
    {
    printf("%d人目の点数を入力してください",a+1);
    scanf_s("%d",&score[a]);
    }

max=score[0];

for(a=1;a<10;a++)
    {   
        if(max<score[a])
            {
                max=score[a];
        b=a+1;
        }
    }
    printf("%d  %dth",max,b);

}

如题,我需要输出3个最大值,可是我只输出了一个
搜索更多相关主题的帖子: include 最大的 
2014-05-31 16:06
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
收藏
得分:0 
难道没有人才了吗,不要用其他方法啊,这个没弄懂怎么行
2014-05-31 16:06
kajj_0321
Rank: 2
等 级:论坛游民
帖 子:47
专家分:93
注 册:2013-10-23
收藏
得分:2 
回复 楼主 ctl184762651
程序代码:
#include <stdio.h>
void main()
{
    int i=0;
    int a,max,b;
    int score[10];
    for(a=0;a<10;a++)
    {
    printf("%d人目の点数を入力してください",a+1);
    scanf("%d",&score[a]);
    }
    while(i<3)
    {
        max=score[0];
        for(a=1;a<10;a++)
        {   
            if(max<score[a])
            {
                max=score[a];
                b=a+1;
            }
        }
        printf("%d  %dth",max,b);
        score[b-1]=0;
        i++;
    }
}



自己看一下吧!不知道这算不算你的方法
收到的鲜花
  • ctl1847626512014-06-01 23:36 送鲜花  3朵   附言:好文章

kajj->1314 努力每一天。
2014-05-31 16:25
黄昏乐章
Rank: 2
来 自:青岛
等 级:论坛游民
帖 子:73
专家分:25
注 册:2011-6-6
收藏
得分:2 
回复 3 楼 kajj_0321
都是负数的话怎么般
2014-05-31 16:45
for()
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2014-5-31
收藏
得分:2 
程序代码:
#include<stdio.h>

void main()
{
    int i,j,max[3],flag[3];
    int score[10];
    for(i=0;i<10;i++)
    {
    printf(" 请输入十个数");
    printf("第%d个数是:",i+1);
    scanf("%d",&score[i]);
    }

    max[0]=score[0];
    max[1]=score[1];
    max[2]=score[2];

    flag[0]=0;
    flag[1]=1;
    flag[2]=2;

    for(i=0;i<10;i++)
    {  

        if(score[i]>max[0]){
            for(j=2;j>0;j--){
            max[j]=max[j-1];
            flag[j]=flag[j-1];
            }
            max[0]=score[i];
            flag[0]=i;
        }
        else if(score[i]>max[1]){
            max[2]=max[1];
            max[1]=score[i];
            flag[2]=flag[1];
            flag[1]=i;
        }
        else if(score[i]>max[2]){
            max[2]=score[i];
            flag[2]=i;
        }
                   

    }
    for(i=0;i<3;i++){
    printf("%d %d",max[i],flag[i]+1);
    printf("\n");
    }

}





这是我根据楼主的意思改的代码,既然存在负数数据,那只能舍弃拿到最大数置为0的思路了。
收到的鲜花
  • ctl1847626512014-06-01 23:38 送鲜花  1朵   附言:这个有点麻烦,你看看三楼了,感觉最棒了

交流学习,畅所欲言!
2014-05-31 17:45
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:2 
你可以用冒泡先从大到小排序,然后输出前三个就可以了

我不是砖家,要努力成为砖家。
2014-05-31 23:17
for()
Rank: 1
等 级:新手上路
帖 子:3
专家分:2
注 册:2014-5-31
收藏
得分:0 
楼主的题套用在实际问题中,比如学生成绩录入,最后要求找出所有成绩中的前三甲,以及他们的学号。用排序的方法将成绩排列的话(教育污点啊),最好能定义一个结构体将成绩与学号绑定。我想了下 楼主的想法可以的,但考虑到程序的健壮性,如果要处理负数数据呢?就算置为Int型最小的数也是破坏了用户原有输入的数据吧。用你的想法这样呢?if(第二个最大数与第一个最大数相等)就跳过?

交流学习,畅所欲言!
2014-06-01 05:18
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
收藏
得分:0 
回复 3 楼 kajj_0321
太感谢了,这就是我要的思路,一直不知道怎么加个外循环,谢谢啦。
2014-06-01 23:35
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
收藏
得分:0 
回复 6 楼 砖家的谎言
冒泡法排序是什么,没学过啊
2014-06-01 23:35
jeff6197754
Rank: 2
等 级:论坛游民
帖 子:6
专家分:22
注 册:2014-5-25
收藏
得分:2 
回复 9 楼 ctl184762651
你学C是用什么教材啊?
我的教材在讲for循环那一节有介绍

冒泡排序是最基础的一种排序方法
2014-06-02 00:52
快速回复:输入 10 个数字,然后输出其中最大的 3 个数字,用我的思路怎么做
数据加载中...
 
   



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

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