pdf修改器无水印版:关于TC的问题

来源:百度文库 编辑:查人人中国名人网 时间:2024/04/28 08:47:19
我在使用MAX(),RUN时,为什么屏幕下方会提示:
Undifine symbol '_max' in module **.c
谢谢~
比如说,我遍了这样:
main()
{
int a[3],n;
for(i=0;i<=2;i++)
scanf("%d",&a[i]);
n=max(a[3]);
printf("%d",n);
}
哪里错了吗?请指教,谢谢~

max()函数怎么定义呢?

是说这个MAX()函数未定义,编译器在编译时通不过.
编译时编译器会对函数的名字做些改变,这就是你看到的
_max

C函数库没有max函数.
可以自己定义
int max(int a,int b)
{
if(a<b) a=b;
return a;
}

n=max(a[3]);
你这样调用函数是错误的.
a[3]//超范围拉
如果真的要传参数给函数应该这样写
max(int *a,int n)//a数组名称,n数组大小

max可以这样写:
int max(int *a,int n)
{
int i,m=a[0];
for(i=1;i<n;i++)
if(a[i]>m)
m=a[i];
return m;
}

#include <stdio.h>
int max(int *a,int n)
{
int i,m=a[0];
for(i=1;i<n;i++)
if(a[i]>m)
m=a[i];
return m;
}

main()
{
int a[3],n;
for(i=0;i<=2;i++)
scanf("%d",&a[i]);
n=max(a,3);
printf("%d",n);
}

1。MAX函数未定义。
也许你使用函数之前没声明,或max()的大小写没区分,甚至你有个地方忘加;或{}都有可能。
TC有时不是在出错的地方报错,你不要局限于TC的提示,也许是别的地方别的原因的问题,你还是把你的程序发上来,单就这一句,不好知道错在哪。
你有3个错误:
1。n=max(a[3]);
你的原意思是找出这个数列中最大的,要是这样的话,就得给出2个自变量:数列的首地址和数列的长度。而且数列中元素是从0开始的,你的数列中元素应是a[0],a[1],a[2],打a[3]就错了。
改为:n=max(a,3);
a就是数列的首地址。
2.函数max是c中没有的,需要自己定义,
int max(int *a,int n)
{
int i,m=a[0];
for(i=1;i<n;i++)
m=(m>a[i])?m:a[i];
return m;
}
3:函数声明。除非你把定义的函数写在main函数之前,否则使用前必须加上函数声明。
int max(int *a,int n);格式是:
函数类型 函数名称(参数类型1 参数名称1,参数类型2 参数名称2,(依次类推));
具体是怎么样的推荐你看谭浩强的《c语言程序设计》
中函数和数列两章。