输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
帮助一下,是不是求最小和最大值。呵呵,编写一下。
自己动手,丰衣足食!
输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。
帮助一下,是不是求最小和最大值。呵呵,编写一下。
// 下面的代码是有逻辑疏漏!!!
#include<stdio.h>
int main( )
{ int ary[10],i,imin,imax,t;
printf("please input 10 integers:\n");
for(i=0;i<10;i++)
{
scanf("%d",&ary[i]);
if(i==0)
imax=imin=0;
else
{
if(ary[imin]>ary[i])imin=i;
if(ary[imax]<ary[i])imax=i;
}
}
if(imin!=0)t=ary[0],ary[0]=ary[imin],ary[imin]=t;
if(imax!=9)t=ary[9],ary[9]=ary[imax],ary[imax]=t;
/*至此大功告成,但要显示给他人确认一下*/
for(i=0;i<10;i++)
printf("%d ",ary[i]);
printf("\n");
return 0; //表示正常结束
}
[此贴子已经被作者于2006-5-23 12:11:09编辑过]
洗耳恭听、愿闻其详。逻辑疏漏!!!
我来替斑竹说下吧(他起码得下午才能来.)
你的程序 输入 9,0,1,2,3,4,5,6,7,8 运行下.当然 只要ary[0]是9就可以.后面随意.
这样.想必你也看出你的 逻辑疏漏 问题了吧
简单的解决方法:
if(imax==0)
{
if(imax!=0&&imax!=9)t=ary[9],ary[9]=ary[imax],ary[imax]=t;
if(imin!=0)t=ary[0],ary[0]=ary[imin],ary[imin]=t;
}
else
{
if(imin!=0)t=ary[0],ary[0]=ary[imin],ary[imin]=t;
if(imax!=0)t=ary[9],ary[9]=ary[imax],ary[imax]=t;
}
这也是斑竹曾经告诉过我.要不我也不会注意的.这很容易忘掉
[此贴子已经被作者于2006-5-23 10:58:20编辑过]