用数组作为数列,然后进行插入、删除、求和的操作就可以了。删除的时候是删除所有值为x的数吗?还是只删除最前面的?两种方式都写了函数,根据你自己的需要调用即可。代码如下:
#include <iostream>
using namespace std;
//插入数据
void insert(double a[],int &n,double x)
{
a[n] = x;
n++;
}
//删除数为x的值,删除第一个x
void del_1(double a[],int &n,double x)
{
int i,j;
for (i=0;i<n;i++)
{
if(a[i]==x)
{
for (j = i;j<n-1;j++)
{
a[j] = a[j+1];
}
n--;
break;
}
}
}
//删除数为x的值,删除所有x
void del_2(double a[],int &n,double x)
{
int i,j;
for (i=0;i<n;i++)
{
if(a[i]==x)
{
for (j = i;j<n-1;j++)
{
a[j] = a[j+1];
}
n--;
i--;
}
}
}
//删除最大的数
void delmax(double a[],int &n)
{
int index=0;
for (int i = 1;i<n;i++)
{
if(a[i]>a[index])
index = i;
}
//删除index位置的数
for (int i=index;i<n-1;i++)
{
a[i] = a[i+1];
}
n--;
}
//删除最小的数
void delmin(double a[],int &n)
{
int index=0;
for (int i = 1;i<n;i++)
{
if(a[i]<a[index])
index = i;
}
//删除index位置的数
for (int i=index;i<n-1;i++)
{
a[i] = a[i+1];
}
n--;
}
//求和
double sum(double a[],int n)
{
int s=0;
for (int i=0;i<n;i++)
{
s+= a[i];
}
return s;
}
int main()
{
char op;
int nmb = 0;
double a[1000],x,max,min; //存储数据
int n,i;
cin >> n;
getchar();
for (i=0;i<n;i++)
{
cin >> op;
switch(op)
{
case 'a':
cin >> x;
getchar();//接收回车符
insert(a,nmb,x);
break;
case 'd':
cin >> x;
getchar();//接收回车符
del_1(a,nmb,x); //删除第一个x,根据你的需要决定用哪一个
//del_2(a,nmb,x); //删除所有x
break;
case 'I':
delmax(a,nmb);//删除最大值
break;
case 'm':
delmin(a,nmb); //删除最小值
break;
case 'q':
cout << sum(a,nmb)<<endl; //输出和
break;
}
}
}
如有帮助,请点击我的回答下方的“采纳该答案”帮忙采纳一下,谢谢。