小问题 求解决
#include <iostream.h>
int fun1 (int a[],int n);
int fun2 (int a[],int n);
int fun3 (int a[],int n);
void main ()
{
int i=0;
int sum=0;
int max=0;
int min=0;
int a[9];
int n;
cout<<"Please input n(n<10):";
cin>>n;
for (i=0;i<n;i++)
cin>>a[i];
cout<<endl;
for (i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
fun1(a,9);
cout<<"sum="<<sum<<endl;
fun2(a,9);
cout<<"max="<<max<<endl;
fun3(a,9);
cout<<"min="<<min<<endl;
}
int fun1 (int a[],int n)
{
int i=0;
int sum=0;
for (i=0;i<n;i++)
sum+=a[i];
return sum;
}
int fun2 (int a[],int n)
{
int i=0;
int max=0;
max=a[0];
for (i=0;i<n;i++) {
if (a[i]>max)
max=a[i];
}
return max;
}
int fun3 (int a[],int n)
{
int i=0;
int min=0;
min=a[0];
for (i=0;i<n;i++) {
if (a[i]<min)
min=a[i];
}
return min;
}
为什么测试结果都是0?错在哪里了?
[解决办法]
解决问题如下注释
#include <iostream>
using namespace std;
int fun1 (int a[],int n);
int fun2 (int a[],int n);
int fun3 (int a[],int n);
void main ()
{
int i=0;
int sum=0;
int max=0;
int min=0;
int a[9];
int n;
cout<<"Please input n(n<10):";
cin>>n;
for (i=0;i<n;i++)
cin>>a[i];
cout<<endl;
for (i=0;i<n;i++)
cout<<a[i]<<" ";
cout<<endl;
sum=fun1(a,n);//你只写了fun1(a,9);第一没有用sum来接收 返回值,第二,n是你输入的,你不能直接写为9
cout<<"sum="<<sum<<endl;
max=fun2(a,n);
cout<<"max="<<max<<endl;
min=fun3(a,n);
cout<<"min="<<min<<endl;
}
int fun1 (int a[],int n)
{
int i=0;
int sum=0;
for (i=0;i<n;i++)
sum+=a[i];
return sum;
}
int fun2 (int a[],int n)
{
int i=0;
int max=0;
max=a[0];
for (i=0;i<n;i++) {
if (a[i]>max)
max=a[i];
}
return max;
}
int fun3 (int a[],int n)
{
int i=0;
int min=0;
min=a[0];
for (i=0;i<n;i++) {
if (a[i]<min)
min=a[i];
}
return min;
}
马虎了是吧?
[解决办法]
首先fun1,fun2,fun3是传值调用,里面定义的变量max sum min 初始化为0,在函数调用时他们都按照你的意愿得到了最大值,总值,最小值,但是函数调用结束后他们得到的值也被释放了,他们仍然是你初始化的0.
其次main函数的max,sum,min得值在函数运行时一直是0,从来没变过,他们在fun1 fun 2fun3里是被局部同名变量屏蔽的.
可以在main函数外定义全局的max=0 sum=0 min=0,然后再fun1,fun2,fun3里不再声明他们,直接用这样他们被return后得值就不是0了.
[解决办法]
再发一遍:以这个为准
#include <iostream>using namespace std;int fun1 (int a[],int n);int fun2 (int a[],int n);int fun3 (int a[],int n);int main (){ int i=0; int sum=0; int max=0; int min=0; int a[9]; //int n; //cout<<"Please input n(n<10):"; //cin>>n; for (i=0;i<9;i++)//for (i=0;i<n;i++) cin>>a[i]; cout<<endl; for (i=0;i<9;i++)//for (i=0;i<n;i++) cout<<a[i]<<" "; cout<<endl; fun1(a,9); cout<<"sum="<<fun1(a,9)<<endl; fun2(a,9); cout<<"max="<<fun2(a,9)<<endl; fun3(a,9); cout<<"min="<<fun3(a,9)<<endl; system("pause"); return 0;}int fun1 (int a[],int n){ int i=0;int sum=0; for (i=0;i<n;i++) sum+=a[i];return sum;}int fun2 (int a[],int n){ int i=0;int max=0;max=a[0];for (i=0;i<n;i++) { if (a[i]>max)max=a[i];}return max;}int fun3 (int a[],int n){ int i=0;int min=0;min=a[0];for (i=0;i<n;i++) { if (a[i]<min)min=a[i];}return min;}