当前位置: 代码迷 >> C语言 >> 这个程序为什么不能使数组中的最大值和最小值互换?
  详细解决方案

这个程序为什么不能使数组中的最大值和最小值互换?

热度:97   发布时间:2007-08-02 00:09:51.0
这个程序为什么不能使数组中的最大值和最小值互换?
这个程序为什么不能使数组中的最大值和最小值互换?
main()
{
int a[5]={1,2,31,45,0};
int max,min,i,j,k=0;
max=min=a[0]
for(i=1;i<n;i++)
{ {if(a[i]>max){max=a[i];k=i;}
{if(a[i]<min){min=a[i];j=i;}
}
a[j]=min;
a[k]=max;
}
搜索更多相关的解决方案: 最大值  

----------------解决方案--------------------------------------------------------


main()
{
int a[5]={1,2,31,45,0};
int max,min,i,j,k=0;
max=min=a[0]
for(i=1;i<n;i++)
{ {if(a[i]>max){max=a[i];k=i;}
{if(a[i]<min){min=a[i];j=i;}
}
a[k]=min;
a[j]=max;
}
写错了
这个程序为什么不能使数组中的最大值和最小值互换?
----------------解决方案--------------------------------------------------------
我看有两个原因,第一:i 应该从0开始循环,第二:你FOR循环里的N没定义
跟本不知道是什么数
----------------解决方案--------------------------------------------------------
int main(void)
{
int a[5]={1,2,31,45,0};
int max,min,i,j,k=0,n=5;
max=min=a[0]; /*错误一,漏了分号*/
for(i=1;i<n;i++)/*错误4,n未定义*/
{
if(a[i]>max){max=a[i];k=i;} /*错误2,{}使用错误*/
if(a[i]<min){min=a[i];j=i;} /*错误3,{}使用错误*/
}
a[k]=min;
a[j]=max;
/* 为了查看结果,如果需要可以去掉注释符
for(i=0;i<n;i++) printf("%d ",a[i]);
getch();
*/
return 0;
}
/*请注意程序书写格式*/
----------------解决方案--------------------------------------------------------
以下是引用yqiong在2007-8-2 0:09:51的发言:
这个程序为什么不能使数组中的最大值和最小值互换?
main()
{
int a[5]={1,2,31,45,0};
int max,min,i,j,k=0;
max=min=a[0];
for(i=0;i<5;i++)
{ if(a[i]>max){max=a[i];k=i;}
if(a[i]<min){min=a[i];j=i;}
}
a[k]=min;
a[j]=max;
}
真粗心!谢谢了
----------------解决方案--------------------------------------------------------
这个程序为什么不能使数组中的最大值和最小值互换?
main()
{
int a[5]={1,2,31,45,0};
int max,min,i,j,k;
max=min=a[0];
for(i=0;i<5;i++)
{ {if(a[i]>max){max=a[i];k=i;}
{if(a[i]<min){min=a[i];j=i;}
}
a[j]=min;
a[k]=max;
}
----------------解决方案--------------------------------------------------------
以下是引用卧龙孔明在2007-8-2 9:02:43的发言:
int main(void)
{
int a[5]={1,2,31,45,0};
int max,min,i,j,k=0,n=5;
max=min=a[0]; /*错误一,漏了分号*/
for(i=1;i<n;i++)/*错误4,n未定义*/
{
if(a[i]>max){max=a[i];k=i;} /*错误2,{}使用错误*/
if(a[i]<min){min=a[i];j=i;} /*错误3,{}使用错误*/

}
a[k]=min;
a[j]=max;
/* 为了查看结果,如果需要可以去掉注释符
for(i=0;i<n;i++) printf("%d ",a[i]);
getch();
*/
return 0;
}
/*请注意程序书写格式*/

做改错题呢,我觉得改的好,是初学的应该注意的,我也学习了


----------------解决方案--------------------------------------------------------
回复:(lishizelibin)以下是引用卧龙孔明在2007-8-2...

错误2,3是为什么呢,难道这里的{}打的不对吗??应该是要有的呀


----------------解决方案--------------------------------------------------------
回复:(李天飞)我看有两个原因,第一:i 应该从0开始...
 i 从1开始是对的,为什么要从0开始呢??
----------------解决方案--------------------------------------------------------
main()
{
int a[5]={1,2,31,45,0};
int max,min,i,j,k=0;
max=min=a[0]
for(i=1;i<;i++)
{ {if(a[i]>max){max=a[i];k=i;}
{if(a[i]<min){min=a[i];j=i;}
}
a[k]=min;
a[j]=max;
}
----------------解决方案--------------------------------------------------------
  相关解决方案