题目 2、数组与函数的综合应用
已知:int a[5] = { 19,67,24,11,17 }, b[5] = { 2,3,9,17,59 };
编写程序查找数组中是否存在某个指定元素;将数组a和数组b中的素数不重不漏地合并到
一个vector容器c中,然后按照下标访问的方式手动对容器c中的数据,按从小到大顺序重新
排序。要求依次实现:
- 编写顺序查找法函数和折半查找法函数,分别在数组a和数组b中查找元素17所在的下标
并输出。 - 编写判断素数函数和排序函数,并对容器c中的结果进行输出。
作答
#include<iostream>
#include<vector>
using namespace std;
//判断素数的函数。0表示不是素数,1表示是素数。
bool sushu(int a) {
int g=0;
for (int i = 2; i < a; i++) {
if (a % i == 0) { g++; }
}
if (g > 0) { return 0; }
return 1;
}
//与数组中的元素进行对比的函数,保证元素不重复。1表示不重复,0表示重复。
bool duibi(int arr[], int b) {
int g=0;
for (int i = 0; i < 5; i++) {
if (arr[i] == b) { g++; }
}
if (g > 0) { return 0; }
else { return 1; }
}
//顺序查找法函数。
int shunxu(int arr[], int b) {
for (int i = 0; i < 5; i++) {
if (arr[i] == b) { return i; break; }
}
}
int main() {
vector<int>v;
int a[5] = { 19,67,24,11,17 }, b[5] = { 2,3,9,17,59 }, c[3] = { 1,2,3 };
//下面是将两个数组中的素数填入v容器中。
for (int i = 0; i < 5; i++) {
if (sushu(a[i]) == 1) { v.push_back(a[i]); }
}
for (int i = 0; i < 5; i++) {
if (sushu(b[i]) == 1 && duibi(a, b[i]) == 1) { v.push_back(b[i]); }
}
//下面是输出v容器中素数的个数。
cout << "容器的大小为" << v.size() << endl;
//下面是依次输出v容器的元素。
cout << "素数的原来的顺序是:" << endl;
for (int i = 0; i < v.size(); i++) {
cout << v[i] << " ";
}
cout << endl;
//下面是按照下标访问的方式手动对容器c中的数据,按从小到大顺序重新排序。
//原序为:19 67 11 17 2 3 17 59
vector<int>v1(7);
v1[0] = 2, v1[1] = 3, v1[2] = 11, v1[3] = 17, v1[4] = 19, v1[5] = 59, v1[6] = 67;
cout << "容器中素数现在的顺序是:" << endl;
for (int i = 0; i < v1.size(); i++) {
cout << v1[i] << " ";
}
cout << endl;
cout << "顺序查找法函数,元素17在数组a中所在的下表是:" << shunxu(a, 17) << endl;
cout << "顺序查找法函数,元素17在数组b中所在的下表是:" << shunxu(b, 17) << endl;
return 0;
}
数组的排序函数如下
#include<iostream>
#include<vector>
using namespace std;
void paixu(int a[]) {
vector<int>v1; vector<int>v2;
for (int i = 0; i < 10; i++) {
if (a[i] < (-1000) || a[i]>1000) { continue; }
v1.push_back(a[i]);
}
v1.pop_back();
FLAG:
for (int i = 0; i < v1.size(); i++) {
int k = 0;
for (int j = 0; j < v1.size(); j++) {
if (v1[i] >= v1[j]) { k++; }
}
if (k == v1.size()) { v2.push_back(v1[i]); v1[i] = 0; }
if (v1.size() == v2.size()) { goto K; }
}
goto FLAG;
K:
for (int i = 0; i < v2.size(); i++) {
cout << v2[i] << " ";
}
cout << endl;
}
int main() {
int b[5] = { 2,3,9,17,59 };
paixu(b);
return 0;
}