Zhlw.com - 中华龙网

站长资讯通告:
搜索: 您的位置中华龙网 > 计算机网络 > 认证考试 > 等级考试 > 文章列表

万年历问题的Qbasic解决方法

作者:bear  来源:转载  发布时间:2006-3-28 12:07:45

   

万年历问题的Qbasic解决方法


    10 DIM C(12), a$(6)

    20 INPUT “YEAR”; Y

    30 X = Y: V = 28

    40 IF Y < 0 THEN 20

    50 IF Y = 0 THEN END

    60 S = X - 1 + INT((X - 1) / 4) - INT((X - 1) / 100) + INT((X - 1) / 400)

    70 C(0) = X

    80 S = S + 1

    90 FOR I = 1 TO 12

    100 READ K

    110 IF I <> 3 THEN 190

    120 IF X MOD 4 = 0 THEN 140

    130 GOTO 190

    140 IF X MOD 100 = 0 THEN 160

    150 GOTO 180

    160 IF X MOD 400 = 0 THEN 180

    170 GOTO 190

    180 K = K + 1: V = 29

    190 S = S + K

    200 M = S MOD 7

    210 IF M = 0 THEN C(I) = 6 ELSE C(I) = M - 1

    220 NEXT

    230 FOR I = 0 TO 6

    240 READ a$(I)

    250 NEXT

    260 L1 = 2: L2 = 38: GOSUB 610

    270 PRINT TAB(39); C(0);

    280 L1 = 45: L2 = 79: GOSUB 610

    290 GOSUB 640: GOSUB 650

    300 FOR J = 0 TO 3

    310 GOSUB 640

    320 FOR I = 0 TO 2

    330 PRINT TAB(15 + I * 25); “(”; J * 3 + I + 1; “)”;

    340 NEXT

    350 GOSUB 650: GOSUB 640: GOSUB 650: GOSUB 640

    360 GOSUB 660: GOSUB 650: GOSUB 640: GOSUB 650

    370 GOSUB 400

    380 NEXT J

    390 L1 = 2: L2 = 79: GOSUB 610: PRINT : RESTORE 700: GOTO 20

    400 X1 = 1: X2 = 1: X3 = 1

    410 FOR L = 0 TO 5: GOSUB 640

    420 FOR I = 0 TO 2

    430 D = J * 3 + I + 1

    440 IF D = 2 THEN 480 ELSE IF D = 4 THEN 470

    450 IF D = 6 THEN 470 ELSE IF D = 9 THEN 470

    460 IF D = 11 THEN 470 ELSE W = 31: GOTO 490

    470 W = 30: GOTO 490

    480 W = V

   490 IF I = 0 THEN Z = X1 ELSE IF I = 1 THEN Z = X2 ELSE Z = X3

    500 M = (C(D) + Z) MOD 7

    510 FOR N = M TO 6

    520 IF Z > W THEN 580

    530 IF Z < 10 THEN PRINT TAB(N * 3 + 6 + 25 * I); : PRINT USING “##”; Z; : GOTO 550

    540 PRINT TAB(N * 3 + 5 + I * 25); : PRINT USING “###”; Z;

    550 Z = Z + 1

    560 IF I = 0 THEN X1 = Z ELSE IF I = 1 THEN X2 = Z ELSE X3 = Z

    570 NEXT N

    580 NEXT I: GOSUB 650

    590 NEXT L: GOSUB 640: GOSUB 650

    600 RETURN

    610 FOR U = L1 TO L2

    620 PRINT TAB(U); “*”;

    630 NEXT: RETURN

    640 L1 = 2: L2 = 2: GOSUB 610: RETURN

    650 L1 = 79: L2 = 79: GOSUB 610: RETURN

    660 FOR I = 0 TO 2

    670 FOR Z = 0 TO 6

    680 PRINT TAB(3 * Z + 6 + I * 25); : PRINT USING “\\”; a$(Z);

    690 NEXT: NEXT: RETURN

    700 DATA 0,31,28,31,30,31,30,31,31,30,31,30

    710 DATA “SU”,“MO”,“TU”,“WE”,“TH”,“FR”,“SA”

        用户名: 验证码: 验证码,看不清楚?请点击刷新验证码 (注“”为必填内容。)


文章评论: [ 查看全部 ] 网友评论
关于本站 - 网站帮助 - 广告合作 - 友情连接 - 网站地图