易语言采用循环算法求N阶幻方使其在任意一个方向上的数求和相等。
求N阶幻方,幻方的元素都是从1到n的整数,且每数出现且只出现一次,使其在任意一个方向上的数求和相等,并显示。利用循环求解。
程序集变量
.版本 2 .程序集 启动窗口程序集 .程序集变量 幻方阶数, 整数型 .程序集变量 幻方数组, 整数型, , "0" .程序集变量 结果字符串, 文本型
求幻方
.版本 2 .子程序 求幻方 .局部变量 甲标, 整数型 .局部变量 乙标, 整数型 .局部变量 试数甲, 整数型 .局部变量 试数乙, 整数型 .局部变量 变子, 整数型 .局部变量 逻辑, 逻辑型 重定义数组 (幻方数组, 假, 幻方阶数 + 1, 幻方阶数 + 1) .变量循环首 (1, 幻方阶数, 1, 甲标) .变量循环首 (1, 幻方阶数, 1, 乙标) ' 幻方数组清零 幻方数组 [甲标] [乙标] = 0 .变量循环尾 () .变量循环尾 () 甲标 = 0 乙标 = 幻方阶数 ÷ 2 变子 = 1 幻方数组 [甲标 + 1] [乙标 + 1] = 变子 变子 = 变子 + 1 .判断循环首 (变子 ≤ 幻方阶数 × 幻方阶数) 试数甲 = 甲标 - 1 试数乙 = 乙标 - 1 .如果真 (试数甲 = -1) ' 从新生成试数甲 试数甲 = 试数甲 + 幻方阶数 .如果真结束 .如果真 (试数乙 = -1) ' 从新生成试数乙 试数乙 = 试数乙 + 幻方阶数 .如果真结束 逻辑 = 试数甲 = -1 且 试数乙 = -1 .如果 (幻方数组 [试数甲 + 1] [试数乙 + 1] ≠ 0 或 逻辑) ' 自增1 甲标 = 甲标 + 1 .否则 甲标 = 试数甲 乙标 = 试数乙 .如果结束 幻方数组 [甲标 + 1] [乙标 + 1] = 变子 变子 = 变子 + 1 .判断循环尾 () .变量循环首 (0, 幻方阶数 - 1, 1, 甲标) .变量循环首 (0, 幻方阶数 - 1, 1, 乙标) 结果字符串 = 结果字符串 + 到文本 (幻方数组 [甲标 + 1] [乙标 + 1]) + “ , ” .变量循环尾 () 结果字符串 = 结果字符串 + #换行符 .变量循环尾 ()
执行按钮
界面两个编辑框,一个输入幻方阶数,一个用来多行显示。
.版本 2 .子程序 _计算图形按钮_被单击 幻方阶数 = 到数值 (阶数编辑框.内容) 结果字符串 = “” ' 清空 结果编辑框.内容 = “” ' 清空 .如果 (幻方阶数 ≤ 0 或 幻方阶数 > 50) 信息框 (“输入错误!”, 0, ) .否则 求幻方 () 结果编辑框.内容 = 结果字符串 .如果结束