C语言四个数由大到小排列

代码如下: #include <stdio.h> void main() { int a,b,c,d,t; printf("请输入四个数,并以逗号分割。\n"); scanf("%d,%d,%d,%d",&a,&b,&c,&d); if(a>b) {a=t; a=b; b=t;} if(a>c) {a=t; a=c; c=t;} if(a>d) {a=t; a=d; d=t;} if(b>c) {b=t; b=c; c=t;} if(b>d) {b=t; b=d; d=t;} if(c>d) {c=t; c=d; d=t;} printf("%d>%d>%d>%d",d,c,b,a); } 调试时,中间两个数的输出都是好大的负数,求解

可以将四个数先存到数组中,然后进行插入排序。

一、算法设计:

1、输入4个数;

2、使用任意方法进行排序;

3、输出结果。

二、算法优化:

如果选择插入排序,那么可以在输入过程中,同时完成排序操作,减少一次循环,提高效率。

三、参考代码:

#include <stdio.h>
int main()
{
    int i,j,a[4],n;
    for(i = 0; i < 4; i++)//循环四次
    {
        scanf("%d",&n);//输入一个数,并存在n中。
        for(j = i-1; j>=0; j--)//插入排序,查找要插入的位置。
        {
            if(a[j]>=n) break;
            a[j+1]=a[j];
        }
        a[j+1]=n;//插入n值。
    }
    for(i = 0; i < 4; i ++)
        printf("%d ", a[i]);//输出结果。
    return 0;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-04-06
变量t没有初始化就赋值给a,第一个里面应该是t=a 而不是a=t
最好在定义变量的时候就初始化变量,否则就容易出现你说的那种好大的负数本回答被提问者采纳
第2个回答  2014-04-06
t未初始化,值不确定,直接用肯定报错

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网