求解C或C++程序题!

从键盘输入100个整型数据;将这100个数按从小到大进行排序;输出程序排序后的数据,同事,还要求以每行10个数据的格式输出;用流程图描述设计的算法。... 从键盘输入100个整型数据;
将这100个数按从小到大进行排序;
输出程序排序后的数据,同事,还要求以每行10个数据的格式输出;
用流程图描述设计的算法。
展开
 我来答
wang707154632
2013-06-22 · TA获得超过113个赞
知道答主
回答量:286
采纳率:0%
帮助的人:137万
展开全部
这个程序略多,首先定义一个数组,用来存放100个数据。要是直接输100个数会累死的。所以还是建议系统直接随机生成。代码如下:(C++)
#include<iostream>
#include<windows.h>
#include<cstdlib>
#include<iomanip>
之后加入:#define MAX 100

类定义:
class Array_CS
{
public:
void Rand_Input();
void Array_Input();
void Bubble_Sort();
private:
Array[MAX];

};
子函数:
void Array_CS::Rand_Input() //随机生成
{
int i,Max_Rand;
system("cls");
cout<<"数字将随机生成。。。。。。\n";
cout<<"请输入数字上限(不小于300,不大于32767),生成的数据将不超过这个上限\n";
cin>>Max_Rand;
while((Max_Rand<50)||(Max_Rand>32767))
{
cout<<"上限太小,请重新输入!\n";
cin>>Max_Rand;
}
for(i=1;i<=MAX;i++)
{
Array[i]=(Max_Rand*rand()/(RAND_MAX+1.0));
}
for(i=1;i<=MAX;i++)
{
cout<<setw(6)<<Array[i]<<" ";
if(i%10==0) //每行满十个,换行
cout<<endl;
}
getwchar();
getchar();
system("cls");
}
void Array_CS::Array_Input() //手动输入
{
int i,temp;
system("cls");
cout<<"请依次输入100个整数,如果不是整数,将被向下取整:\n";
for(i=1;i<=MAX;i++)
{
cin>>temp;
Array[i]=static_cast<int>(temp);
}
cout<<endl<<"您刚才输入的是:\n";
for(i=1;i<=MAX;i++)
{
cout<<setw(6)<<Array[i];
if(i%10==0)
cout<<endl;
}
cout<<endl<<"按任意键进行排序方式选择!\n";
getwchar();
getchar();
system("cls");
}
排序的方法很多,这里用冒泡排序:
void Array_CS::Bubble_Sort()
{
int i,j,temp,count;
system("cls");
cout<<"你选择了冒泡排序!";
count=0;
for(i=0;i<=MAX;i++)
{
for(j=0;j<=MAX;j++)
{
if(Array[i]<Array[j])
{
count++;
temp=Array[i];
Array[i]=Array[j];
Array[j]=temp;
}
}
}
cout<<endl<<"排序后顺序如下:\n";
for(i=1;i<=MAX;i++)
{
cout<<setw(6)<<Array[i];
if(i%10==0)
cout<<endl;
}
cout<<"冒泡排序总的平均时间复杂度为:"<<count<<endl;
}
具体的主函数,你自己编一下吧。
爱雨缘分
2013-06-22
知道答主
回答量:24
采纳率:0%
帮助的人:10.6万
展开全部
#include <iostream>
#include <iomanip>
using namespace std;
void collocate(int a[]);

int main()
{
int i,a[10];
cout<<"Please input 10 number: "<<endl;

for(i=0;i<10;i++)
cin>>a[i];

collocate(a);

for(i=0;i<10;i++)
cout<<setw(3)<<a[i];
cout<<endl;

return 0;
}

void collocate(int a[])
{
int i,j,temp;

for(i=0;i<9;i++)
{
for(j=i+1;j<10;j++)
{
if(a[j]<a[i])
{
temp=a[j];
a[j]=a[i];
a[i]=temp;
}
}
}
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式