试用汇编语言编写程序,该程序具有如下菜单:
请输入选项(1~13): 待输入选项号后,输出所选择的选项功能描述
例如:输入1,则输出:选择排序。
C语言描述:
#include <stdio.h> // 函数声明 void selectionSort(); void bubbleSort(); void insertionSort(); void quickSort(); void heapSort(); void permutation(); void hanoi(); void primeRing(); void setElements(); void integerPartition(); void eightQueens(); void maze(); void binarySearch(); int main() { int option; // 显示菜单 printf("| [1] 选择排序 | [2] 冒泡排序 |\n"); printf("| [3] 插入排序 | [4] 快速排序 |\n"); printf("| [5] 堆排序 | [6] 全排列 |\n"); printf("| [7] 汉诺塔问题 | [8] 素数环 |\n"); printf("| [9] 插入排序 | [10] 判定集合元素 |\n"); printf("| [11] 整数拆分 | [12] 八皇后问题 |\n"); printf("| [13] 迷宫问题 | [14]二分查找 |\n"); printf("请输入选项(1~14):"); scanf("%d", &option); // 根据用户选择执行相应功能 switch(option) { case 1: selectionSort(); break; case 2: bubbleSort(); break; case 3: insertionSort(); break; case 4: quickSort(); break; case 5: heapSort(); break; case 6: permutation(); break; case 7: hanoi(); break; case 8: primeRing(); break; case 9: insertionSort(); break; case 10: setElements(); break; case 11: integerPartition(); break; case 12: eightQueens(); break; case 13: maze(); break; case 14: binarySearch(); break; default: printf("无效选项!\n"); } return 0; } // 下面是各个功能函数的实现,根据需要补充函数体 void selectionSort() { printf("选择排序\n"); } void bubbleSort() { printf("冒泡排序\n"); } void insertionSort() { printf("插入排序\n"); } void quickSort() { printf("快速排序\n"); } void heapSort() { printf("堆排序\n"); } void permutation() { printf("全排列\n"); } void hanoi() { printf("汉诺塔问题\n"); } void primeRing() { printf("素数环\n"); } void setElements() { printf("判定集合元素\n"); } void integerPartition() { printf("整数拆分\n"); } void eightQueens() { printf("八皇后问题\n"); } void maze() { printf("迷宫问题\n"); } void binarySearch() { printf("二分查找\n"); }
输出结果:
汇编语言:
include irvine32.inc .data menu db '[1] 选择排序 [2] 冒泡排序',0Dh,0Ah db '[3] 插入排序 [4] 快速排序',0Dh,0Ah db '[5] 堆排序 [6] 全排列',0Dh,0Ah db '[7] 汉诺塔问题 [8] 素数环',0Dh,0Ah db '[9] 整数素分解 [10] 判定集合元素',0Dh,0Ah db '[11] 整数拆分 [12] 八皇后问题',0Dh,0Ah db '[13] 迷宫问题 [14] 二分查找',0Dh,0Ah db '请输入选项(1~14):',0 strMsg1 db '选择排序',0 strMsg2 db '冒泡排序',0 strMsg3 db '插入排序',0 strMsg4 db '快速排序',0 strMsg5 db '堆排序',0 strMsg6 db '全排列',0 strMsg7 db '汉诺塔问题',0 strMsg8 db '素数环',0 strMsg9 db '整数素分解',0 strMsg10 db '判定集合元素',0 strMsg11 db '整数拆分',0 strMsg12 db '八皇后问题',0 strMsg13 db '迷宫问题',0 strMsg14 db '二分查找',0 funaddrs dd offset strMsg1 dd offset strMsg2 dd offset strMsg3 dd offset strMsg4 dd offset strMsg5 dd offset strMsg6 dd offset strMsg7 dd offset strMsg8 dd offset strMsg9 dd offset strMsg10 dd offset strMsg11 dd offset strMsg12 dd offset strMsg13 dd offset strMsg14 .code main proc mov edx,offset menu call writestring call readint cmp eax,1 jl err cmp eax,14 jg err sub eax,1 mov edx,funaddrs[4*eax] call writestring jmp final err: final: exit main endp end main