鱼C论坛

 找回密码
 立即注册
查看: 1063|回复: 9

[已解决]自定义函数之整数处理

[复制链接]
发表于 2021-1-5 10:38:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

  3. void input(int a[]);
  4. void change(int a[]);
  5. void output(int a[]);


  6. int main()
  7. {
  8.     int a[N];
  9.     input(a);
  10.     change(a);
  11.     output(a);
  12.     return 0;
  13. }

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

  19. void change(int a[])
  20. {
  21.     int min=a[0],max=a[0],k1=0,k2=0;
  22.     for(int i=0;i<N;i++)
  23.     {
  24.         if(a[i]<=min)
  25.         {
  26.             min=a[i];
  27.             k1=i;
  28.         }
  29.         if(a[i]>=max)
  30.         {
  31.             max=a[i];
  32.             k2=i;
  33.         }
  34.     }
  35.     if(k1==(N-1)&&k2==0)
  36.     {
  37.         int temp;
  38.         temp=a[0];
  39.         a[0]=a[N-1];
  40.         a[N-1]=temp;
  41.     }
  42.     else
  43.     {
  44.         a[k1]=a[0];
  45.         a[0]=min;
  46.         a[k2]=a[N-1];
  47.         a[N-1]=max;
  48.     }
  49. }


  50. void output(int a[])
  51. {
  52.     for(int i=0;i<N;i++)
  53.     {
  54.         printf("%d ",a[i]);
  55.     }
  56. }
复制代码
最佳答案
2021-1-5 11:01:07
  1. #include<stdio.h>
  2. #define N 10

  3. void input(int a[]);
  4. void change(int a[]);
  5. void output(int a[]);


  6. int main()
  7. {
  8.     int a[N];
  9.     input(a);
  10.     change(a);
  11.     output(a);
  12.     return 0;
  13. }

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

  19. void change(int a[])
  20. {
  21.     int min=a[0],max=a[0],k1=0,k2=0;
  22.     for(int i=0;i<N;i++)
  23.     {
  24.         if(a[i]<=min)
  25.         {
  26.             min=a[i];
  27.             k1=i;
  28.         }
  29.         if(a[i]>=max)
  30.         {
  31.             max=a[i];
  32.             k2=i;
  33.         }
  34.     }
  35.     if(k1==N-1&&k2==0)
  36.     {
  37.         a[k1]=max;
  38.         a[k2]=min;
  39.     }
  40.     else if(k2==0)
  41.     {
  42.         a[k2]=min;
  43.         a[k1]=a[N-1];
  44.         a[N-1]=max;
  45.     }
  46.     else if (k1==N-1)
  47.     {
  48.         a[k1]=max;
  49.         a[k2]=a[0];
  50.         a[0]=min;
  51.     }
  52.     else
  53.     {
  54.         a[k1]=a[0];
  55.         a[0]=min;
  56.         a[k2]=a[N-1];
  57.         a[N-1]=max;
  58.     }
  59. }


  60. void output(int a[])
  61. {
  62.     for(int i=0;i<N;i++)
  63.     {
  64.         printf("%d ",a[i]);
  65.     }
  66. }
复制代码
1.png
2.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-1-5 10:47:01 | 显示全部楼层
本帖最后由 风过无痕1989 于 2021-1-5 10:53 编辑

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

    int temp;
    temp = a[0];
    a[0] = a[k1];
    a[k1] = temp;
    if(k1!=N-1)
    temp = a[N-1];
    a[N-1]=a[k2];
    a[k2]=temp;
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 10:49:10 | 显示全部楼层
风过无痕1989 发表于 2021-1-5 10:47
你40行 ~ 45 行,好像有问题,temp 没有使用

刚改了,还是不行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 10:50:25 | 显示全部楼层
风过无痕1989 发表于 2021-1-5 10:47
你40行 ~ 45 行,好像有问题,temp 没有使用

被这个题完败
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-5 10:53:56 | 显示全部楼层
一世轻尘 发表于 2021-1-5 10:49
刚改了,还是不行

