输入2个一维数组,分别求数组平均值解决方法
输入2个一维数组,分别求数组平均值
运行结果都是0
哪里错了
------解决方案--------------------
第一点错误: scanf("%d",&a[i]);改为scanf("%f",&a[i]);
第二点错误: float aver,sum=array[0];改为 float aver,sum=0;
------解决方案--------------------
- C/C++ code
#include <stdio.h> #define N 5 void main() { float average(float array[],int n); float a[N],b[N]; int i,j; { printf("array a is:\n"); for(i=0;i<N;i++) scanf("%d",&a[i]); } printf("\n"); { printf("array b is:\n"); for(j=0;j<N;j++) scanf("%d",&b[j]); } printf("\n"); printf("the average of class a is %6.2f\n",average(a,N)); printf("the average of class b is %6.2f\n",average(b,N)); } float average(float array[],int n) { int i; float aver,sum=array[0]; for(i=0;i<n;i++) sum+=array[i]; aver=sum/n; return(aver); }
运行结果都是0
哪里错了
------解决方案--------------------
第一点错误: scanf("%d",&a[i]);改为scanf("%f",&a[i]);
第二点错误: float aver,sum=array[0];改为 float aver,sum=0;
------解决方案--------------------
- C/C++ code
//用C++改写了你的程序,供参考。建议用指针处理数组吧,简单些 //可以在 scanf("%d",&b[j]); 语句循环后打印出数组的输入,看是否正常 //float aver,sum=array[0];for(i=0;i<n;i++) ===>可以改为 float aver,sum=array[0];for(i=1;i<n;i++) #include <iostream> #define N 5 using namespace std; double average(double *array,int n) //建议声明为double 类型,不用float类型 { int i; double *p=array;//更新p的值,array这个数组指针不能改变值的 double sum=*p; for(i=1;i<n;i++) sum+=*(p+i); return(sum/n);//返回平均值 } int main() { double a[N],b[N]; int i,j; //输入需要计算平局数的数组 cout<<"请输入数组a的"<<N <<"个元素"<<endl; for(i=0;i<N;i++) cin>>a[i]; cout<<"请输入数组b的"<<N <<"个元素"<<endl; for(i=0;i<N;i++) cin>>b[i]; cout<<"the average of class a is :"<<average(a,N)<<endl; cout<<"the average of class b is :"<<average(b,N)<<endl; return 0; }