| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 812 人关注过本帖
标题:求出指定数的大于它的最小数或者小于它的最大数
只看楼主 加入收藏
lp617
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2015-5-15
结帖率:80%
收藏
已结贴  问题点数:10 回复次数:14 
求出指定数的大于它的最小数或者小于它的最大数
求出指定数的大于它的最小数或者小于它的最大数
2015-06-08 23:29
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:9 
整数啊  正还是负   要是实数则没有答案呢

DO IT YOURSELF !
2015-06-09 08:18
lp617
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2015-5-15
收藏
得分:0 
回复 2楼 wp231957
整数例如Array[8]={1,4,7,9,40,23,6,90};中指定数11大于它的最小数23,小于它的最大数9
2015-06-09 22:08
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:1 
排序,取指定数的前一个和后一个就行了
2015-06-09 22:49
lp617
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2015-5-15
收藏
得分:0 
回复 4楼 calix
但是指定数不在数组中把数组中的数排好序以后怎取数,
2015-06-09 23:03
lp617
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2015-5-15
收藏
得分:0 
回复 5楼 lp617
有没有程序?

谢谢!!!!!
2015-06-09 23:26
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
程序代码:
#include <stdio.h>

int main()
{
    int arr[8]={21,24,7,9,40,25,6,90};
    int i,j,tmp;
    for(i=0;i<8;i++)
    {
        for(j=i+1;j<8;j++)
        {
            if(arr[i]<arr[j])
            {
                tmp=arr[i];
                arr[i]=arr[j];
                arr[j]=tmp;
            }
        }
    }
    int b=23;
    for(i=0;i<8;i++)
    {
        if(arr[i]<=b) break;
    }
    printf("小于本身最大值是%4d   大于本身最小值是%4d\n",arr[i],arr[i-1]);
    return 0;
}

DO IT YOURSELF !
2015-06-10 09:12
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
程序代码:
#include <stdio.h>

void foo( int arr[], size_t n, int value, int** restrict pless, int** restrict pgreater )
{
    *pless=NULL, *pgreater=NULL;
    for( size_t i=0; i!=n; ++i )
    {
        if( arr[i] < value )
        {
            if( !*pless || arr[i]>**pless )
                *pless = &arr[i];
        }
        else if( arr[i] > value )
        {
            if( !*pgreater || arr[i]<**pgreater )
                *pgreater = &arr[i];
        }
    }
}

int main( void )
{
    int Array[8] = { 1,4,7,9,40,23,6,90 };

    int *pless, *pgreater;
    foo( Array, sizeof(Array)/sizeof(Array[0]), 11, &pless, &pgreater );
    if( pless )
        printf( "%d\n", *pless );
    if( pgreater )
        printf( "%d\n", *pgreater );

    return 0;
}
2015-06-10 09:32
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:0 
没那么复杂吧,又是排序、又是函数,还有指针,还多级指针,这岂不让初学者畏难而退么?其实就一个循环,两三行代码即可搞定的。
程序代码:
#include <stdio.h> 
void main()
{
    int i,c=11,limax,lamin,a[]={1,4,7,9,40,23,6,90};
    for(i=0,limax=lamin=a[0];i<8;i++)
    {
        if((a[i]>c&&a[i]<lamin)||lamin<c)lamin=a[i];
        if((a[i]<c&&a[i]>limax)||limax>c)limax=a[i];
    }
    printf("紧挨着%d的两个数是%d,%d\n",c,limax,lamin);
}


能编个毛线衣吗?
2015-06-10 10:01
calix
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:28
帖 子:249
专家分:1442
注 册:2015-5-4
收藏
得分:0 
以下是引用wmf2014在2015-6-10 10:01:36的发言:

没那么复杂吧,又是排序、又是函数,还有指针,还多级指针,这岂不让初学者畏难而退么?其实就一个循环,两三行代码即可搞定的。#include   
void main()
{
    int i,c=11,limax,lamin,a[]={1,4,7,9,40,23,6,90};
    for(i=0,limax=lamin=a[0];i<8;i++)
    {
        if((a>c&&alimax)||limax>c)limax=a;
    }
    printf("紧挨着%d的两个数是%d,%d\n",c,limax,lamin);
}

对极端的情况,比如数组中的数都大于或都小于给定的数,结果不对
2015-06-10 12:49
快速回复:求出指定数的大于它的最小数或者小于它的最大数
数据加载中...
 
   



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

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