求助:在首地址为TABLE的数组中存放着200个16位有符号数,以补码表示,找出最大数,最小数,出现次数最多的数以及该数出现的次数,依次存
在首地址为TABLE的数组中存放着200个16位有符号数,以补码表示,找出最大数,最小数,出现次数最多的数以及该数出现的次数,依次存放于以RESULT开始的单元内。
请帮忙写一下程序,急~,谢谢~!
问题点数:50、回复次数:5Top
1 楼efaneda()回复于 2006-03-29 18:48:31 得分 0
十万火急
up~!Top
2 楼icbm(雪狼)回复于 2006-03-30 17:50:14 得分 50
/* Turbo C 2.0 编译调试通过 */
#include <stdio.h>
int table[200]={-1,2,3,4,4,4,4,4,6,8}; /* 数组初始化,略 */
int result[4];
int main()
{
int max, min, num, time;
int i,j,t,f;
/*--------------------------------------------*/
/* 查找最大的数及最小的数 */
max=min=table[0];
for (i=1; i<200; i++)
{
if (table[i]>max)
{
max=table[i];
}
else if (table[i]<min)
{
min=table[i];
}
}
/*--------------------------------------------*/
/* 查找出现次数最多的数,及出现的次数 */
time=0;
for (i=0; i<200; i++)
{
f=0;
for (t=0; t<i; t++)
{
if (table[t] == table[i]) /* 此数已经检查过 */
{
f++;
break;
}
}
if (f==0)
{
t=0;
for (j=i; j<200; j++)
{
if (table[i] == table[j])
{
t++;
}
}
if (t>time)
{
time=t;
num=table[i];
}
}
}
/*--------------------------------------------*/
/* 保存结果 */
result[0]=max;
result[1]=min;
result[2]=num;
result[3]=time;
/* 输出结果 */
/*
printf("%d, %d, %d, %d\n", result[0], result[1], result[2], result[3]);
*/
/*--------------------------------------------*/
return 0;
}
Top
3 楼icbm(雪狼)回复于 2006-03-30 18:29:10 得分 0
;--------------------------
;Microsoft (R) Macro Assembler Version 6.11 编译、调试通过
;--------------------------
data segment
Table dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
dw 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9
dw 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,-1,-1
Result dw 0,0,0,0
data ends
code segment
assume cs:code,ds:data
start:
mov ax, data
mov ds, ax
;-------------------------------
mov si, offset Table
mov ax, [si] ; ax存放最大数
mov bx, [si] ; bx存放最小数
mov cx, 199 ; 循环199次
@C001:
inc si
inc si
mov dx, [si]
cmp dx, ax
jg @C002
cmp dx, bx
jl @C003
jmp @C004
@C002:
mov ax, dx
jmp @C004
@C003:
mov bx, dx
@C004:
loop @C001
; 保存结果
mov Result, ax
mov Result+2, bx
;-------------------------------
mov si, offset Table
mov cx, 200
@C005:
mov ax, [si]
xor dx, dx
;-------------------------------
push cx
mov di, offset Table
mov cx, 200
@C006:
mov bx, [di]
cmp ax, bx
jnz @C007
inc dx
@C007:
inc di
inc di
loop @C006
pop cx
;-------------------------------
cmp dx, Result+6
jle @C008
mov Result+4, ax
mov Result+6, dx
@C008:
inc si
inc si
loop @C005
;-------------------------------
mov ax,4c00h
int 21h
code ends
end start
; 最后结果 Result 9, -1, 5, 36Top
4 楼wangshuaiws(宇智波.鼬)回复于 2006-04-04 18:38:31 得分 0
我并不是楼主,但我谢谢雪狼,可以的话,留下qq号,谢谢!Top
5 楼icbm(雪狼)回复于 2006-04-05 16:44:48 得分 0
CSDN的显示真糟糕!所有的TAB键都被忽略掉了,这对显示程序可真是个大问题。每次忘了把TAB字符换成空格的时候,格式就全乱了!
QQ:7019717
不过上得不多。如要加好友,请说明交流编程技术,免得被无聊人打挠。
Top




