题目要求:输入一组整数,求其中最大和最小的元素,并将剩下的元素进行排序。
提示:如果数组中只有一个数,当第一行将其输出后,第二行请输出"-1"。
输入描述输入: 输入第一行包括1个整数N,其中,1<=N<=1000,N代表输入元素的个数。 接下来的一行有N个整数。输出描述
输出: 第一行输出N个整数中的最大值和最小值,并用空格隔开。 第二行输出剩余元素排序后的结果。输入样例
5 1 3 4 5 2输出样例
5 1 2 3 4
思路:运用线性表的顺序存储结构完成数组中元素的插入和删除操作,最后通过一个简单的冒泡排序函数将剩余数组元素排序再输出。
注意:
1
4
4
-1
这是单个数的输入输出样例!避免大家因为格式错误掉坑!
程序代码:
#include#define MAXSIZE 1000 using namespace std; class SeqList { public: SeqList(); public: void EnElement(int inputValue); void DeElement(int deletevalue); void FindAwser(); void Sort(); void Pirnt(); private: int a[MAXSIZE]; int length; }; SeqList::SeqList() { length = 0; } void SeqList::EnElement(int inputValue) { a[length++] = inputValue; } void SeqList::FindAwser() { if (length == 1) { cout << a[0]; cout << -1; } else { int max = -1000; int min = 1000; for (int i = 0; i < length; i++) { if (a[i] < min) { min = a[i]; } if (a[i] > max) { max = a[i]; } } cout << max << ' ' << min; DeElement(min); DeElement(max); Sort(); Pirnt(); } } void SeqList::DeElement(int deletevalue) { int pos; for (int i = 0; i < length; i++) { if (a[i] == deletevalue) pos = i; } for (int j = pos; j < length; j++) { a[j] = a[j + 1]; } length--; } void SeqList::Sort() { for (int i = 0; i < length; i++) { for (int j = i+1; j < length; j++) { if (a[i] > a[j]) { int temp = a[j]; a[j] = a[i]; a[i] = temp; } } } } void SeqList::Pirnt() { cout << a[0]; for (int i = 1; i < length; i++) cout << ' ' << a[i]; } int main() { SeqList list; int N,M; cin >> N; for (int i = 0; i < N; i++) { cin >> M; list.EnElement(M); } list.FindAwser(); return 0; }



