分享

c语言中四个数比较大小问题

 accesine 2005-07-28
主  题: C语言中四个数比较大小问题
作  者: atrsn (ziyu )
等  级:
信 誉 值: 100
所属论坛: C/C++ C语言
问题点数: 20
回复次数: 25
发表时间: 2005-7-23 23:39:37

输入四个数,按从小到大顺序输出。只用判断语句实现。不知各位大侠是否有经典的算法。
回复人:llf_hust() ( 五级(中级)) 信誉:100 2005-7-23 23:44:40 得分:0

#include<stdio.h>
int Max(int a,int b)
{
if(a>b)
return a;
return b;
}
int main()
{
int t,a,b,c,d;
scanf("%d%d%d%d",&a,&b,&c,&d);
t = Max(Max(Max(a,b),c),d);
printf("max = %d",t);
return 0;
}
Top
回复人:llf_hust() ( 五级(中级)) 信誉:100 2005-7-23 23:45:18 得分:0

看错题目 了不好意思
Top
回复人:zsd1101897(曼陀罗) ( 一级(初级)) 信誉:100 2005-7-23 23:47:30 得分:0

#include <stdio.h>

main()
{
int a, b, c, d, t;
printf("请输入4个数:");
scanf("%d%d%d%d", &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=t;
}
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);
}
不知道这算不算经典啊?
Top
回复人:stoneagecr(stoneagecr) ( 一级(初级)) 信誉:100 2005-7-23 23:52:59 得分:0

冒泡排序 两个for循环即可
Top
回复人:atrsn(ziyu ) ( 一级(初级)) 信誉:100 2005-7-23 23:57:16 得分:0

不错简单明了。
Top
回复人:llf_hust() ( 五级(中级)) 信誉:100 2005-7-24 0:00:19 得分:0

直接排序就可以得出结果
Top
回复人:zsd1101897(曼陀罗) ( 一级(初级)) 信誉:100 2005-7-24 0:06:20 得分:0

冒泡法:
#include <stdio.h>
main()
{
int a[4];
int i;
int j;
int t;
printf("请输入4个数:\n");
for(i=0;i<4;i++)
{
sacnf("%d", &a[i]);
}
for(i=0; i<4; i++)
{
for(j=1;j<4-i;j++)
{
if(a[i]<a[j])
{
t=a[i]; a[i]=a[j]; a[j]=t
}
}
}
}
Top
回复人:llf_hust() ( 五级(中级)) 信誉:100 2005-7-24 0:17:53 得分:0

#include<stdio.h>
void SelectSort(int a[],int n)
{
int i,j,tmp,temp;
for(i=0; i<n-1; i++)
{tmp = i;
for(j = i+1; j<n;j++)
if (a[tmp] > a[j])
tmp = j;
if(tmp != i)
{
temp = a[i];
a[i] = a[tmp];
a[tmp] = temp;
}
}
}

int main()
{
int a[5];
int i;
for(i=0; i<4; i++)
scanf("%d",&a[i]);
SelectSort(a,4);
for(i=0; i<4; i++)
printf("%d",a[i]);
return 0;
}

选择排序法
Top
回复人:MagicCarmack(梦中情人C++) ( 四级(中级)) 信誉:100 2005-7-24 1:03:34 得分:0

这些算法算经典么?

期待高人出招
Top
回复人:aweto(冬虫夏草) ( 一级(初级)) 信誉:100 2005-7-24 2:30:05 得分:0

选择了数组这个经典数据结构,C排序算法就多如牛毛了。 :)
Top
回复人:jixingzhong(瞌睡虫) ( 五级(中级)) 信誉:100 2005-7-24 8:42:49 得分:0

如果只是输出四个中的最大值

到是有一些巧妙的方法。




可是要全部顺序输出的话....................


就比较困难了.................
Top
回复人:mic_c(贝壳撼木) ( 一级(初级)) 信誉:100 2005-7-24 11:19:26 得分:0

UP
Top
回复人:HermeX() ( 一级(初级)) 信誉:100 2005-7-24 11:24:31 得分:0

只有4个数的话,用什么排序差别都不大。
如果数的个数很多的话,当然使用最强捍的快速排序,虽然稳定性不太好。
Top
回复人:Student02370236(★★★★★★) ( 二级(初级)) 信誉:100 2005-7-25 3:02:36 得分:0

