1
.建立一个类
MOVE
,不进行排序,将数组中小于平均值的元素放到数组的左边,大于平
均值的元素放到数组的右边。
具体要求如下:
(
1
)私有数据成员
float array[20]
:一维整型数组。
int n
:数组中元素的个数。
(
2
)公有成员函数
MOVE(float b[],int m)
:构造函数,初始化成员数据。
void average()
:输出平均值,并将数组中的元素按要求重新放置。
void print()
:输出一维数组。
(3)在主程序中用数据{1.3,6.2,3,9.1,4.8,7.4,5.6,9.2,2.3}对该类进行测试。
源代码:
法一:
#include<iostream>
using namespace std;
class MOVE {
float array[20];
int n;
public:
MOVE(float b[], int m)
{
n = m;
for (int i = 0; i < m; i++)
array[i] = b[i];
}
void average()
{
float s = 0;
for (int i = 0; i < n; i++)
s = s + array[i];
s = 1.0 * s / n;
cout << "平均数为:s = " << s << endl;
float c[20];
for (int i = 0; i < n; i++)
c[i] = array[i];
int j = 0;
for (int i = 0, j = 0; i < n; i++) {
if (c[i] < s)
{
array[j] = c[i];
j++;
}
}
int k = n - 1;
for (int i = 0; i < n; i++)
{
if (c[i] > s)
{
array[k] = c[i];
k--;
}
}
}
void print()
{
for (int i = 0; i < n; i++)
cout << array[i] << '\t';
}
};
int main()
{
float b[] = { 1.2,3.4,2.4,5.6,8.7,3.1,4.6,6.8 ,5.5 };
int m = 9;
MOVE move(b, m);
move.average();
move.print();
return 0;
}
法二:(双指针相对而行)
#include<iostream>
using namespace std;
class MOVE {
float array[20];
int n;
public:
MOVE(float b[], int m)
{
n = m;
for (int i = 0; i < m; i++)
array[i] = b[i];
}
void average()
{
float s = 0;
for (int i = 0; i < n; i++)
s = s + array[i];
s = 1.0 * s / n;
cout << "平均数为:s = " << s << endl;
int i = 0;
int j = n - 1;
while (i < j)
{
while (array[i] <= s)
i++;
while (array[j] >= s)
j--;
if (i < j)
{
int t = array[i];
array[i] = array[j];
array[j] = t;
}
else
break;
}
}
void print()
{
for (int i = 0; i < n; i++)
cout << array[i] << '\t';
}
};
int main()
{
float b[] = { 1.2,3.4,2.4,5.6,8.7,3.1,4.6,6.8 ,5.5 };
int m = 9;
MOVE move(b, m);
move.average();
move.print();
return 0;
}
源代码:
#include<iostream>
using namespace std;
class SP
{
int n, k;
public:
SP(int n1, int k1)
{
n = n1;
k = k1;
}
int power(int m, int n)
{
int t = m;
for (int i = 1; i < n; i++)
t = t * m;
return t;
}
int fun()
{
int S = power(1, k);
for(int i=2;i<n+1;i++)
S = S + power(i, k);
return S;
}
void show()
{
cout << "n项k次和为" << fun();
}
};
int main()
{
int n = 8, k = 5;
SP s(n, k);
s.fun();
s.show();
return 0;
}
3.建立一个类 MOVE,将数组中最大元素的值与最小元素的值互换。
具体要求如下:
(1)私有数据成员
int *array:一维整型数组。
int n:数组中元素的个数。
(2)公有成员函数
MOVE(int b[],int m):构造函数,初始化成员数据。
void exchange():输出平均值,并将数组中的元素按要求重新放置。
void print():输出一维数组。
~MOVE():析构函数。
(3)在主程序中用数据{21,65,43,87,12,84,44,97,32,55}对该类进行测试。
源代码:
#include<iostream>
using namespace std;
class MOVE
{
int* array;
int n;//数组中元素个数
public:
MOVE(int b[], int m)
{
array = b;
n = m;
}
void exchange()
{
double s = 0;
for (int i = 0; i < n; i++)
s = s + *(array + i);
s = 1.0 * s / n;
cout << "该数组的平均数为" << s << endl;
int k = 0;//最小值位置
int j = 0;//最大值位置
for (int i = 1; i < n; i++)
{
if (*(array + k) < *(array + i))
k = i;
if (*(array + j) > *(array + i))
j = i;
}
int t = *(array + k);
*(array + k) = *(array + j);
*(array + j) = t;
}
void print()
{
for (int i = 0; i < n; i++)
cout << *(array + i) << '\t';
}
~MOVE()
{
delete[]array;
}
};
int main()
{
int b[] = { 21,65,43,87,12,84,44,97,32,55 };
int m = 10;
MOVE items(b,m);
items.exchange();
items.print();
return 0;
}