| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 604 人关注过本帖
标题:输入 10 个数字,然后输出最大的三个数字,求大神帮忙啊
只看楼主 加入收藏
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
结帖率:93.75%
收藏
已结贴  问题点数:20 回复次数:9 
输入 10 个数字,然后输出最大的三个数字,求大神帮忙啊
#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);
}



我只能输出一个,剩下2个怎么办
搜索更多相关主题的帖子: include 最大的 
2014-05-31 13:12
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:5 
另定义一个数组a[],将 score[]各元素值赋给 a (这样做是保证原数组不被改变,或者你可以用函数调用)
然后就比较找出最大的,找到了将这个元素置0,再继续找

不过上面的方法有个问题——就是0不一定就是最小的

所以可以这样做,设置一个flag标志位(整型)
然后循环比较,比如拿  score[0]和其它九个元素比较,score[0]比较大的话 flag++, 一个循环比较完后,如果 flag>=7 的话就说明它是前三大的数字,就输出
注意:每一循环后  flag 需要重新置 0

[ 本帖最后由 韶志 于 2014-5-31 13:37 编辑 ]

三十年河东,三十年河西,莫欺少年穷!
2014-05-31 13:30
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
收藏
得分:0 
回复 2 楼 韶志
就是不懂要怎么把找出的最大数置0
2014-05-31 14:14
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:5 
程序代码:
#include <stdio.h>
#include <stdlib.h>

#define NUM 10

int cmp(const void *a, const void *b)
{
     return (*(int *)b - *(int *)a);
}

int main(void)
{
    int num[NUM] = {0};
    int i = 0;
    for (i = 0; i != NUM; ++i)
    {
        scanf("%d", &num[i]);
    }
    qsort(num, NUM, sizeof (num[0]), cmp);
    printf("%d %d %d ", num[0], num[1], num[2]);
    return 0;
}


用库函数提供的排序函数 又好用 又便捷 就是需要定义一个排序判断的函数比较烦
2014-05-31 14:30
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
收藏
得分:0 
回复 4 楼 zklhp
这么复杂的我看不懂。。。用[]来做的作业
2014-05-31 14:31
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用ctl184762651在2014-5-31 14:31:45的发言:

这么复杂的我看不懂。。。用[]来做的作业

我上学的时候老师也不教这种用法 不过后来知道了才发现这种写法最方便最便捷 至于你用不用 看你的需求了 如果你学习就是为了通过考试 自然这些东西可以不接触 因为书上没有讲嘛
2014-05-31 14:34
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
收藏
得分:0 
回复 2 楼 韶志
能把你的第一种方法写给我看吗,谢谢啦。
2014-05-31 14:37
qq471402415
Rank: 2
等 级:论坛游民
帖 子:88
专家分:45
注 册:2013-12-3
收藏
得分:5 
#include<stdio.h>
#include <algorithm>
using namespace std;
int main(void)
{
  int a[10],i;
  for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    sort(a,a+10);
    for(i=9;i>=7;i--)
        printf("%d ",a[i]);
}
2014-05-31 15:41
黑色的蚊子
Rank: 2
等 级:论坛游民
帖 子:20
专家分:17
注 册:2014-5-17
收藏
得分:5 
#include<stdio.h>
int main()
{
    int a[10];
    int i,l,t;
    printf("请用户随意输入三个数据:");
    for(i=0;i<3;i++)
    {
    scanf("%d",&a[i]);
    }
    printf("\n");

    for(l=0;l<3;l++)
        for(i=0;i<3-i;i++)
        {
            if(a[i]>a[i+1])
            {t=a[i];a[i]=a[i+1];a[i+1]=t;}
        }
        printf("输出数据由小到大排列为:");
        for(i=0;i<3;i++)
        {
            printf("%d",a[i]);
        }
        printf("\n");
        return 0;   
}
2014-05-31 15:44
ctl184762651
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2014-5-31
收藏
得分:0 
要疯了
2014-05-31 15:56
快速回复:输入 10 个数字,然后输出最大的三个数字,求大神帮忙啊
数据加载中...
 
   



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

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