写一个函数判断数组中的最大值 跑不了。。。
#include <stdio.h>int max(int a[],int length)
{
int i,b = a;
for( i=1 ; i<length ; i++){
if(a >= b){
b = a;
}
}
return b;
}
int main()
{
int a = {1,8,5,6,};
//scanf("%d",&a);
printf("%d",max(a,4));
return 0;
} printf("%d",max(a,4)); 带入形参的是首地址 int Max(int* a,int length)
{
int i,b = *a;
for( i=1 ; i<length ; i++){
if(*(a+i) >= b){
b = *(a+i);
}
}
return b;
}
int main()
{
int a = {1,8,5,6,};
//scanf("%d",&a);
printf("%d",Max(a,4));
return 0;
} machimilk 发表于 2017-4-26 10:54
定义函数时:int* a是定义数组的意思吗?为什么不能写成 int a[]? 星若有泪 发表于 2017-4-26 19:58
定义函数时:int* a是定义数组的意思吗?为什么不能写成 int a[]?
也可以啊,你自己试试也就知道了 试过了 会出现错误
C:\Users\dell\Desktop\c语言\第七周 GSMNC 发表于 2017-4-26 21:24
也可以啊,你自己试试也就知道了
试过了运行了但答案不对出来了一个莫名其妙的数字
C:\Users\dell\Desktop\c语言\第七周\写一个函数判断数组中的最大值.c In function 'main':
18 18 C:\Users\dell\Desktop\c语言\第七周\写一个函数判断数组中的最大值.c passing argument 1 of 'max' makes pointer from integer without a cast
3 5 C:\Users\dell\Desktop\c语言\第七周\写一个函数判断数组中的最大值.c expected 'int *' but argument is of type 'int'
星若有泪 发表于 2017-4-26 21:50
试过了运行了但答案不对出来了一个莫名其妙的数字
C:%users\dell\Desktop\c语言\第七周\写一个函 ...
输出的是8
#include <stdio.h>
int Max(int a[],int length)
{
int i,b = *a;
for( i=1 ; i<length ; i++)
{
if(*(a+i) >= b)
{
b = *(a+i);
}
}
return b;
}
int main()
{
int a = {1,8,5,6,};
printf("%d",Max(a,4));
return 0;
} 星若有泪 发表于 2017-4-26 19:58
定义函数时:int* a是定义数组的意思吗?为什么不能写成 int a[]?
其实你的程序也没什么大问题
注意问题给你说一下
你写的printf("%d",Max(a,4));里面的a在c语言里面不是指向的a的地址,而是a数组第五个元素
因为你a定义了4个元素,表示为a---a
而a是不存在的,另外max最好写成Max,因为小写的max系统某些库里面有,可能会因为参数形式而报错
另外写int *是为了更好的让你理解数组在内存中的形式,就是连续的内存地址,如果让你原来的程序能跑起来,这样写也可以printf("%d",Max(a,4)); a才代表你定义的数组的地址 #include <stdio.h>
int max(int a[],int length)
{
int i,b = a;
for( i=1 ; i<length ; i++){
if(a >= b){
b = a;
}
}
return b;
}
int main()
{
int a = {1,8,5,6,};
//scanf("%d",&a);
printf("%d",max(a,4));
return 0;
}
改成这样就好了,一点毛病都没有 寒月独狼 发表于 2017-4-27 12:11
改成这样就好了,一点毛病都没有
但是我如果没有确定数组元素,要自己输入数组就又出现问题了,这是为什么呢?
#include <stdio.h>
int Max(int a[],int length)
{
int i,b = a;
for( i=1 ; i<length ; i++){
if(a >= b){
b = a;
}
}
return b;
}
int main()
{
int a;// = {1,8,5,6,};
scanf("%d",&a);
int length = sizeof(a)/sizeof(a);
printf("%d",Max(a,length));
return 0;
} 星若有泪 发表于 2017-4-27 12:59
但是我如果没有确定数组元素,要自己输入数组就又出现问题了,这是为什么呢?
你的scanf("%d",&a);表示的是给a数组中第五个元素赋值,不是给整个数组赋值 本帖最后由 寒月独狼 于 2017-5-14 10:42 编辑
星若有泪 发表于 2017-4-27 12:59
但是我如果没有确定数组元素,要自己输入数组就又出现问题了,这是为什么呢?
输入数组可以,用循环来实现,不能像变量一样,直接输入的
另外C语言最好定义变量什么的,放在前面去,不要在半路又来定义个变量什么的
页:
[1]