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
你要怎么个排序法?
大到小的排序
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: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> ba21 发表于 2022-9-6 22:58
感谢,感谢,主要晚上练的时候,没地址好像没用,就那样了。谢谢解惑 jackz007 发表于 2022-9-6 23:00
编译、运行实况:
有好几个代码看不懂,但谢谢了{:5_95:} s = &a - &a;
编写代码的时候需要注意一下细节哦,a数组前面不需要加地址符& AiXueXiDeDai 发表于 2022-9-8 10:18
s = &a - &a;
编写代码的时候需要注意一下细节哦,a数组前面不需要加地址符&
好的,感谢,刚学指针,有点摸不着头脑
页:
[1]