满意答案
1.N是数组的最大的长度,但你输入的数组不一定就有100个。所以问题出在这里:
t=a[N];];/*a[n-1]才是数组的最后一个值,而不是a[N]*/
a[N]=max;
max=t;
2.scanf("%d",&n);/*n是要输入的,或者给定一个值。系统没有默认值,会出错*/
3.找最大数的函数太麻烦了
int maxh(int a[],int n,int i)
{int max=a[0];
for(i=0;i
if(a[i]>=max)
max=a[i]
}
4.但是你这个程序还有很大的问题,虽然这样子实现了交换,但是这样子不好输出。建议重新修改一下这个程序。追问: 能不能再进一步帮我改改昂?谢谢你!
追答:程序我修改了,也运行了。这只是一种方法,自己还可以再琢磨琢磨。
#include
#define N 100
int maxh(int a[],int n);/*i没有必要放在函数参数里面*/
void main()
{ int a[N];
int i,n,t,m;
printf("请输入数组元素个数");
scanf("%d",&n);/*输入n的个数,或者自己给定一个值,系统没有默认值,会出错*/
printf("请输入数组元素(各元素之间用enter键):");
for(i=0;i
scanf("%d",&a[i]);
t=maxh(a,n);
m=a[t];/*交换最大值和最后一个值*/
a[t]=a[n-1];/*a[n-1]才是数组的最后一个值,而不是a[N]*/
a[n-1]=m;
printf("交换后数组元素为:");/*辛辛苦苦的编程,没有输出岂不白忙了?*/
for(i=0;i
printf("%5d",a[i]);
}
int maxh(int a[],int n)/*只需返回最大值的下标就可以了*/
{int max=a[0],m=0,i;/*两个for循环是排序,查找只需要一个for循环就可以了。*/
for(i=0;i
if(a[i]>=max)
{ max=a[i];
m=i;
}
return m;
}
00分享举报