标题:求大佬解答为啥我的程序不进入到max_min()函数里
只看楼主
宝宝想你
Rank: 2
等 级:论坛游民
帖 子:32
专家分:40
注 册:2018-5-29
结帖率:80%
已结贴  问题点数:5 回复次数:7 
求大佬解答为啥我的程序不进入到max_min()函数里
#include<stdio.h>
#include<stdlib.h>
//67.输入数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。
void input(int a[10])
{
    int *p;
    printf("input ten number!\n");
    for (p=a; p< a+10; p++)
    {
        scanf_s("%d", p);
    }
}
void max_min(int a[10])
{
    int *max=0, *min=0, *p,*p_end;
    p_end = a + 9;
    int temp = 0;
        for (p = a+1; p < a + 10; p++)
        {
            max = min = a;
            if (*max < *p)
            {
                max = p;
            }
            else if (*min > *p)
            {
                min = p;
            }
        }
        temp = *max;
        *max = a[0];
        a[0] = temp;
        temp = *min;
        *min = *p_end;
        *p_end = temp;
}
void output(int a[10])
{
    int *p,i=0;
    for (p = a; p< a + 10; p++)
    {
        printf("a[%d]=%d\n",i,*p);
        i++;
    }
}
int main()
{
    int a[10];
    input(a);
    max_min(a);
    output(a);
    system("pause");
}
搜索更多相关主题的帖子: int for max min temp 
2018-06-06 18:39
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:1 
你怎么判断没进入函数的

另外 不要同时查找最大最小
比如 1 5 9 6 8
最大9 最小 1
你找到 0 2
你先交换最大到 0
9 5 1 6 8
交换最小的时候
8 5 1 6 9
这就GG了

先查找最大交换之后再查找最小
或者反过来

https://zh.
2018-06-06 22:06
宝宝想你
Rank: 2
等 级:论坛游民
帖 子:32
专家分:40
注 册:2018-5-29
得分:0 
回复 楼主 宝宝想你
2018-06-07 14:54
宝宝想你
Rank: 2
等 级:论坛游民
帖 子:32
专家分:40
注 册:2018-5-29
得分:0 
回复 楼主 宝宝想你
2018-06-07 14:54
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
            max = min = a;

a是一个int*
max min是int
你用指针给int赋值 导致后面的查找失败了
不是没进入函数


https://zh.
2018-06-07 15:37
宝宝想你
Rank: 2
等 级:论坛游民
帖 子:32
专家分:40
注 册:2018-5-29
得分:0 
回复 5楼 lin5161678
int *max=0, *min=0
2018-06-07 20:08
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
哦 懂了
你每次循环都重置 min max
前面的比较结果都废弃了
把 重置操作 放到循环外面

https://zh.
2018-06-07 20:36
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:4 
根据题意,我写了个,你看看:
程序代码:
#include<stdio.h>
int main(void)
{ 
  int a[10],i,max,maxp,min,minp,t; 
  printf("请输入数组:"); 
  for(i=0;i<10;i++)  
    scanf("%d",&a[i]);
  minp=0;
  for(i=1;i<10;i++)
    { 
     if(a[i]<a[minp])  
        minp=i;
   } 
   t=a[9];
   a[9]=a[minp]; 
   a[minp]=t;
   maxp=0; 
   for(i=1;i<10;i++) 
       { 
        if(a[i]>a[maxp])  
          maxp=i; 
      } 
   t=a[0]; 
   a[0]=a[maxp];
   a[maxp]=t;
   printf("输出:\n"); 
   for(i=0;i<10;i++)
       printf("%3d",a[i]);
  return 0;
}
2018-06-07 20:43



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-487672-1-1.html




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

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