中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-07-31 23:39
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [讨论][探讨] 用批处理作趣味数学题 精华I 查看 36,423 回复 139
106 打印数字金字塔 发表于 2007-03-20 01:07 ·  中国 湖北 潜江 电信
高级用户
★★★
积分 894
发帖 411
注册 2007-02-17 12:15
19年会员
UID 79697
性别 男
状态 离线
如题: 用批处理显示

1
121
12321
........................
12345678987654321
禁止全部使用 echo 命令.
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


107 发表于 2007-03-20 01:39 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
试下以下代码?

@echo off
setlocal enabledelayedexpansion
set "space= "

for /l %%i in (1 1 9) do (
for /l %%a in (1 1 %%i) do (
set str1=!str1!%%a
set str2=%%a!str2!
set str=%space%!str1!!str2:~1!
)
echo !str:~%%i!
set str1=
set str2=
set str=
)
pause>nul
108 一共有多少苹果 发表于 2007-03-20 02:41 ·  中国 湖北 潜江 电信
高级用户
★★★
积分 894
发帖 411
注册 2007-02-17 12:15
19年会员
UID 79697
性别 男
状态 离线
这是个很简单的数学题. 妈妈买回一篓苹果, 老大拿走了1/3, 老二拿走了剩下的1/3, 老三又拿走了剩下的1/3, 这时还剩 8 个苹果, 一共有多少苹果?
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


109 打印 N 阶矩阵. 发表于 2007-03-20 02:53 ·  中国 湖北 潜江 电信
高级用户
★★★
积分 894
发帖 411
注册 2007-02-17 12:15
19年会员
UID 79697
性别 男
状态 离线
如题, N>=3, 可不用表格形显示. 如:

2 7 6

9 5 1

4 3 8
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


110 酷似百鸡问题 发表于 2007-03-20 03:08 ·  中国 湖北 潜江 电信
高级用户
★★★
积分 894
发帖 411
注册 2007-02-17 12:15
19年会员
UID 79697
性别 男
状态 离线
1. 36块砖, 36人搬, 男搬4, 女搬3, 两个小孩抬块砖. 男人,女人和小孩各有多少人?

2. 百钱买百牛, 公牛3贯, 母牛4贯,小牛600文, 公牛,母牛和小牛各有多少头?(一贯=1000文)
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


111 古代问题(九章算术,七, 盈不足), 求人数和羊价. 发表于 2007-03-20 03:52 ·  中国 湖北 潜江 电信
高级用户
★★★
积分 894
发帖 411
注册 2007-02-17 12:15
19年会员
UID 79697
性别 男
状态 离线
有一群人一起买羊, 若每人出 5 两, 还差 45 两, 若每人出 七 两, 还差 3 两, 问有多少买羊, 羊的价钱是多少.
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


112 发表于 2007-03-20 04:54 ·  中国 广东 清远 联通
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
Originally posted by 6622186 at 2007-3-20 02:41 AM:
这是个很简单的数学题. 妈妈买回一篓苹果, 老大拿走了1/3, 老二拿走了剩下的1/3, 老三又拿走了剩下的1/3, 这时还剩 8 个苹果, 一共有多少苹果?


@echo off
setlocal enabledelayedexpansion

for /l %%i in (1 1 10000) do (
title 正在检测 %%i ....
set /a tmp=%%i*8/27
if !tmp! EQU 8 echo %%i && goto :exit
)
:exit
pause>nul

其实,以上的代码还可以简单的(根据数学原理),简单到不好意思(没什么代码可以写了。)
113 发表于 2007-03-20 11:34 ·  中国 湖北 黄冈 电信
高级用户
★★★
积分 894
发帖 411
注册 2007-02-17 12:15
19年会员
UID 79697
性别 男
状态 离线
这样就可以计算大于2^31 的数字, 我以为不可能, 不过代码不太懂. 看到 ! 就头疼.
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


114 发表于 2007-03-20 18:29 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
112楼

你是不是先算了再写成这样的?

你的那句"set/a tem=%%i*8/27&np if !temp! equ 8 echo %%i....." 不就是说%%i是27 吗?

