问题描述:
询问使用者一数组长度并询问此数组为使用者自己输入或计算机自动生成
并将输入数字大小有小到大输出结果
首先提问要输入几个数字 比如 5个 然后 询问着五个数是由使用者输入 还是 计算机自动生成
最后将这些数字有小到大输出
问题解答:
//运行过了。符合要求,由机器产生的随机数字范围设定在100之内,有问题
//请联系我
#include <iostream>
#include <cmath>
using namespace std;
void main()
{
int total;
cout<<"输入数组的长度"<<endl;
cin>>total;
int*p;
p=new int[total];
int flag,max,index,temp;
cout<<"选择数字产生的模式:"<<endl;
cout<<"1.人工输入"<<endl;
cout<<"2.机器产生(100以内的随机数)"<<endl;
cin>>flag;
while ((flag!=1)&&(flag!=2))
{
cout<<"请选择正确的模式"<<endl;
cout<<"选择数字产生的模式:"<<endl;
cout<<"1.人工输入"<<endl;
cout<<"2.机器产生(100以内的随机数)"<<endl;
cin>>flag;
}
if(flag==1)
{
for (int i=0;i<total;i++)
{
cout<<"输入第"<<i+1<<"个数:";
cin>>p[i];
}
for(i=0;i<total;i++)
{
max=p[i];
index=i;
for(int j=i+1;j<total;j++)
{
if (max<p[j])
{
index=j;
max=p[j];
}
}
temp=p[index];
p[index]=p[i];
p[i]=temp;
}
}
if(2==flag)
{
for(int i=0;i<total;i++)
{
p[i]=rand()%100;//修改这里设定随机数字范围
}
cout<<"产生的随机数字如下"<<endl;
for(i=0;i<total;i++)
{
cout<<p[i]<<" ";
}
cout<<endl;
for(i=0;i<total;i++)
{
max=p[i];
index=i;
for(int j=i+1;j<total;j++)
{
if (max<p[j])
{
index=j;
max=p[j];
}
}
temp=p[index];
p[index]=p[i];
p[i]=temp;
}
}
for(int i=0;i<total;i++)
{
cout<<p[i]<<" ";
}
cout<<endl;
}
呵呵,重新改答案费了我近三个小时,我自己都想放弃了,自己出了个小错误,几乎把我弄死。代码我运行过,可以,希望对你有帮助,有问题baidu hi我。
#include <iostream>
#include <iomanip>
using namespace std;
void main(){
int n;int b;int i;
cout<<"请输入n的大小"<<endl;
cin>>n;
int *a=new int[n];//动态分配内存
cout<<"请输入b的值"<<endl;//b=1,自己输入数据,非1,计算机自己产生数据
cin>>b;
if(b==1){
cout<<"自己输入数据"<<endl;
for(i=0;i<n;i++)
cin>>a[i];
cout<<"*******************"<<endl;
}
else{
cout<<"计算机自动产生数据"<<endl;
for(i=0;i<n;i++)
a[i]=rand()%100;//产生100内的整数
}
for(i=0;i<n;i++)
cout<<a[i]<<setw(8);
cout<<endl<<"********************"<<endl;
int j;int q;int t;//采用冒泡排序法
for(j=0;j<n-1;j++){
for(q=0;q<n-j-1;q++){
if(a[q]>a[q+1]){
t=a[q];a[q]=a[q+1];a[q+1]=t;
}
}
}
for(i=0;i<n;i++)
cout<<a[i]<<setw(8);
cout<<endl;
}