1691322619 发表于 2022-9-6 22:34:31

c排序

想给数组拍个顺序,但不知道哪里错了,希望有大佬指点一下。



#include<stdio.h>
int main()
{
        int a = {1,3,2,8,6,4,7,5,9,0};
        inti=0,s,j,h;
        for (h = 0; h < 10; h++)
        {
                for (i = 0, j = 1; j < 10; )
                {
                        s = &a - &a;
                        if (s > 0)
                                j++;
                        else
                                i = j; j++;
                       
                }printf("sun%d\n", a);
        }
打印结果是10列的sun0

ba21 发表于 2022-9-6 22:39:17

你要怎么个排序法?

1691322619 发表于 2022-9-6 22:40:02

ba21 发表于 2022-9-6 22:39
你要怎么个排序法?

大到小的排序

ba21 发表于 2022-9-6 22:58:50

1691322619 发表于 2022-9-6 22:40
大到小的排序

#include<stdio.h>
int main()
{
      int a = {1,3,2,8,6,4,7,5,9,0};
      inti=0,s,j,h, temp;
      for (h = 0; h < 10; h++)
      {
                for (i = 0, j = 1; j < 10; )
                {
                        s = a - a; // 判断大小,可用2数相减的结果s > < = 0来确定。(,你用地址来操作不知道你何意)
                        // 既然是排序那就少不了数据交换
                                                if (s < 0)
                                                {
                                                        temp = a;
                                                        a = a;
                                                        a=temp;
                              
                                                }
                                               
                                                i = j;
                                                j++;
                     
                }
                       
      }

                // 最后打印排序好的数据
               for (h = 0; h < 10; h++)
      {

                        printf("%d\n", a);
                }
}

jackz007 发表于 2022-9-6 23:00:08

本帖最后由 jackz007 于 2022-9-6 23:04 编辑

1691322619 发表于 2022-9-6 22:40
大到小的排序

#include <stdio.h>

void swap(int * a , int * b)
{
      int t                                                         ;
      t = * a                                                       ;
      * a = * b                                                   ;
      * b = t                                                       ;
}

int main(void)
{
      int a = {1,3,2,8,6,4,7,5,9,0} , i , j                     ;
      for(i = 0 ; i < 5 ; i ++) {
                if(a < a) swap(& a , & a)         ;
                for(j = i + 1 ; j < 9 - i ; j ++) {
                        if(a > a) swap(& a , & a)         ;
                        if(a < a) swap(& a , & a) ;
                }
      }
      printf("%d" , a)                                           ;
      for(i = 1 ; i < 10 ; i ++) printf(" %d" , a)               ;
      printf("\n")                                                ;
}
      编译、运行实况:
D:\\C>g++ -o x x.c

D:\\C>x
9 8 7 6 5 4 3 2 1 0

D:\\C>

1691322619 发表于 2022-9-7 10:16:24

ba21 发表于 2022-9-6 22:58


感谢,感谢,主要晚上练的时候,没地址好像没用,就那样了。谢谢解惑

1691322619 发表于 2022-9-7 10:18:40

jackz007 发表于 2022-9-6 23:00
编译、运行实况:

有好几个代码看不懂,但谢谢了{:5_95:}

AiXueXiDeDai 发表于 2022-9-8 10:18:47

s = &a - &a;
编写代码的时候需要注意一下细节哦,a数组前面不需要加地址符&

1691322619 发表于 2022-9-17 14:31:57

AiXueXiDeDai 发表于 2022-9-8 10:18
s = &a - &a;
编写代码的时候需要注意一下细节哦,a数组前面不需要加地址符&

好的,感谢,刚学指针,有点摸不着头脑
页: [1]
查看完整版本: c排序