回首往昔,初学编程那会写过的两段愚蠢代码

一、关于判断两个整数是否能整除的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;
 }   

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

紫郢剑侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值