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

好心人,帮小弟我看一下这段代码,题意:是实现在数组中找到最大值放在最后,最小值放在最前面

2012-02-13 
好心人,帮我看一下这段代码,题意:是实现在数组中找到最大值放在最后,最小值放在最前面#include stdio.h#

好心人,帮我看一下这段代码,题意:是实现在数组中找到最大值放在最后,最小值放在最前面
#include <stdio.h>
#define   N   5
void   jh(int   num[N])
{
int   min,max,t;
int   i,n,k;
min=num[0];
max=num[N-1];
for(i=0;i <N;i++)
{
if(min> num[i])
{
min=num[i];
n=i;
}
}
t=num[0];
num[0]=num[n];
num[n]=num[0];
t=num[0];
for(i=0;i <N;i++)
{
if(max <num[i])
{
max=num[i];
k=i;
}
}


num[N-1]=num[k];
num[k]=num[N-1];
printf( "结果为: ");
for(i=0;i <N;i++)
printf( "%d   ",num[i]);
}

void   main()
{
int   arr[N],i;
printf( "请输入%d个数: ",N);
for(i=0;i <N;i++)
scanf( "%d ",&arr[i]);
jh(arr);

}


[解决办法]
这里有问题:
num[N-1]=num[k]; //将最大值给最后一个,但最后一个值没有备份
num[k]=num[N-1]; //
printf( "结果为: ");

改成这样
int temp=num[N-1];//备份最后一个值
num[N-1]=num[k];
num[k]=temp;
printf( "结果为: ");
[解决办法]
看起來貌似可以。
只是最大和最小在一個循環里面就可以找出來
沒必要整2個循環
[解决办法]
交换两个值的时候,有问题
t=num[0];
num[0]=num[n]; //num[0]的值已经变了
num[n]=t; //把t保存的原来的num[0]的值赋值给num[n]

下面那个交换也有这个问题。

热点排行