编写一个程序实现如下功能,要求调用函数实现。

1)从键盘上输入n个整数(n的值由用户指定,n<100)存入一数组中,将它们按照从小到大的顺序排列起来,输出排列后的数组值;
2)统计数组中大于a小于b的元素个数并输出这些元素,a、b值由用户指定。
3)检查整数x(由用户指定)值是否在这些数字当中,若在,返回其在数组中的位置(即下标值,可能不止一个),若不在则将x插入到相应位置,插入后数组仍有序。

用向量数组写了一个demo。
#include <iostream>
#include<vector>
using namespace std;

vector<int> sort(vector<int>,int);
void print(vector<int>,int);
void count(vector<int>,int,int,int);
vector<int> indexArray(vector<int>,int,int);
int n = 0;//数组大小
void main()
{
do{
cout<<"请输入要操作的整数个数(<100):\n";
cin>>n;
}while(n>100||n<1);

vector<int> array(n);//声明变长数组
cout<<"从键盘上输入 "<<n<<" 个整数:\n";
int m;//输入数字
for(int i = 0; i < n; i++)
{
cin>>m;
array[i] = m;
}
vector<int> arraySort = sort(array,n);//排序后的数组
cout<<"输入要统计的范围(a,b):\n";
int a,b,index;
cin>>a>>b;
cout<< "\n大于"<<a<<"小于"<<b<<"的数:";
count(arraySort,n,a,b);
cout<<"输入要检索的数字:\n";
cin>>index;
vector<int> arrayIndex = indexArray(arraySort,n,index);
print(arrayIndex,arrayIndex.size());
}
vector<int> sort(vector<int> array, int len)
{
int temp;
for(int i = 0 ; i < len; i++)
{ for(int j = i; j< len; j++)
{
if(array[i]>array[j])
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
//打印排序后的数组
for(int k = 0 ; k < len; k++)
cout<<array[k]<<",";
cout<<endl;
return array;
}
void count(vector<int> array,int len,int a,int b)
{
int countNum = 0;
for(int i = 0; i< len;i++)
{
if(array[i] >a && array[i] < b)
{
countNum++;
cout<<array[i]<<",";
}
}
cout<< "\n大于"<<a<<"小于"<<b<<"的数共"<<countNum<<"个。\n";
}

vector<int> indexArray(vector<int> array,int len,int index)
{
vector<int>temp(len);
bool flg = false;//标记是否存在index
for(int i = 0 ; i< len ; i++)
{
if(array[i] == index)
{
temp[i] = i;
flg = true;
}
}
if(index>array[len-1])
array.insert(array.end(),index);//插入尾部
else
array.insert(array.begin(),index);//插入头部

if(!flg)
{
cout<<"新数组为:\n";
return array;

}
cout<<"检索到的数组下标为:\n";
return temp;
}

void print(vector<int> array,int len)
{
for(int i = 0 ; i< len; i++)
if(array[i]>0)
cout<<array[i]<<" ";
cout<<"\n";
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-05-14
#include <iostream>
#define N 100
using namespace std;

int main(void)
{
int array[N],i,j,k,l=0;
bool flag=true;
int record[N];
int n,a,b,x;
for(i=0;i<N;i++)record[i]=-1;
cout<<"Input n(n<100):"<<endl;
cin>>n;
cout<<"Please input "<<n<<" numbers:"<<endl;
for (i=0;i<n;++i)
cin>>array[i];
for (i=0;i<n;++i)
{
k=i;
for (j=i+1;j<n;++j)
if (array[j]<array[k]) k=j;
if (k!=i)
{
array[i]+=array[k];
array[k]=array[i]-array[k];
array[i]=array[i]-array[k];
}
}
cout<<"After sorting:";
for (i=0;i<n;++i)
cout<<array[i]<<',';
cout<<"Input a and b:"<<endl;
cin>>a>>b;
cout<<"The elements greater than a and less than b as well are:"<<endl;
for(i=0;i<n;++i)
if(array[i]>a && array[i]<b)cout<<array[i]<<",";
cout<<endl<<"Input x:"<<endl;
cin>>x;
for(i=0;i<n;i++)
if(array[i]==x)record[l++]=i;
for(i=0;i<N;i++)
{
if(record[i]==-1)array[n+1]=x;
else
{
flag=false;
cout<<record[i]<<",";
}
}
if(flag)
{
for (i=0;i<n+1;++i)
{
k=i;
for (j=i+1;j<n+1;++j)
if (array[j]<array[k]) k=j;
if (k!=i)
{
array[i]+=array[k];
array[k]=array[i]-array[k];
array[i]=array[i]-array[k];
}
}
cout<<"After sorting:";
for (i=0;i<n+1;++i)
cout<<array[i]<<',';
}

system("pause");
return 0;
}
相似回答
大家正在搜