一世轻尘 发表于 2021-1-5 10:38:21

自定义函数之整数处理

本帖最后由 一世轻尘 于 2021-1-5 10:45 编辑

哪里有问题鸭,一般是特例没满足
#include<stdio.h>
#define N 10

void input(int a[]);
void change(int a[]);
void output(int a[]);


int main()
{
    int a;
    input(a);
    change(a);
    output(a);
    return 0;
}

void input(int a[])
{
    for(int i=0;i<N;i++)
      scanf("%d",&a);
}

void change(int a[])
{
    int min=a,max=a,k1=0,k2=0;
    for(int i=0;i<N;i++)
    {
      if(a<=min)
      {
            min=a;
            k1=i;
      }
      if(a>=max)
      {
            max=a;
            k2=i;
      }
    }
    if(k1==(N-1)&&k2==0)
    {
      int temp;
      temp=a;
      a=a;
      a=temp;
    }
    else
    {
      a=a;
      a=min;
      a=a;
      a=max;
    }
}


void output(int a[])
{
    for(int i=0;i<N;i++)
    {
      printf("%d ",a);
    }
}

风过无痕1989 发表于 2021-1-5 10:47:01

本帖最后由 风过无痕1989 于 2021-1-5 10:53 编辑

你40行 ~ 45 行,好像有问题,temp 没有使用, 以下没有上机测试,只是给出了交换的过程:

    int temp;
    temp = a;
    a = a;
    a = temp;
    if(k1!=N-1)
    temp = a;
    a=a;
    a=temp;

一世轻尘 发表于 2021-1-5 10:49:10

风过无痕1989 发表于 2021-1-5 10:47
你40行 ~ 45 行,好像有问题,temp 没有使用

刚改了,还是不行

一世轻尘 发表于 2021-1-5 10:50:25

风过无痕1989 发表于 2021-1-5 10:47
你40行 ~ 45 行,好像有问题,temp 没有使用

被这个题完败{:10_247:}

风过无痕1989 发表于 2021-1-5 10:53:56

一世轻尘 发表于 2021-1-5 10:49
刚改了,还是不行

你这是要逼我上机呀,好吧,我试试

风过无痕1989 发表于 2021-1-5 10:57:59

一世轻尘 发表于 2021-1-5 10:49
刚改了,还是不行

#include<stdio.h>
#define N 10

void input(int a[]);
void change(int a[]);
void output(int a[]);


int main()
{
        int a;
        input(a);
        change(a);
        output(a);
        return 0;
}

void input(int a[])
{
        for (int i = 0;i<N;i++)
                scanf("%d", &a);
}

void change(int a[])
{
        int min = a, max = a, k1 = 0, k2 = 0;
        for (int i = 0;i<N;i++)
        {
                if (a <= min)
                {
                        min = a;
                        k1 = i;
                }
                if (a >= max)
                {
                        max = a;
                        k2 = i;
                }
        }
        int temp;
        temp = a;
        a = a;
        a = temp;
        temp = a;
        a = a;
        a = temp;
}


void output(int a[])
{
        for (int i = 0;i<N;i++)
        {
                printf("%d ", a);
        }
}

风过无痕1989 发表于 2021-1-5 11:00:58

一世轻尘 发表于 2021-1-5 10:50
被这个题完败

代码已经在上面了,这是运行截图

sunrise085 发表于 2021-1-5 11:01:07

#include<stdio.h>
#define N 10

void input(int a[]);
void change(int a[]);
void output(int a[]);


int main()
{
    int a;
    input(a);
    change(a);
    output(a);
    return 0;
}

void input(int a[])
{
    for(int i=0;i<N;i++)
      scanf("%d",&a);
}

void change(int a[])
{
    int min=a,max=a,k1=0,k2=0;
    for(int i=0;i<N;i++)
    {
      if(a<=min)
      {
            min=a;
            k1=i;
      }
      if(a>=max)
      {
            max=a;
            k2=i;
      }
    }
    if(k1==N-1&&k2==0)
    {
      a=max;
      a=min;
    }
    else if(k2==0)
    {
      a=min;
      a=a;
      a=max;
    }
    else if (k1==N-1)
    {
      a=max;
      a=a;
      a=min;
    }
    else
    {
      a=a;
      a=min;
      a=a;
      a=max;
    }
}


void output(int a[])
{
    for(int i=0;i<N;i++)
    {
      printf("%d ",a);
    }
}

一世轻尘 发表于 2021-1-5 11:04:35

sunrise085 发表于 2021-1-5 11:01


所以说到底哪有问题,我感觉没区别啊

jackz007 发表于 2021-1-5 11:25:11

本帖最后由 jackz007 于 2021-1-5 11:57 编辑

#include<stdio.h>
#define N 10

void input(int a[])
{
    for(int i = 0 ; i < N ; i ++) scanf("%d" , & a)   ;
}

void change(int a[])
{
      int i , m, t                                          ;
      for(m = 0 , i = 1 ; i < N ; i ++) if(a < a) m = i ;
      if(m) {
                t = a                                        ;
                a = a                                     ;
                a = t                                        ;
      }
      for(m = 1 , i = 2 ; i < N ; i ++) if(a > a) m = i ;
      if(m != N - 1) {
                t = a                                        ;
                a = a                                 ;
                a = t                                    ;
      }
}

void output(int a[])
{
      for(int i=0 ; i < N ; i ++) printf("%d " , a) ;
      printf("\n")                                     ;
}

int main(void)
{
    int a;
    input(a);
    change(a);
    output(a);
    return 0;
}
页: [1]
查看完整版本: 自定义函数之整数处理