1樓:_超人不會肥
; 程式功能:每隔約1秒鐘在螢幕右上角顯示一次當前的時間(時:分:秒)
; 按任意鍵結束本程式的執行,但是在螢幕右上角依然看到不停變化的時間
; 涉及的知識點:
; (1) 8號中斷
; (2) 擴充8號中斷的中斷處理程式
; (3) 中斷處理程式駐留在記憶體
; (4) 獲取系統當前時間
; (5) 在螢幕指定位置顯示串
; 參考資料:教材中附錄有關中斷的內容
; cmos資料的讀寫;
.386
stack segment use16 stack
db 100 dup (0)
stack ends
code segment use16
assume cs:code,ds:code,ss:stack
count db 18
hour db ?, ?, ':'
min db ?, ?, ':'
sec db ?, ?
buf_len = $ - hour
cursor dw ?
old_int dw ?, ?
message db 0dh,0ah,'press any key to return',0dh,0ah,0dh,0ah,'$'
; 擴充的 8號中斷處理程式
new08h proc far
pushf
call dword ptr cs:old_int
dec cs:count
jz disp
iret
disp: mov cs:count,18
stipusha
push ds
push es
mov ax, cs
mov ds, ax
mov es, ax
call get_time
mov bh, 0
mov ah, 3
int 10h
mov cursor, dx
mov bp, offset hour
mov bh, 0
mov dh, 0
mov dl, 80 - buf_len
mov bl, 07h
mov cx, buf_len
mov al, 0
mov ah, 13h
int 10h
mov bh, 0
mov dx, cursor
mov ah, 2
int 10h
pop es
pop ds
popa
iret
new08h endp
; 取時間
; 參考資料,cmos資料的讀寫
get_time proc
mov al, 4
out 70h, al
jmp $+2
in al, 71h
mov ah,al
and al,0fh
shr ah, 4
add ax, 3030h
xchg ah, al
mov word ptr hour, ax
mov al, 2
out 70h, al
jmp $+2
in al, 71h
mov ah, al
and al, 0fh
shr ah, 4
add ax, 3030h
xchg ah, al
mov word ptr min, ax
mov al, 0
out 70h, al
jmp $+2
in al, 71h
mov ah, al
and al, 0fh
shr ah, 4
add ax, 3030h
xchg ah, al
mov word ptr sec, ax
retget_time endp
; 延時程式段
delay proc
push ecx
mov ecx,0
l1: inc ecx
cmp ecx, 04000000h
jb l1
pop ecx
retdelay endp
; 主程式開始
begin: ; 要顯示 message串中的內容,
; 但該變數又定義在**段中,能否用9號功能呼叫呢?
push cs
pop ds
lea dx, message
mov ah, 9
int 21h
; 獲取原 8 號中斷的中斷處理程式的入口位址
mov ax, 3508h
int 21h
mov old_int, bx
mov old_int+2, es
; 設定新的 8號中斷的中斷處理程式的入口位址
mov dx, offset new08h
mov ax, 2508h
int 21h
; 希望該程式在執行過程中,能看到 8號中斷產生後的執行效果
; 因而,緩慢(即代有延時功能)的顯示一些字元。
mov dl,30h
loop_disp:
cmp dl, 100
jnz continue
mov al, 30h
continue:
call delay
mov ah, 2
int 21h
inc dl
; 判斷有無擊鍵,無則繼續。有按鍵中止
mov ah, 0bh
int 21h
cmp al, 0
jz loop_disp
exit:
; 原來的程式是將中斷處理程式的入口位址復原
; lds dx, dword ptr old_int
; mov ax, 2508h
; int 21h
; mov ah, 4ch
; 將新的中斷處理程式駐留記憶體
mov dx, offset delay+14
mov cl, 4
shr dx, cl
add dx, 10h
add dx, 70h
mov al, 0
mov ah, 31h
int 21h
code ends
end begin
2樓:匿名使用者
頂你,支援樓主!有意思
這是一道資料結構的題:試寫乙個判別給定二叉樹是否為二叉排序樹的演算法,設此二叉樹以二叉鍊表作儲存結構
3樓:況玉枝將培
遞迴方法
void
alvtree(bittree
*t)else
return0;}
else
if(t->lchild!=null&&t->rchild==null)
else
if(t->rchild!=null&&t->lchild==null)
}自己寫的情況應該都考慮到了,採用的是遞迴演算法。
4樓:丹建設寧煙
intissearchtree(constbtnode
*t)else
if((t->rchild)
&&!(t->lchild))
else
}已經上機驗證成功,樓上的寫的太隨意了吧,各種情況都需要考慮地。
如何判定二叉樹是否為二叉排序樹
5樓:
typedef struct bitnodebitnode,*bitree; //二叉樹節點及節點指標型別void sortbitree(bitree root) //判斷是否是二叉排序樹
if(top) }
for(int i=0;idata>=t[i+1]->data)printf("是二叉排序樹\n");}
判斷給定的二叉樹是否為二叉排序樹
6樓:木戀曉丶
思路:若它的左子樹不空,則左子樹上所有結點的值均小於它的根結點的值;
若它的右子樹不空,則右子樹上所有結點的值均大於它的根結點的值;
它的左、右子樹也分別為二叉排序樹。
遞迴遍歷就可以了,反正就是左孩子的key比根節點的key小,右孩子的key比根節點的key大,一旦有不滿足條件的就判定不是。
完整的**如下:
#include "stdio.h"
#include "stdlib.h"
typedef struct nodebitree;bitree *b[100];
bitree *createbitree()for(i=1;i<=num;i++)}return t;}int issearchtree(const bitree *t) //遞迴遍歷二叉樹是否為二叉排序樹else if((t-rchild) && !(t-lchild)) //只有右子樹情況else //左右子樹全有情況}int main(void){int flag=0;
bitree *tree;
tree=createbitree();
flag=issearchtree(tree);if(flag)printf("這棵樹是二叉排序樹!/n");elseprintf("這棵樹不是二叉排序樹!/n");
判斷一棵二叉樹是否為二叉排序樹 ( c++,資料結構)
7樓:匿名使用者
struct node
node*l; node*r;
static bool isorderedbtree(node*n, int (*cmp_func)(node*,node*))
if (!isorderedbtree(n->l, cmp_func))
}if (n->r !=0)
if (!isorderedbtree(n->r, cmp_func))
}return true;
}static bool isorderedbtree(node* n, int (*cmp_func)(node*, node*))
q.push_back(n->l);
}if (n->r != 0)
q.push_back(n->r);}}
return true;}};
判別二叉樹是否為二叉排序樹的完整程式 5
8樓:菅石
給你乙個測試**。
vc下通過。
#include
#include
struct node
int data;
node *left; //左孩子結點
node *right; //右孩子結點
void inorder(node *root) //中序遍歷,符合公升序輸出
在排序樹中插入元素
};int main()
printf("\n樹公升序輸出:");
x->inorder(x);
printf("\n");
return 0;
}很明顯地看到,當一棵二叉排序樹以中序遍歷輸出時,是輸出一組遞增序列。
這樣就可以知道,只要當一棵樹的中序遍歷輸出不是一組遞增序列時,就可判斷其不是一棵二叉排序樹。
用C語言編寫五子棋小遊戲,用C語言寫乙個五子棋遊戲
你好!現在是16點10分,還有兩個小時20分鐘。你是需要dos下的五子棋嗎?然後輸入座標下棋,是這樣的嗎。用c語言寫乙個五子棋遊戲 天拉。我也正在寫五子棋,想不出怎麼才這麼點 啊?鬱悶。我也研究下,不知道這五子棋能發揮出什麼樣的下棋水準?求乙個用c語言編寫五子棋遊戲的全部 使用語言 c 使用工具 v...