c语言关于数组的程序编写。。。在线等候!谢谢各位。。。
读入一组整数,编写函数将其中的最大值与最后一个元素交换。【下面是我自己做的,但运行不了,请求痛批!】#include<stdio.h>#defineN100intmaxh...
读入一组整数,编写函数将其中的最大值与最后一个元素交换。【下面是我自己做的,但运行不了,请求痛批!】
#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;
} 展开
#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;
} 展开
4个回答
展开全部
#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;
}
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你编写的函数不正确,这个函数就是返回数组的最大值就可以了。
#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;
}
#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⊙)…………我想麻烦你帮我在我的基础上改改。。谢谢!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这只是交换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;
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;
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
一个简单的问题被你搞这么复杂...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询