1.随机输入10个数,将其中重复的数据删除并且排序输出。
思路:①进行冒泡排序,将相同的数据放置在一起
②对数列进行双列循环,如果遇到相同的数据则后方元素依次向前进1
准备序列:
int Arr[20] = { 1,2,1,1,2,3,4,5,6,3 };
冒泡排序算法:
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9 - i; j++)
{
if (Arr[j] > Arr[j + 1])
{
int tmp = Arr[j];
Arr[j] = Arr[j + 1];
Arr[j + 1] = tmp;
}
}
}
得到如下结果:
对相同数据进行筛选:
for (int i = 0; i <= 9; i++)
cout << Arr[i] << endl;
for (int i = 0; i <= 9; i++)
{
for (int j = 0; j <= 9; j++)
{
if (Arr[i] == Arr[j] && i != j)
{
for (int k = j; k <= 9; k++)
{
Arr[k] = Arr[k + 1];
}
}
}
}
得到如下结果:
2.类的设计
设计一个时间类,重载“+”实现与分钟的相加,返回一个时钟对象
重载“=”实现两个时钟对象的比较
重载“<<”实现输出
class Time24
{
private:
int Hour, Min;
public:
Time24(int hour, int min) :Hour(hour), Min(min) {}
void TimeSet(int hour, int min)
{
Hour = hour;
Min = min;
}
void GetTime()
{
cout << "Now Hour=" << Hour << "Min=" << Min << endl;
}
Time24 &operator +(int min)//使用临时数据时不用 &,其他情况使用 &
{
Min += min;
while (Min >= 60)
{
Min -= 60;
Hour++;
}
return *this;
}
bool operator == (Time24 &a)
{
if (a.Hour==Hour&&a.Min==Min)
return true;
else
return false;
}
friend ostream &operator << (ostream &a, Time24 &b);
};
ostream &operator<<(ostream &a, Time24 &b)
{
a << "Hour=" << b.Hour << "Min=" << b.Min << endl;
return a;
}
3.文件流的设计
实现从键盘获取数据,奇数放入f1.dat,偶数放入f2.dat
从f1.dat和f2.dat读取数据,对其进行排序后依次写入f3.dat
1.奇偶数据写入
#include <fstream>
void SaveData()
{
int Num;
ofstream File1("f1.dat", ios::out), File2("f2.dat", ios::out);
for (int i = 1; i <= 20; i++)
{
cin >> Num;
if (Num % 2 != 0)
{
File1 << Num <<endl;//读取的时候空格/回车都可用于隔断
}
else
{
File2 << Num << endl;
}
}
File1.close();
File2.close();
}
2.读取数据并使用冒泡排序
void GetData()
{
ifstream File1("f1.dat", ios::in), File2("f2.dat", ios::in);
int List[20];
int *ListOrd[20];
for (int i = 1; i <= 20; i++)
{
if(i<=10)
File1 >> List[i - 1];
else
File2 >> List[i - 1];
}
File1.close();
File2.close();
for (int i = 0; i < 19; i++)
{
for (int j = 0; j < 19 - i; j++)
{
if (List[j] > List[j + 1])
{
int tmp = List[j];
List[j] = List[j + 1];
List[j + 1] = tmp;
}
}
}
ofstream OutFile1("f3.dat", ios::out);
for (int i = 0; i <= 19; i++)
{
OutFile1 << List[i] << endl;
}
OutFile1.close();
}