那还算什么?
115 发表于 2007-03-20 18:38 ·  中国 北京 中国科学院研究生院
银牌会员
★★★
积分 1,187
发帖 555
注册 2006-12-21 07:35
19年会员
UID 74129
性别 男
状态 离线
完整的解法是这样的:

设共有Y。
第一次取了它的1/3, 留了2/3*Y;
第二次又取了剩下的1/3,就留了2/3*(2/3*Y);
第三次再取第二次取后剩下的1/3,只留下2/3*(2/3*(2/3*Y)).

hehe
这就是说:2/3*(2/3*(2/3*Y))=8
那么Y就是27。
116 发表于 2007-03-20 22:21 ·  中国 广东 广州 白云区 电信
高级用户
★★
积分 846
发帖 247
注册 2006-10-27 12:03
19年会员
UID 68504
性别 男
来自 湖南==》广东
状态 离线
Originally posted by scriptor at 2007-3-20 06:29 PM:
112楼

你是不是先算了再写成这样的?

你的那句"set/a tem=%%i*8/27&np if !temp! equ 8 echo %%i....." 不就是说%%i是27 吗?

那还算什么?

如果说,要完全模拟用程序来解决的话,似乎更简单.根据题目的意思,这个数一定是27的倍数(它可以连续被3除3次).所以代码可以写成:

for /l %%i (27 27 100000) do (
....)

似乎是更简单了,一下就可以得出是 27.
117 发表于 2007-03-21 02:29 ·  中国 广东 电信
荣誉版主
★★★★
batch fan
积分 5,226
发帖 1,737
注册 2006-03-10 00:38
20年会员
UID 51697
来自 成都
状态 离线
Originally posted by 6622186 at 2007-3-19 12:07:
如题: 用批处理显示

1
121
12321
........................
12345678987654321
禁止全部使用 echo 命令.

  临走前跟个代码帖:

@echo off
setlocal enabledelayedexpansion
for /l %%i in (1,1,9) do (
for /l %%j in (9,-1,%%i) do set /p= <nul
for /l %%k in (1,1,%%i) do set /p=%%k<nul
set /a num=%%i-1
for /l %%l in (!num!,-1,1) do set /p=%%l<nul
echo.
)
pause
尺有所短,寸有所长,学好CMD没商量。
考虑问题复杂化,解决问题简洁化。
118 #25题,小鸡21只,小狗58,“借花献佛“ 发表于 2007-06-13 23:17 ·  中国 浙江 宁波 慈溪市 电信
新手上路
积分 5
发帖 3
注册 2007-06-13 14:09
19年会员
UID 91182
性别 男
状态 离线
@echo off
echo.
echo 小鸡、小狗七十九,二百只脚在地上走,想一想,算一算,多少只鸡?多少只狗?
echo.
setlocal enabledelayedexpansion
set /a x=79
set /a y=200
for /l %%i in (1,1,79) do (
for /l %%j in (1,1,50) do (

set /a a=2*%%i
set /a b=4*%%j
set /a sum1=%%i+%%j
set /a sum2=!a!+!b!
if !sum1! equ !x! if !sum2! equ !y! echo %%i %%j
)
)
pause
119 第26# 大和尚20小和尚80 发表于 2007-06-13 23:28 ·  中国 浙江 宁波 慈溪市 电信
新手上路
积分 5
发帖 3
注册 2007-06-13 14:09
19年会员
UID 91182
性别 男
状态 离线
@echo off
echo.
echo 百个和尚百个粑,大和尚每人粑四个,小和尚四人一个粑,大、小和尚各有几?
echo.
setlocal enabledelayedexpansion
set /a x=100
for /l %%i in (1,1,25) do (
for /l %%j in (1,1,100) do (

set /a a=4*%%i
set /a b=%%j/4
set /a sum1=%%i+%%j
set /a sum2=!a!+!b!
if !sum1! equ !x! if !sum2! equ !x! echo "大和尚" %%i "小和尚" %%j
)
)
pause
120 语言无界线 发表于 2007-06-27 16:15 ·  中国 北京 联通
新手上路
积分 4
发帖 2
注册 2006-11-27 07:59
19年会员
UID 71862
性别 男
状态 离线
确实是.
论坛跳转: