| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 959 人关注过本帖
标题:求C程序高手解答 下面程序是输入10个数,对这10个数由小到大排序
只看楼主 加入收藏
yueqiangylyq
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-11-15
结帖率:0
收藏
 问题点数:0 回复次数:7 
求C程序高手解答 下面程序是输入10个数,对这10个数由小到大排序
#include<stdio.h>
void main()
{
int a[10];
int i,j,t;
printf("input 10 numbers:\n" );
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("\n");
for(j=0;j<9;j++)//进行9次循环,实现9次比较
for(i=0;i<9-j;i++)//在每趟比较中实现9-j次比较
if(a[i]>a[i+1])//相邻两个数比较
{
t=a[i];a[i]=a[i+1];a[i+1]=a[i];
}
printf("the sorted number:\n");
for(i=0;i<10;i++)
printf("%d",a[i]);
printf("\n");
}
输入这十个数
1 0 4 8 12 65 -76 100 -45 123
结果却是
-76 -76 -76 -76 -76 -76 -76 -45 -45123
搜索更多相关主题的帖子: numbers 
2011-09-11 10:17
ouyangouyang
Rank: 7Rank: 7Rank: 7
等 级:黑侠
帖 子:273
专家分:579
注 册:2009-10-8
收藏
得分:0 
for(j=0;j<9;j++)//进行9次循环,实现9次比较
for(i=0;i<9-j;i++)//在每趟比较中实现9-j次比较
if(a[i]>a[i+1])//相邻两个数比较
{
t=a[i];a[i]=a[i+1];a[i+1]=a[i];
}
/*
for(i=0;i<8;i++)
for(j=i;j<9;j++)
if(a[i]>a[j])
{x=a[j];
a[j]=a[i];
a[i]=x;}
冒泡法这就不可以了

多少恨, 昨夜梦魂中。 还似旧时游上苑, 车如流水马如龙; 花月正春风!
2011-09-11 10:33
yueqiangylyq
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-11-15
收藏
得分:0 
回复 2楼 ouyangouyang
冒泡法有错?
2011-09-11 10:35
kevinchen20
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-6-26
收藏
得分:0 
# include

void sort(int * a, int len)
{
    int i, j , t;

    for (i=0; i<LEN - 1; ++I)
    {
        for (j=0; j<LEN-1-I; ++J)
        {
            if (a[j] < a[j +1])
            {
                t  = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
                    
            }
            
        }
   
   
    }

}

int main(void)
{
    int a[6] = {10, 2, 8, -8, 11, 0};
    int i = 0;
    sort(a, 6);
    for (i = 0; i < 6; ++i)
    {
        printf("%d  ", a[i]);   
    }
    printf("\n\n\n\n\n");
    return 0;
}
2011-09-11 10:47
Afah
Rank: 2
等 级:论坛游民
帖 子:40
专家分:70
注 册:2011-8-28
收藏
得分:0 
把t=a[i];a[i]=a[i+1];a[i+1]=a[i]改成t=a[i];a[i]=a[i+1];a[i+1]=t

这个程序也可以写成
#include<stdio.h>
main()
{int i,j,a[10],temp;
 for(i=0;i<10;i++)
 scanf("%d",&a[i]);
 for(j=0;j<10;j++)
 for(i=j;i<10;i++)
 {if(a[j]>a[i])
  temp=a[j],a[j]=a[i],a[i]=temp;}
  for(i=0;i<10;i++)
  printf("%d",a[i]);
}
2011-09-11 10:49
yueqiangylyq
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2008-11-15
收藏
得分:0 
回复 5楼 Afah
谢谢
2011-09-11 11:18
为我留住记忆
Rank: 4
来 自:北京
等 级:业余侠客
帖 子:130
专家分:226
注 册:2011-4-30
收藏
得分:0 
交换交换错了   t=a[i] a[i]=a[i+1]  a[i+1]=t

学习c是为了自己更强大。。。
2011-09-11 15:19
LennyMogwai
Rank: 2
等 级:论坛游民
帖 子:20
专家分:15
注 册:2011-7-24
收藏
得分:0 
楼主这程序风格……
2011-09-11 16:47
快速回复:求C程序高手解答 下面程序是输入10个数,对这10个数由小到大排序
数据加载中...
 
   



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

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