首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

小疑点 求解决

2012-03-18 
小问题 求解决#include iostream.hint fun1 (int a[],int n)int fun2 (int a[],int n)int fun3 (int a

小问题 求解决
#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了.
[解决办法]
再发一遍:以这个为准

C/C++ code
#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;} 

热点排行