首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

一个顺序调整的有关问题,求解!

2012-03-29 
一个顺序调整的问题,求解!!!在C中碰到一个程序要求输入十个数,最大与最后一个数交换,最小的与第一个数交换

一个顺序调整的问题,求解!!!
在C中碰到一个程序要求输入十个数,最大与最后一个数交换,最小的与第一个数交换。代码如下:
void max_min_value(int number[])
{
  int *max,*min,*p,temp;
max=min=number;
for(p=number+1;p<number+10;p++)

if(*p>*max)  
max=p; /*将大数地址赋给max*/
  /*temp=number[9];
number[9]=*max;
*max=temp;*/

else if(*p<*min)
min=p; /*将小数地址赋给min*/
  temp=number[0];
number[0]=*min;
*min=temp; /*将最小数与第一个数交换*/
if(max=number)
max=min;
temp=number[9];
number[9]=*max;
*max=temp;

但是这个代码没有实现最大数与最后一位数的交换,请问一下是怎么回事啊?

[解决办法]

C/C++ code
    if(max==number)            max=min;
[解决办法]
C/C++ code
void max_min_value(int number[]){    int *max, *min, *p, temp;    max = min = number;    for (p=number+1; p<number+10; p++)    {          if (*p > *max)            max = p; /*将大数地址赋给max*/        /*temp=number[9];        number[9]=*max;        *max=temp;*/        /*else */if(*p < *min) /* 这里去掉else */            min = p; /*将小数地址赋给min*/                /* 这3句全部去掉,等到最后确认了最大,最小数再交换 */        /*temp = number[0];        number[0] = *min;        *min = temp;*/ /* 将最小数与第一个数交换 */                /* 去掉,同上道理 */        /*if (max == number) /* 这里少了个'=' */            max = min;*/        /*temp = number[9];        number[9] = *max;        *max = temp;*/    }        /* 好了: 已经找到最大,最小数了,是时候交换(如果有必要的话) */        if (min != number)        {                temp = *min;                *min = number[0];                number[0] = temp;        }        if (max != number+10-1)        {                temp = *max;                *max = number[9];                number[9] = temp;        }}
[解决办法]
max = min;*/ ==> 去掉

[解决办法]
if和else没加括号,只根据条件执行紧接着的语句。后面的就与条件无关了,都要执行

热点排行
Bad Request.