题目:
关键点:
1.随机数生成
2.循环判断条件
#include <iostream>
#include <ctime>
#include<cstdlib> //头文件不要遗漏
#include <ctime>
using namespace std;
class Circle{
int num[20];
int Max[4];
int Min[4];
int sum_max;
int sum_min;
public:
Circle ()//用20个随机数初始化圆盘中的num数组
{
srand(0);
for(int i=0;i<20;i++)
num[i]=rand()%100;//随机生成数不超过100
sum_max=0;
sum_min=400;
}
void Find_Max()//寻找符合条件的连续的个数
{
int sum[17]={0};//随意定义数组大小容易导致,后面判断出问题
for(int i=0;i<17;i++)//注意循环条件,不要写成i<20
{
sum[i]=num[i]+num[i+1]+num[i+2]+num[i+3];
}
//寻找最大数之和
for(int i=0;i<17;i++)
{
if(sum[i]>sum_max)
{
sum_max=sum[i];
for(int j=0;j<4;j++)
Max[j]=num[i+j];
}
}
//寻找最小数之和
for(int i=0;i<17;i++)
{
if(sum[i]<sum_min)
{
sum_min=sum[i];
for(int j=0;j<4;j++)
Min[j]=num[i+j];
}
}
}
void Show()
{
cout<<"数列和最大:"<<sum_max<<endl;
for(int i=0;i<4;i++)
cout<<Max[i]<<'\t';
cout<<endl;
cout<<"数列和最小:"<<sum_min<<endl;
for(int i=0;i<4;i++)
cout<<Min[i]<<'\t';
cout<<endl;
}
};
int main()
{
Circle a;
a.Find_Max();
a.Show();
return 0;
}