急求:单片机实验

急求:单片机实验,第1张

:

ORG 0030H

MOV 30H, #34H

MOV 31H, #56H

MOV 32H, #23H

MOV 33H, #90H

MOV 34H, #32H

MOV 35H, #68H

MOV 36H, #09H

MOV 37H, #75H

CALL SORT

SJMP $

;-----------------------------------------------------

SORT: ;最简短、高效的排序程序

MOV B, #7 ;第一轮排序时,比较7次

S1: MOV R0, #30H ;数据区的起始地址

MOV R7, B

CLR PSW5 ;清除"交换"标志位

S2: MOV A, @R0 ;取前一个数

INC R0

CLR C

SUBB A, @R0 ;减后一个数,前<后时,Cy=1

S3: JC S4 ;有借位时,不用交换,转移

MOV A, @R0 ;取后一个数,准备交换

DEC R0

XCH A, @R0 ;交换到前一个

INC R0

XCH A, @R0 ;交换到后一个

SETB PSW5 ;设定"交换"标志位

S4: DJNZ R7, S2 ;继续本轮比较

JNB PSW5, ENDS ;如本轮没有进行过交换,可提前结束

DJNZ B, S1 ;下一轮,比较次数少一次

ENDS:

RET

;-----------------------------------------------------

END

任何排序算法都涉及到被排序元素间的“比较” *** 作,排序算法根据元素比较的结果执行相应的元素移动 *** 作,因此,“比较”过程与“移动”过程是相互独立的,也就是说如何比较是可任意定义的,你的这个问题可以使用任意一种排序算法进行排序,唯一要求的是你必须额外提供一个比较函数,该比较函数中执行的是绝对值比较而不是真值比较,C语言的库函数

void qsort(void base, size_t num, size_t width, int(__cdeclcompare)(const void elem1, const void elem2));就可以完成你的任务,其中的参数compare就是一个执行比较 *** 作的函数指针。

int a=0; //正在处理的数下标,分组时的循环1

int b; //正在循环的数下标,分组时的循环2

int num[50]; //输入的数

int out[10][5]; //分好的数,out[0]为一组

//排序部分

while(a<=49)

{

for(b=0;b>=a&&b<=49;b++)

{

if(num[b]>=num[b+1])

{num[b]^=num[b+1],num[b+1]^=num[b],num[b]^=num[b+1];}; //两数互换

};

};

//分组部分:

for(a=0;a<=9;a++)

{

for(b=0;b<=4;b++)

{

out[a][b]=num[a10+b];

};

};

/输入部分和输出部分就不加入了,这个你应该会。排序部分用的是冒泡法。我手上暂时没现成的编译器,可能会有些错,不过大致应该是对的/

提供一个冒泡排序法,已通过编译,仅供参考~ #include<stdioh> #include<stringh> main() { int a[100],n,i,j,temp; printf("Input number of integers\n"); scanf("%d",&n); printf("Input integers in order\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n-1;i++) for(j=0;j<n-i-1;j++) if(a[j]>a[j+1]) { temp=a[j]; a[j]=a[j+1]; a[j+1]=temp; } for(i=n-1;i>=0;i--) { printf("%d",a[i]); printf(" "); } printf("\n"); }

以上就是关于急求:单片机实验全部的内容,包括:急求:单片机实验、C语言实验题 绝对值排序、用C语言编程,将50个实验数据从小到大排列,排完分为10组。请教大神赐教,谢谢!等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10081811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存