标题:输入四个整数,要求按从小到大的顺序输出!
只看楼主
feelings010
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-4-20
 问题点数:0 回复次数:20 
输入四个整数,要求按从小到大的顺序输出!
输入四个整数,要求按从小到大的顺序输出!
请问这道题除了以下这种方法,有没有更加简洁的?谢谢!


#include<stdio.h>
void main(){
int a,b,c,d,t;
printf("请输入四个整数:\n");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{ t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=a;}
if(b>c)
{t=b;b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
printf("四个整数从小到大的顺序输出是:%d,%d,%d,%d",a,b,c,d);
}
搜索更多相关主题的帖子: 整数 输出 从小到大 顺序 输入 
2007-04-27 09:46
Starlove
Rank: 1
等 级:新手上路
帖 子:169
专家分:0
注 册:2007-4-26
得分:0 
可以用老谭的冒泡法.
+++++++++++++++++++

专门对付排序的.

-----------------------
可以借鉴一下
2007-04-27 10:56
ycxue46
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-4-16
得分:0 
main()
{
int i,j,k,t,a[4];
for(i=0;i<4;i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)
{
k=i;
for(j=i+1;j<4;j++)
if(a[j]<a[k])
k=j;
if(k!=i)
t=a[i];a[i]=a[k];a[k]=t;
}

printf("%d",a);
}

[此贴子已经被作者于2007-4-27 11:04:24编辑过]

2007-04-27 11:01
wen1000
Rank: 1
等 级:新手上路
帖 子:52
专家分:0
注 册:2007-4-5
得分:0 
if(k!=i)
{t=a[i];a[i]=a[k];a[k]=t;}
三楼的朋友你的程序有点小失误
2007-04-27 14:41
yu_hua
Rank: 2
等 级:论坛游民
帖 子:222
专家分:95
注 册:2006-8-10
得分:0 

#include <stdio.h>
#define a x[0]
#define b x[1]
#define c x[2]
#define d x[3]
main( )
{
int x[4],i,j,t;
printf("a,b,c,d=");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
for(i=1;i<=4-1;i++)
for(j=1;j<=4-i;j++)
if(x[j-1]>x[j])
t=x[j-1],x[j-1]=x[j],x[j]=t;
printf("%d,%d,%d,%d\n",a,b,c,d);
}

2007-04-27 14:55
ycxue46
Rank: 1
等 级:新手上路
帖 子:81
专家分:0
注 册:2007-4-16
得分:0 

谢谢四楼的朋友改正.我一编完就出去玩去了,没注意看.

2007-04-27 14:58
非凡DZ
Rank: 1
等 级:新手上路
帖 子:231
专家分:0
注 册:2007-4-6
得分:0 
#include<stdio.h>
void main()
{
int a[10];
int i,j,temp;
for(i=0;i<4;i++)
{
printf("第%d个数:",i+1);
scanf("%d",&a[i]);
}
for(i=0;i<3;i++)
{
for(j=3;j>i;j--)
{
if(a[j]>a[j-1])
{
temp=a[j],a[j]=a[j-1],a[j-1]=temp;
}
}
}
printf("排序后为:");
for(i=0;i<4;i++)
{
printf("%d ",a[i]);
}
}

2007-04-27 15:15
hackerjiang
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:地球
等 级:版主
威 望:3
帖 子:780
专家分:111
注 册:2007-4-27
得分:0 
使用冒泡法就OK啦
main()
{
int sum[4],dataA=0,dataB=0,temp;
for(;dataA<4;dataA++)
scanf("%d",&sum[0]);
for(dataA=0;dataA<3;dataA++)
for(;dataB<3-dataA;dataB++)
if(sum[dataA]>sum[dataA+1])
{
temp=sum[dataA];sum[dataA]=sum[dataB+1];sum[dataB+1]=temp;
}
for(dataA=0;dataA<4;dataA++)
printf("%d ",sum[dataA]);
}

(づ ̄ 3 ̄)づ
2007-04-27 16:14
feelings010
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-4-20
得分:0 
哇,好多方法啊!谢谢各位!
2007-04-27 17:42
feelings010
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2007-4-20
得分:0 
以下是引用ycxue46在2007-4-27 11:01:34的发言:
main()
{
int i,j,k,t,a[4];
for(i=0;i<4;i++)
scanf("%d",&a[i]);
for(i=0;i<4;i++)
{
k=i;
for(j=i+1;j<4;j++)
if(a[j]<a[k])
k=j;
if(k!=i)
t=a[i];a[i]=a[k];a[k]=t;
}

printf("%d",a);
}

这个执行结果好像不是所想要的?能不能再看下!谢谢!

2007-04-27 17:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-135315-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.370193 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved