问答题 使用VC6打开 下的源程序文件modi1.cpp,该程序运行时有误,请改正其中的错误,使程序正常运行,并使程序在界面上输出为:
平均值为:29
最大值为:112
最小值为:-11
注意:错误的语句在//******error******的下面。修改该语句即可。
#include<iostream>
using namespace std;
int main()
{
int i,Ave,Min,Max;
int data[8]={0,112,43,78,-11,-6,7,9};
Ave=0;
for(i=0; i<8; i++)
//******error******
Ave=data[i];
Ave/=8;
cout < < "平均值为:" < < Ave < < endl;
Max=Min=data[0];
for(i=0;i<8;i++)
{
//******error******
if(data[i]<Max) Max=data[i];
//******error******
if(data[i]>Min)
Min=data[i];
}
cout < < "最大值为:" < < Max < < endl;
cout < < "最小值为:" < < Min < < endl;
return 0;
}
【正确答案】
【答案解析】(1)Ave+=data[i]; 或Ave=Ave+data[i];
(2)if(data[i]>Max) Max=data[i];
(3)if(data[i]<Min) Min=data[i];
答案考生文件夹 [解析] 该程序的功能是要求数组的平均值、最大值和最小值,求平均值时先求出数组各个元素之和,然后再去求平均值;求最大最小值可以采取逐个比较的方法求得。
(1)观察程序可知,第一个for循环是求数组各个元素的和,逐次将每个元素值加起来,而程序当中是逐个赋值,因此第1标识处应将Ave=data[i]改成Ave+=data[i]或Ave=Ave+data[i]。
(2)根据题意再求数组当中元素的最大最小值,用变量Max记录最大值,Min记录最小值,在for循环中,逐次比较,如果该元素值比当前Max大,则Max取该元素值,因此第2标识处正确的应该是if(data[i]>Max)Max=data[i]。
(3)同样如果数组该元素值比Min小,则Min取该元素值。因此,两个if中条件判断错误,第3标识处“if(data[i]>Min) Min=data[i]”改成“if(data[i]<Min) Min=data[i]”。