你这是要逼我上机呀,好吧,我试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2021-1-5 10:57:59 | 显示全部楼层
一世轻尘 发表于 2021-1-5 10:49
刚改了,还是不行
  1. #include<stdio.h>
  2. #define N 10

  3. void input(int a[]);
  4. void change(int a[]);
  5. void output(int a[]);


  6. int main()
  7. {
  8.         int a[N];
  9.         input(a);
  10.         change(a);
  11.         output(a);
  12.         return 0;
  13. }

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

  19. void change(int a[])
  20. {
  21.         int min = a[0], max = a[0], k1 = 0, k2 = 0;
  22.         for (int i = 0;i<N;i++)
  23.         {
  24.                 if (a[i] <= min)
  25.                 {
  26.                         min = a[i];
  27.                         k1 = i;
  28.                 }
  29.                 if (a[i] >= max)
  30.                 {
  31.                         max = a[i];
  32.                         k2 = i;
  33.                 }
  34.         }
  35.         int temp;
  36.         temp = a[0];
  37.         a[0] = a[k1];
  38.         a[k1] = temp;
  39.         temp = a[N - 1];
  40.         a[N - 1] = a[k2];
  41.         a[k2] = temp;
  42. }


  43. void output(int a[])
  44. {
  45.         for (int i = 0;i<N;i++)
  46.         {
  47.                 printf("%d ", a[i]);
  48.         }
  49. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-5 11:00:58 | 显示全部楼层

代码已经在上面了,这是运行截图
交换.jpg
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-5 11:01:07 | 显示全部楼层    本楼为最佳答案   
  1. #include<stdio.h>
  2. #define N 10

  3. void input(int a[]);
  4. void change(int a[]);
  5. void output(int a[]);


  6. int main()
  7. {
  8.     int a[N];
  9.     input(a);
  10.     change(a);
  11.     output(a);
  12.     return 0;
  13. }

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

  19. void change(int a[])
  20. {
  21.     int min=a[0],max=a[0],k1=0,k2=0;
  22.     for(int i=0;i<N;i++)
  23.     {
  24.         if(a[i]<=min)
  25.         {
  26.             min=a[i];
  27.             k1=i;
  28.         }
  29.         if(a[i]>=max)
  30.         {
  31.             max=a[i];
  32.             k2=i;
  33.         }
  34.     }
  35.     if(k1==N-1&&k2==0)
  36.     {
  37.         a[k1]=max;
  38.         a[k2]=min;
  39.     }
  40.     else if(k2==0)
  41.     {
  42.         a[k2]=min;
  43.         a[k1]=a[N-1];
  44.         a[N-1]=max;
  45.     }
  46.     else if (k1==N-1)
  47.     {
  48.         a[k1]=max;
  49.         a[k2]=a[0];
  50.         a[0]=min;
  51.     }
  52.     else
  53.     {
  54.         a[k1]=a[0];
  55.         a[0]=min;
  56.         a[k2]=a[N-1];
  57.         a[N-1]=max;
  58.     }
  59. }


  60. void output(int a[])
  61. {
  62.     for(int i=0;i<N;i++)
  63.     {
  64.         printf("%d ",a[i]);
  65.     }
  66. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-5 11:04:35 | 显示全部楼层

所以说到底哪有问题,我感觉没区别啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-5 11:25:11 | 显示全部楼层
本帖最后由 jackz007 于 2021-1-5 11:57 编辑
  1. #include<stdio.h>
  2. #define N 10

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

  7. void change(int a[])
  8. {
  9.         int i , m  , t                                          ;
  10.         for(m = 0 , i = 1 ; i < N ; i ++) if(a[i] < a[m]) m = i ;
  11.         if(m) {
  12.                 t = a[m]                                        ;
  13.                 a[m] = a[0]                                     ;
  14.                 a[0] = t                                        ;
  15.         }
  16.         for(m = 1 , i = 2 ; i < N ; i ++) if(a[i] > a[m]) m = i ;
  17.         if(m != N - 1) {
  18.                 t = a[m]                                        ;
  19.                 a[m] = a[N - 1]                                 ;
  20.                 a[N - 1] = t                                    ;
  21.         }
  22. }

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

  28. int main(void)
  29. {
  30.     int a[N];
  31.     input(a);
  32.     change(a);
  33.     output(a);
  34.     return 0;
  35. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-3 05:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表