标题:用户输入n和k,然后接着输入n个正整数。要求输出第k大的数。
只看楼主
没入门的小白
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-3-13
结帖率:0
已结贴  问题点数:20 回复次数:2 
用户输入n和k,然后接着输入n个正整数。要求输出第k大的数。
我是大一狗,只上过一节c语言课,老师就布置了这样的作业:用户输入n和k,然后接着输入n个正整数。要求输出第k大的数。        
连很多最基本的东西都没教,完全搞不懂,还要求要流程图
请各位大神们讲解一下,小弟在此感谢
搜索更多相关主题的帖子: 正整数 流程图 c语言 用户 正整数 流程图 c语言 用户 
2016-03-13 20:16
alice_usnet
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:18
帖 子:370
专家分:2020
注 册:2016-3-7
得分:10 
说一下基本思路就是排序,至于排序算法就有很多,算法书都有。冒泡排序最简单。

未佩好剑,转身便已是江湖
2016-03-13 21:00
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
得分:10 
#include <stdio.h>
#include <windows.h>
#define N 100        //n的最大值,即最多输入多少个整数

//定义升序排序函数
int LtoH(int n,int arr[])
    {
        int j=0,m=0,temp=0;
         for(j=n-1;j>0;j--)
            {
                for(m=0;m<j;m++)
                    {
                        if(arr[m]>arr[m+1])
                            {
                                temp=arr[m];
                                arr[m]=arr[m+1];
                                arr[m+1]=temp;                 
                            }
                    }
            }
    }
int main()
{
    int arr[N];
    int n,k;
    int i;
    printf("请输入n和k,两数间空格分开,Enter确认输入\n");
    scanf("%d %d",&n,&k);
    printf("请输入%d个整数,每个数间用Enter确认\n",n);
    for(i=0;i<n;i++)
        {
            scanf("%d",&arr[i]);
        }        
    //函数调用
    LtoH(n,arr);   
    printf("%d个数升序排序如下:\n",n);
    for(i=0;i<n;i++)
        {
            printf("%d ",arr[i]);
        }
    printf("\n第%d大的数:%d\n",k,arr[k]);
    system("pause");
    return 0;
}


[此贴子已经被作者于2016-3-14 13:39编辑过]

2016-03-14 13:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-462452-1-1.html




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

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