注册 登录
编程论坛 C++教室

5个数按从小到大排列,还差点什么

ryp1825 发布于 2007-01-06 22:40, 3048 次点击

#include<iostream>
using namespace std;
int main()
{
int n1,n2,n3,n4,n5;
int *p1,*p2,*p3,*p4,*p5,p;
cout<<"请输入五个整数:"<<endl;
cin>>n1>>n2>>n3>>n4>>n5;
p1=&n1;
p2=&n2;
p3=&n3;
p4=&n4;
p5=&n5;
if(n1>n2)
{
p=*p1;
*p1=*p2;
*p2=p;
}
if(n2>n3)
{
p=*p2;
*p2=*p3;
*p3=p;
}
if(n3>n4)
{
p=*p3;
*p3=*p4;
*p4=p;
}
if(n4>n5)
{
p=*p4;
*p4=*p5;
*p5=p;
}
if(n1>n5)
{
p=*p1;
*p1=*p5;
*p5=p;
}
cout<<n1<<" "<<n2<<" "<<n3<<" "<<n4<<" "<<n5;
return 0;
}


15 回复
#2
pinglideyu2007-01-07 10:34
这样做很麻烦的,建议用数组做!
#3
yuyunliuhen2007-01-07 12:20

建议用数组,判断的话可以用循环..可以省写很多代码的

#4
ryp18252007-01-07 23:07

我试下看

#5
soc012007-01-08 17:14

#include <iostream>
using namespace std;
int main()
{
int a[5];
int i,j,temp;
cout<<"Please enter 5 numbers:";
for(i=0;i<5;i++)
cin>>a[i];
for(i=1;i<5;i++)
{
for(j=0;j<i;j++)
{
if(a[j]>a[i])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
for(i=0;i<5;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}

#6
jishuai2007-01-08 19:04

哎呀
这样写好麻烦的啊
你把它放在数组里面啊
用FOR循环来实现啊

#7
yaleond2007-01-09 09:03
这样好像只能找到最大值吧?
#8
soc012007-01-09 18:38
以下是引用yaleond在2007-1-9 9:03:41的发言:
这样好像只能找到最大值吧?


你自己跑一次就知道了。

#9
shengwumozhe2007-01-09 19:29

你的是冒泡排序,5个数要循环5次才行,你那个只有一次自然行不通.
冒泡排序是基本的排序方法,你的思想是正确的,但是要记住排序的次序是N-1次,(N为需要排序的个数)
再一点注意循环控制,并且结构用数组,会省掉很多代码.

[此贴子已经被作者于2007-1-9 19:36:22编辑过]

#10
shengwumozhe2007-01-09 19:39
以下是引用soc01在2007-1-8 17:14:05的发言:

#include <iostream>
using namespace std;
int main()
{
int a[5];
int i,j,temp;
cout<<"Please enter 5 numbers:";
for(i=0;i<5;i++)
cin>>a[i];
for(i=1;i<5;i++)
{
for(j=0;j<i;j++)
{
if(a[j]>a[i])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
for(i=0;i<5;i++)
cout<<a[i]<<" ";
cout<<endl;
return 0;
}

正解!!!

#11
Alome2007-01-14 17:05

哎呀~~
不太懂啊~老师也曾经叫我们做类似这样的练习~最后嘛~~~当然.....
我没作出来.....
#12
Alome2007-01-14 17:12
/#include <iostream>
using namespace std;/
这2句什么意思?有什么用的?
/cin>>a[i];/
CIN是什么意思?有什么用的?
/for(i=1;i<5;i++)
{
for(j=0;j<i;j++)
{
if(a[j]>a[i])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;/
为什么又要i又要j,a[j]>a[i]有什么用的?
/cout<<a[i]<<" ";/
中" ";是什么意思?
菜鸟~呵呵~不介意问这些东西吧~
#13
jacklee2007-01-16 14:32
#14
bagysov2007-01-16 23:31
以下是引用Alome在2007-1-14 17:12:04的发言:
/#include <iostream>
using namespace std;/
这2句什么意思?有什么用的?
/cin>>a[i];/
CIN是什么意思?有什么用的?
/for(i=1;i<5;i++)
{
for(j=0;j<i;j++)
{
if(a[j]>a[i])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;/
为什么又要i又要j,a[j]>a[i]有什么用的?
/cout<<a[i]<<" ";/
中" ";是什么意思?
菜鸟~呵呵~不介意问这些东西吧~

cin是进行输入.就是从键盘向内存流动数据
只用j循环只能选出最大一个.再用i循环可以全排序
a[j]>a[i]是个条件.合条件就实行以下语句.
最后一个问题我也不明白...我也是初学者初来这学东西的哈

#15
laoli0072007-01-16 23:51

建议先弄懂排序的各种算法

#16
tyb1032007-01-21 16:26


12楼的那几个问题在14已经有解了
14楼还留下的那个问题
/cout<<a[i]<<" ";
" "; 是什么意思?
那个 “ " "; 就是在屏幕上 打印 引号中间的那段空格 也可以说是打印一个空格

还有个是
using namespace std;
//使用批准的命名空间

1