这个不是运行不出结果的问题。
这个代码本身就是有error的,编译一下很容易可以发现主函数里m,n,c的定义有问题。
其实说白了就是m,n,c的变量写反了,应该按照max,min,ave的定义,是数组在先,常数项在后,颠倒一下就能运行了。
可能还有别的问题,但那个就不在问题范畴了(大概)
你的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函数的返回值是整型的 }
{
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;建议改为第一种,因为第二种没有小数部分(整型除以整型小数去除,精度丢失);
哪里来 的程序 ?作业是做出来的,不是抄出来的
大问题:
1、if(mina[i]),你是 找最小的,对吧?
2、求平均数 里类型问题,显然应该用 float
3、主函数 for(i=0;i<10;i++) 纯属多余
楼主思维 混乱?
最小 时 应该 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); <--同上