CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

简单排序,可是老出问题 请大家帮忙检查一下

楼主Tangxiang(来,让我们一起跳舞吧。)2006-03-04 17:31:34 在 C/C++ / C语言 提问

#include<stdio.h>  
  #include<stdlib.h>  
  char   num[10];  
  //简单排序    
  main()  
  {  
          for(int   i=1;i<=10;i++)  
          {  
              scanf("%d",&num[i]);              
                          }  
        int   i   =   1;  
        int   temp;    
        for(int   u=1;u<=10;u++)          
        {  
          if(num[i]>=num[i+1])  
              {  
                        temp=num[i];  
                        num[i]=num[i+1];  
                        num[i+1]=temp;  
                        i++;  
                }        
            else  
                i++;  
                }  
              printf("从小到大打印顺序如下\n");  
            for(int   i=1;i<=10;i++)  
            {  
                            printf("%d\n",num[i]);  
                            }  
          system("pause");  
          }  
  问题点数:10、回复次数:9Top

1 楼llf_hust()回复于 2006-03-04 17:44:29 得分 3

#include<stdio.h>  
  #include<stdlib.h>  
  void   Sort(int   a[],   int   n)  
  {  
  int   i,j,temp,k;  
  for(   i   =   0;   i   <   n   -   1   ;   i   ++)  
  {  
  k   =   i;  
  for(   j   =   i   +   1;   j   <   n;   j   ++   )  
  if(   a[j]   <   a[k])  
  k   =   j;  
  if(k   !=   i   )  
  {    
  temp   =   a[i];  
  a[i]   =   a[k];  
  a[k]   =   temp;  
  }  
  }  
  }  
  int   num[10];  
  //简单排序    
  main()  
  {  
          for(int   i=0;i<3;i++)  
          {  
              scanf("%d",&num[i]);              
          }  
   
      /*  
        int   j   =   1;  
            int   temp;    
            for(int   u=1;u<=3;u++)          
            {  
              if(num[j]>=num[j+1])  
                  {  
                            temp=num[j];  
                            num[j]=num[j+1];  
                            num[j+1]=temp;  
                            j++;  
                    }        
                else  
                    j++;  
                    }  
                  printf("从小到大打印顺序如下\n");*/  
  Sort(num,3);  
            for(int   i1=0;i1<3;i1++)  
            {  
                            printf("%d\n",num[i1]);  
                            }  
        //   system("pause");  
  return   0;  
          }  
  Top

2 楼duduhaha(三人行必有我师)回复于 2006-03-04 18:01:24 得分 1

楼主是想用冒泡排序吧?  
  其实你只是完成了一趟,将数组中最大的数放到了最后.  
  试想2,3,1三个数.  
  用你的方法为2,1,3而不是应该的1,2,3.  
  另外,  
  for(int   u=1;u<=10;u++)  
  这样不对.  
  应该for(int   u   =   0;   u   <   10;   u++)  
  Top

3 楼ckp(surge)回复于 2006-03-04 18:19:24 得分 1

char   num[10];  
  //简单排序    
  main()  
  {  
          for(int   i=1;i<=10;i++)//另外,这里有错,前面定义的char   num[10],说明有效下标为0-9  
  Top

4 楼iambic()回复于 2006-03-04 18:19:52 得分 1

我觉得你排得完全不对,至少要两个嵌套着的循环吧。Top

5 楼wucunfu(因为楼主你吝啬,所以我还是一个三角裤衩!)回复于 2006-03-04 18:45:48 得分 2

变量要先定义再使用!!!!!!!!   你怎么出来了一个u呢?  
  楼主想做冒泡,你还少了一重循环  
  看下面这个冒泡  
  #include   "stdio.h"  
  main()  
  {   int   i,j,t,a[11];  
      printf("\nPlease   input   10   numbers:");  
      for(i=0;i<10;i++)  
      scanf("%d",&a[i]);  
    for(i=0;i<10;i++)  
      {for(j=10;j>i;j--)  
          if(a[j]<a[j-1])  
            {   t=a[j];a[j]=a[j-1];a[j-1]=t;}  
        }  
      for(i=0;i<10;i++)  
    printf("%d,",   a[i]);}  
   
  另外:  
  to:     duduhaha(三人行必有我师)    
  for(int   u=1;u<=10;u++)  
  这样不对.  
  应该for(int   u   =   0;   u   <   10;   u++)  
   
  这个没必要改,因为他定义的时候就是从1开始的。Top

6 楼cody416(學.net)回复于 2006-03-04 21:05:33 得分 2

编译过了,好像可以,你试试。  
  #include   "stdio.h"  
   
  main()  
  {  
        int   i,j,tmp,num[10];  
        printf("please   input   10   number:\n");  
        for(i=0;i<10;i++)  
                scanf("%d",&num[i]);  
        for(i=0;i<9;i++)  
        {  
                for(j=i+1;j<10;j++)  
                {  
        if(num[i]>num[j])  
        {  
                tmp=num[i];  
                num[i]=num[j];  
                num[j]=tmp;  
        }  
                }  
        }  
        printf("The   sorted   number   is:\n");  
        for(i=0;i<10;i++)  
                printf("   %d",num[i]);  
  }Top

7 楼Tangxiang(来,让我们一起跳舞吧。)回复于 2006-03-04 22:29:26 得分 0

呵呵   谢谢大家    
  知道自己错在哪里了  
  真的感谢大家Top

8 楼Tangxiang(来,让我们一起跳舞吧。)回复于 2006-03-04 22:33:54 得分 0

还有   我想问一下     怎样给你们分啊  
  Top

9 楼iambic()回复于 2006-03-05 12:38:23 得分 0

呵呵,每个人分点就行了。给我一分够了。Top

相关问题

  • 简单排序
  • 简单的排序问题
  • 简单的排序问题
  • 简单帖子排序
  • 排序的简单问题
  • 简单的难题,关于排序的
  • 简单问题:如何排序??
  • 简单排序问题,立马给分
  • 一个简单的排序问题
  • 简单问题:检索排序问题

关键词

  • num
  • temp
  • include

得分解答快速导航

  • 帖主:Tangxiang
  • llf_hust
  • duduhaha
  • ckp
  • iambic
  • wucunfu
  • cody416

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo