一、关于判断两个整数是否能整除的GW BASIC创意代码
记得上大学时第一个编程语言是BASIC,当时Visual Basic还没出世,QBASIC虽然已经在1991年随MS-DOS5.0推出了,但我们使用的还是 GW-BASIC, 使用的教材是谭浩强、田淑清编著的《BASIC语言》。
有一次的作业是判断一个数是否能被另一个数整除。
当时对BASIC的取模运算(运算符是MOD)不是很熟悉,但BASIC有 除法运算(运算符是 /)和整除运算(运算符是 \),于是我就编写了下面的代码:
input " Please enter two integer: " ; a, b
if a/b = a\b then
print a;" is divisible by ";b
else
print a;" isn't divisible by ";b
记得程序运行时的输出结果是正确的。
关于GW-BASIC语言名称里的“GW”的含义,有几种说法。Greg Whitten是微软早期的一名员工,他说,比尔·盖茨选择了GW-BASIC这个名字。Whitten将其称为Gee-Whiz BASIC,并不确定盖茨是否以他的名字命名了该程序。Microsoft Press的Microsoft用户手册也使用此名称来指代它。它也可能被昵称为Gee-Whiz,因为它有大量的图形命令。其它说法还有“图形和视窗”(graph and windows)、“盖茨-威廉”(微软当时的总裁)或“盖茨-惠顿”(该程序的两个主要设计者)。
二、用数组解决约瑟夫环问题C语言代码
约瑟夫环问题的具体描述是:设有编号为1,2,……,n的n个(n>0)个人围成一个圈,从第1个人开始报数,报到m时停止报数,报m的人出圈,才从他的下一个人起重新报数,报到m时停止报数,报m的出圈,……,如此下去,知道剩余1个人为止。当任意给定n和m后,设计算法求n个人出圈的次序。
这是《数据结构》课程里的经典问题了。使用数组来实现的话,最快的是使用取余算法得出圈的数组元素下标。不过我当时写的代码是真是一个个数了……
#include <stdio.h>
#include <string.h>
int main()
{
int m = 3;
int n = 7;//数组长度
int a[7] = {1,2,3,4,5,6,7};
int i = 0;
int j;
int k;
printf("出圈顺序为:");
while (n > 1)
{
//数数
for (k=0; k < m; k++)
{
if (i == n)
{
i = 0;
}
else
{
i++;
}
}
//输出出列的数字
printf("%d ",a[i]);
//数组元素前移
for (j = i+1; j < n; j++)
{
a[j-1] = a[j];
}
n--; //数组长度-1
if (i == n)
{
i = 0;
}
}
//输出出列的数字
printf("%d ",a[i]);
return 0;
}