为什么下面这个代码运行不出结果呢?求C语言大神指导指导

2025-03-02 03:35:51
推荐回答(5个)
回答1:

这个不是运行不出结果的问题。

这个代码本身就是有error的,编译一下很容易可以发现主函数里m,n,c的定义有问题。

其实说白了就是m,n,c的变量写反了,应该按照max,min,ave的定义,是数组在先,常数项在后,颠倒一下就能运行了。

可能还有别的问题,但那个就不在问题范畴了(大概)

回答2:

你的C语言程序我帮你改完了(改动的地方和原因见注释)

#include

//#include//这里去掉这句,因为没有用到

int max_a(int a[],int n)

{

int i,max;

max=a[0];

for(i=0;i

if(max

max=a[i];

return(max);

}

int min_a(int a[],int n)

{

int i,min;

min=a[0];

for(i=0;i

if(min>a[i])//这里把if(mina[i]),因为是求最小值

min=a[i];

return(min);

}

int ave_a(int a[],int n)

{

int i,sum=0,ave;

for(i=0;i

sum+=a[i];

ave=sum/n;

return(ave);

}

main()

{

//int i;//这里去掉这句,因为没用

int m,n,c,a[10]={1,2,3,4,5,6,7,8,9,10};

//for(i=0;i<10;i++)//这里去掉这句,因为没用

m=max_a(a,10);//这里把max_a(10,a)改成max_a(a,10),因为调用的参数要和函数参数一一对应

n=min_a(a,10);//这里把min_a(10,a)改成min_a(a,10),因为调用的参数要和函数参数一一对应

c=ave_a(a,10);//这里把ave_a(10,a)改成ave_a(a,10),因为调用的参数要和函数参数一一对应

printf("最大值:%d\n",m);

printf("最小值:%d\n",n);

printf("平均值:%d\n",c);//这里把%f改成%d,因为ave_a函数的返回值是整型的

}

回答3:

{

int i;

int m,n,c,a[10]={1,2,3,4,5,6,7,8,9,10};

for(i=0;i<10;i++)//你定义的函数,数组在前,数组长度在后;

m=max_a(a,10);//引用函数时实参要与形参对齐,也就是,数据类型对齐,位置对齐;

n=min_a(a,10);

c=ave_a(a,10);

printf("最大值:%d\n",m);

printf("最小值:%d\n",n);

printf("平均值:%f \n",c);//你把c定义成int型,却用了%f,%f是浮点型的占位符

要么把c定义成float型或double,要么把%f改为%d;建议改为第一种,因为第二种没有小数部分(整型除以整型小数去除,精度丢失);

回答4:

哪里来 的程序 ?作业是做出来的,不是抄出来的

大问题:

1、if(mina[i]),你是 找最小的,对吧?

2、求平均数 里类型问题,显然应该用 float

3、主函数  for(i=0;i<10;i++) 纯属多余

回答5:

楼主思维 混乱?
最小 时 应该 if(min>a[i])
main 函数里 for 干什么? 多此一举 for(i=0;i<10;i++) 应该去掉

m=max_a(10,a); <--定义时 数组在前,个数 在后,调用时应该按照中国顺序
n=min_a(10,a); <--同上
c=ave_a(10,a); <--同上