如果你的数据量不太大的话就用递归吧...
Top
回复人:jlkzzh(一阵风) ( 一级(初级)) 信誉:100 2005-7-25 10:21:59 得分:0

冒泡法 is perfect

Top
回复人:windking21(暗淡) ( 一级(初级)) 信誉:100 2005-7-25 10:54:48 得分:0

排序应该是最简单的

#include <iostream.h>
void main()
{ int i,j,x,y,a[4];
for(i=0;i<4;i++)
{
cout<<"enter number:"<<endl;
cin>>x;
a[i]=x;
}

for(i=0;i<4;i++)
{
for(j=i+1;j<4;j++)

if(a[i]>a[j])
{
y=a[i];
a[i]=a[j];
a[j]=y;
}


}

cout<<"min="<<a[0]<<endl;



}
Top
回复人:newpuple(开始新的学程) ( 二级(初级)) 信誉:100 2005-07-25 11:23:00 得分:0
我来试试。
main()
{int a,b,c,d,temp;
printf("please input four numbers:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a<b)
{temp=a;
a=b;
b=temp;
}
if(c<d)
{temp=c;
c=d;
d=temp;
}
if(a<c)
{temp=c;
c=a;
a=temp;
}
else if(c>b)
{temp=b;
b=c;
c=temp;
}
printf("%5d,%5d,%5d,%5d",a,b,c,d);
}
Top
回复人:shmilvy() ( 一级(初级)) 信誉:100 2005-07-25 12:20:00 得分:0
#include"stdio.h"用for循环
Top
回复人:kernelxu(残眉) ( 一级(初级)) 信誉:100 2005-07-25 15:25:00 得分:0
数较少,用简单冒泡法即可:
/*
Name : bubble_sort.c
Copyright : kernelxu
Author : kernelxu
Date : 2005-07-25 15:18
Description: displaying 4 int data in order from the biggest to the smallest
using bubble sort method
*/

#include <stdio.h>

int main(void)
{
int num[4] = {0};
int t = 0;
int i = 0;
int j = 0;

printf("Please enter 4 int datas:\n");
for(i = 0; i < 4; i++)
{
printf("Enter %d: ", i+1);
scanf("%d", &(num[i]));
}
for(i = 0; i<3; i++)
{
for(j = i+1; j < 4; j++)
{
if(num[i] > num[j])
{
t = num[i];
num[i] = num[j];
num[j] = t;
}
}
}
for(i = 0; i < 4; i++)
{
printf("%d\t", num[i]);
}
printf("\n");
system("pause");

return 0;
}
Top
回复人:guycs(年轻人) ( 一级(初级)) 信誉:100 2005-07-25 15:26:00 得分:0
这似乎没什么太大意义吧?
Top
回复人:ENOUGH_XU(足球小兵) ( 一级(初级)) 信誉:100 2005-07-25 15:56:00 得分:0
#include <iostream.h>
int main()
{
int a,b,c,d,max;
cin>>a>>b>>c>>d;
max=((a>b?a:b)>c?(a>b?a:b):c)>d?((a>b?a:b)>c?(a>b?a:b):c):d;
cout<<max<<endl;
return 0;

}
随便搞了一个,也不知道算不算经典.
Top
回复人:zzffrr(zzffrr) ( 一级(初级)) 信誉:100 2005-07-25 16:26:00 得分:0
快速排序,数据结构算法里有。
Top
回复人:ENOUGH_XU(足球小兵) ( 一级(初级)) 信誉:100 2005-07-25 16:37:00 得分:0
看错了,不好意思!!!
Top
回复人:mic_c(贝壳撼木) ( 一级(初级)) 信誉:100 2005-07-25 20:39:00 得分:0
能不能用DO WHILE 语句啊?
Top
回复人:xsm(程序) ( 一级(初级)) 信誉:100 2005-07-26 19:56:00 得分:0
main()
{
int a[4],i,j,s;

for(i=0;i<4;i++)
scanf("%d",&a[i]); /*输入四个数*/

for(i=0;i<3;i++){
for(j=i+1;j<4;j++){
if(a[i]>a[j]){
s=a[i];a[i]=a[j];a[j]=s;}
}
}

for(i=0;i<4;i++)
printf("%d",a[i]);
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多