C程序求中间数

vhmi4jdf  于 2023-10-16  发布在  其他
关注(0)|答案(6)|浏览(150)

嗨,这是我的代码来找到中间数3,但当我给予a=3 b=2和c=1我得到错误的输出。我怎么能找到正确的中间数?有没有什么方法可以使用数组?谢谢你

#include<stdio.h>

int main()

{

    int a,b,c;

    int min,mid,max,i=1;

    printf("Enter number: ");
    scanf("%d",&a);
    printf("\nEnter number: ");
    scanf("%d",&b);
    printf("\nEnter number: ");
    scanf("%d",&c);

    if(((a<b)&&(b<c)) || ((a>b)&&(a<c)))
    {
        min=a;
        mid=b;
        max=c;
    }
    if(((b<a)&&(a>c)) || ((a>b)&&(a<c)))
    {
        min=c;
        mid=a;
        max=b;
    }
    if(((c<a)&&(c>b)) || ((c>a)&&(c<b)))
    {
        min=b;
        mid=c;
        max=a;
    }
    printf("\nMid is %d",mid);


    for(i=min;i<=max;i++)
    {

        if(i==mid)
            continue;
        printf("\n%d",i);
    }

    getchar();
    getchar();

}
brtdzjyr

brtdzjyr1#

为了让你的生活更轻松,写一个函数min。它接受两个整数并返回较小的那个。现在像这样使用这个函数:

int min = min(min(a,b),c);

与Max相似
要得到中间值,只需进行以下计算:

int mid = a + b + c - max - min;
e4yzc0pl

e4yzc0pl2#

如果你有一个数组:

int nums[N];

然后又道:

  • 对于N,甚至中位数是:(nums[N/2] + nums[(N/2)-1])/2
  • 对于N奇数,中位数为:nums[(N-1)/2]

如果数组没有排序,则检查Median of Medians

y53ybaqx

y53ybaqx3#

如果你能找到最大值和最小值,你可以找到中间值,如下所示:

int a = 1, b = 2, c = 3;
int minVal = min(a, b);
int maxVal = max(maxVal, c);

int midVal = a + b + c - maxVal - minVal;

midVal应该包含这三个数字的中间值。

odopli94

odopli944#

使用数组排序非常简单:

#include<stdio.h>
#include<errno.h>
#include<string.h>
#include<stdlib.h>

int compar( const void *a, const void *b)
{
        return *(int*)a > *(int*)b;
}

void die(const char *msg)
{
        if( errno )
                fprintf(stderr, "%s: %s\n", strerror(errno), msg);
        else
                fprintf(stderr, "%s\n", msg);
        exit(EXIT_FAILURE);
}

int get_input(void)
{
        int ret;
        errno = 0;
        if( scanf("%d", &ret ) != 1 )
                die("invalid input");
        return ret;
}

void * xmalloc(size_t s)
{
        void *ret;
        ret = malloc(s);
        if(ret == NULL)
                die("malloc");
        return ret;
}

int main(int argc, char **argv)
{
        int *a;
        int *b;
        int count;
        count = get_input();
        a = b = xmalloc( count * sizeof *a);
        while(count-- > 0)
                *b++ = get_input();

        qsort(a, b - a, sizeof *a, compar);
        printf("sorted:");
        while(a != b)
                printf(" %d", *a++);
        putchar('\n');
        return EXIT_SUCCESS;
}
ncecgwcz

ncecgwcz5#

int a,b,c;
if(b>a && a>c || c>a && a>b) 
    printf("The middle number is a");
else if(a>b && b>c || c>b && b>a) 
    printf("The middle number is b"); 
else
    printf("The middle number is c");
vpfxa7rd

vpfxa7rd6#

包括#<stdio.h>
int main()函数{

int a,b,c,mid;

printf("Enter a: ");
scanf("%d",&a);

printf("Enter b: ");
scanf("%d",&b);

printf("Enter c: ");
scanf("%d",&c);

if( ( a>b && b>c ) || ( c>b && b>a ) ){
mid=b;

}

else if(( a>c && c>b )||( b>c && c>a )){
mid=c;

}

else
{mid=a;
}

printf("The middle is %d",mid);

}

相关问题