重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
#includestdio.h
为惠安等地区用户提供了全套网页设计制作服务,及惠安网站建设行业解决方案。主营业务为网站制作、成都网站设计、惠安网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
int getmax_i(int a[], int size){
int max_i=0, i;
for(i=1; isize; i++)
if(a[max_i]a[i]) max_i=i;
return max_i;
}
main(){
int a[5],i;
for(i=0; i5; i++)
scanf("%d",a[i]);
i=getmax_i(a, 5);
printf("最大值%d,下标%d\n", a[i], i);
}
您的程序有多处错误。既然是初学,就先把最基本的东西都弄清楚啊,否则别人都不愿意帮您。简单列出您的错误如下:
1)在max函数内又声明了a[10],这和传递给max函数的参数同名。
2)在max函数内声明了一个变量max,这与max函数又是同名,虽然不一定会出错,但需要尽量避免啊。
3)int max(int a[], int i)是正确的写法,不必写int a[10]。
4)在主函数main中的max(a[10],i)就是错误的写法了,把数组传递给函数时,只能写数组名a,不能写a[10],a[10]只代表了数组中的一个元素。
5)printf中的那个max,属于未声明就使用的变量,而且又与函数max同名。
给个修改后的程序,您自己对照吧。
6)printf函数没指定最大值的输出位置与格式。
#include "stdafx.h"
#include "stdio.h"
int max(int a[])//原代码中将i传递进来,毫无必要
{
int maxv=a[0];//原代码取max,与函数同名,要避免
int i;
for(i=1;i10;i++)
if(maxva[i])
maxv=a[i];
return(maxv);
}
int main()
{
int i,a[10],maxvalue;
printf("请输入10个数:\n");
for(i=0;i10;i++)
scanf("%d",a[i]);
maxvalue = max(a);//原代码max(a[10],i),a[10]只会传递一个数而不是数组
printf("最大的数是:%d\n",maxvalue);//您别漏了%d啊
}
int max(int a, int b)
{return ab?a:b;}
int main()
{
int a,b,c;
scanf("%d%d",a,b,c);
printf("%d\n", max(max(a,b),c));
return 0;
}
自定义函数实现
int max(int a,int b)
{
return ab?a:b;
}
#include stdio.h
void f(int *x, int *y)
{
int t;
t = *x;
*x = *y;
*y = t;
}
int main(void)
{
int a[3];
int i, j;
int x, y, z;
while(scanf("%d%d%d", x, y, z)!=EOF)
{
a[0] = x;
a[1] = y;
a[2] = z;
for(i=1;i3;i++)
for(j=0;j3-i;j++)
if(a[j]a[j+1])
f(a[j], a[j+1]);
printf("%d %d %d\n", a[0], a[1], a[2]);
}
return 0;
}
三个数从大到小,不知道你说的是不是这个意思,想要n个数的话,改下就可以了,其实一般都用快排的,方便