c语言关于数组的程序编写。。。在线等候!谢谢各位。。。

读入一组整数,编写函数将其中的最大值与最后一个元素交换。【下面是我自己做的,但运行不了,请求痛批!】
#include <stdio.h>
#define N 100
int maxh(int a[],int *n,int i);
void main()
{ int a[N],i,n,t,max;
printf("请输入一个数组:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=maxh(a,&n,i);
t=a[N];
a[N]=max;
max=t;
}
int maxh(int a[],int *n,int i)
{ int j,max;
for(i=0;i<*n-1;i++)
for(j=i+1;j<*n-i+1;j++)
{if(a[j]>a[i])
max=a[j];}
return max;
}

第1个回答  2011-05-13
#include <stdio.h>

#define N 10

//求数组中最大值,返回最大值所在数组中的位置
int max_num(int *data, int size);

void main()
{
int data[N] = {0};
int Max = 0;
int i = 0;
//n记录最大值所在的数组位置
int n = 0;

for( i = 0; i < N; i++ )
{
scanf("%d", &data[i]);
}

n = max_num(data, N);

//如果数组中最大值不是数组最后一个数,则交换
if( n != N-1 )
{
int temp = 0;
temp = data[n];
data[n] = data[N-1];
data[N-1] = temp;
}

printf("Max num is %d\n", data[N-1]);

}

int max_num(int *data, int size)
{
int i = 0;
int maxnum = 0;
int n = 0;

maxnum = data[0];

for( i = 0; i < size; i++ )
{
if( maxnum < data[i] )
{
maxnum = data[i];
n = i;
}
}

return n;
}
第2个回答  2011-05-12
你编写的函数不正确,这个函数就是返回数组的最大值就可以了。
#include <stdio.h>
#define N 100
int max(int a[],int n)
/*
a 数组,n表示数组大小
算法:擂台法
*/
{
int max;
max=a[0];
for(i=0;i<n;i++)
if(max<a[i])
max=a[i];
return max;
}

void main()
{ int a[N],i,n,t,max;
printf("请输入一个数组:");
for(i=0;i<n;i++)
scanf("%d",&a[i]);
max=max(a,n);
t=a[N-1];
a[N-1]=max;
max=t;
}追问

运行不了(⊙o⊙)…………我想麻烦你帮我在我的基础上改改。。谢谢!

第3个回答  2011-05-12
这只是交换max与a[N]而已,你想做的是交换a[max]与a[N]
maxh 里面 max 没有初始化。加一行max = 0;
把maxh里面if (a[j]>a[i] ) max = a[j]; 换成 if ( a[j]>a[max] ) max = j;
main里面t=a[N]...max=t 改成 t = a[N]; a[N] = a[max]; a[max] = t;本回答被提问者采纳
第4个回答  2011-05-12
一个简单的问题被你搞这么复杂...