当前位置:编程学习 > C/C++ >>

我刚学习C++语言,老师布置了个题目是这样的.输入4个数字,按照从大到小排列.

这是我写的,但是错的.哪位高手能帮我下,谢谢了.
#include <stdio.h>
void main()
{
float a,b,c,d,e;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a<b)
e=a,b=e,a=b;
if(a<c)
e=a,c=e,a=c;
if(a<d)
e=a,d=e,a=d;
if(b<c)
e=b,c=e,b=c;
if(b<d)
e=b,d=e,b=d;
if(c<d)
e=c,d=e,c=d;
printf("%f%f%f%f",a,b,c,d);
}
答案:
#include <stdio.h>
void main()
{
float a,b,c,d,e;
scanf("%d%d%d%d",&a,&b,&c,&d);
if(a<b)
e=a,a=b,b=e;
if(a<c)
e=a,a=c,c=e;
if(a<d)
e=a,a=d,d=e;
if(b<c)
e=b,b=c,c=e;
if(b<d)
e=b,b=d,d=e;
if(c<d)
e=c,c=d,d=e;
printf("%f%f%f%f",a,b,c,d);
}
注意变量不要丢失了,仔细想想,e=a,那么a就解放了,所以马上a=b
如果按照你目前的逻辑
应该写成
if(a<b)
e=a,a=b,b=e;//a,b对换的顺序错了,下面错误类似
if(a<c)
e=a,a=c,c=e;
if(a<d)
e=a,a=d,d=e;
if(b<c)
e=b,b=c,c=e;
if(b<d)
e=b,b=d,d=e;
if(c<d)
e=c,c=d,d=e;


另外,建议你在网上搜索一下冒泡排序,思路跟你的基本类似,不过是用循环实现的
#include <iostream>
using namespace std;
int main()
{
int i,j,temp,sz[4]; /*定义变量*/
for(i=0;i<=3;i++) /*输入数据到数组*/
cin>>sz[i]>>endl;
for(i=0;i<=3;i++) /*从小到大排序*/
for(j=0;j<=3;j++)
if (sz[i]<sz[j])
{temp=sz[i]; sz[i]=sz[j]; sz[j]=temp;}
for(i=0;i<=3;i++) /*显示排序好的数组*/
cout<<sz[i]<<endl;
return 0;
}
数组学了吗?如果没学过数组就没办法用各种排序算法了。

上一个:在学习C++语言之前,需要对哪些知识有一定的了解及掌握?知道的请详细说明下,万分感谢!!
下一个:深圳这边做软件测试的话工资是多少??如果是过了试用期大约工资是多少?只需要学习C++、C语言?

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,