h-b-z-d-j-s-m 发表于 2022-11-16 17:03:03

c编程

#include<stdio.h>
#define N 4
int Dubble(int b[]);
int main()
{
        int a;
        int i,t;
        for(i=0;i<N;i++)
        {
                scanf("%2d",&a);
        }
        t=Dubble(a);
        printf("%d",t);
        return 0;
}
int Dubble(int b[])
{
        int i,j,t;
        for(i=0;i<N-1;i++)
        {
                for(j=0;j<N-i-1;j++)
                {
                        if(b>b)
                        {
                                t=b;
                                b=b;
                                b=t;
                        }
                }
        }
        if(N%2==0)
                return b;
        else
                return (b+b)/2;
}
为什么这个得不到正确值?

tommyyu 发表于 2022-11-16 17:05:21

你的代码想实现什么?

h-b-z-d-j-s-m 发表于 2022-11-16 17:08:20

tommyyu 发表于 2022-11-16 17:05
你的代码想实现什么?

输入一组数,个数为奇数,输出中间的那个,个数为偶数,输出中间两个和的平均值

tommyyu 发表于 2022-11-16 17:16:26

#include<stdio.h>
#define N 4
float Dubble(int b[]);
int main()
{
      int a;
      int i;
      float t;
      for(i=0;i<N;i++)
      {
                scanf("%2d",&a);
      }
      t=Dubble(a);
      printf("%f",t);
      return 0;
}
float Dubble(int b[])
{
      int i,j,t;
      for(i=0;i<N-1;i++)
      {
                for(j=0;j<N-i-1;j++)
                {
                        if(b>b)
                        {
                              t=b;
                              b=b;
                              b=t;
                        }
                }
      }
      if(N%2==0)
                return ((float)(b+b))/2;
      else
                return (float)b;
}

jackz007 发表于 2022-11-16 17:38:55

本帖最后由 jackz007 于 2022-11-16 20:08 编辑

      你是不是把奇偶数搞反了?
      if(N%2==0)
                return b;
      else
                return (b+b)/2;
      这是我修改的代码,谨供楼主参考
#include<stdio.h>

#define N 4

int Dubble(int b[])
{
      int c , i , j , t                               ;
      for(c = 1 , i = 0 ; i < N - 1 && c ; i ++)
      {
                for(c = j = 0 ; j < N - i - 1 && c ; j ++)
                {
                        if(b > b)
                        {
                              t = b                ;
                              b = b         ;
                              b = t            ;
                              c ++                  ;
                        }
                }
      }
      if(N % 2) return b                     ;
      else return (b + b) / 2       ;
}

int main()
{
      int i , a                                    ;
      double t                                        ;
      for(i = 0 ; i < N ; i ++) scanf("%2d" , & a) ;
      t = Dubble(a)                                 ;
      printf("%.0f" , t)                              ;
      return 0                                        ;
}

重庆冉某人 发表于 2022-11-16 17:52:31

铁子,会不会是因为你最后的那个判断的if(N%2==0),其中的N是一个常量,所以判断的结果只会是一个?
页: [1]
查看完整版本: c编程