[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

【试卷】自编批处理题目试卷,难度中

大家自己做下哈,记得要按要求做。沙发有答案,自己评分,看一下自己出的难度如何。

下面是选择题部分:
一、每小题5分,10小题,共50分
二、答题过程中禁止打开一切关于批处理的资料,闭卷作答

1、下列代码中,能完成打开批处理自身的是:
A、start "%0"
B、start "" "%0"
C、start "" "%~f0"
D、start "" %~dpnx0

2、有如下一批处理:
@set /p a=Type:>a.txt
运行批处理后,输入abc并回车,则下面对结果预测正确的是:
A、会产生大小为3字节的a.txt,内容为abc
B、会产生大小为5字节的a.txt,内容为abc及一新行
C、会产生大小为5字节的a.txt,内容为Type:
D、会产生大小为7字节的a.txt,内容为Type:及一新行

3、下列代码中,能把a.txt文件的第一行内容赋值给变量a的是(不讨论特殊字符过滤):
A、for /f %%a in (a.txt) do set a=%%a
B、for /f "tokens=*" %%a in (a.txt) do set a=%%a
C、set /p a=<a.txt
D、type a.txt|set /p a=

4、下列代码中,与echo 123执行效果相同的是:
A、set /p a=123<nul
B、echo 123>>b.txt&type b.txt
C、set a=123&echo %a%
D、echo 123|findstr .

5、下列代码中,能实现将变量a的值随机设置为1~100之间的是:
A、set a=%random%%%100+1
B、set /a a=%random%%%100
C、set /a a=%random%%%99+1
D、set /a a=%random%%%100+1

6、下列代码中,能实现交换变量a与变量b的内容的是:
A、set "c=%a%"&set "a=%b%"&set "b=%c%"
B、set "a=%b%"&set "b=%a%"
C、echo %a%>va.txt&echo %b%>vb.txt&set /p a=<vb.txt&set /p b=<va.txt
D、echo "%a%">va.txt&echo "%b%">vb.txt&set /p a=<vb.txt&set /p b=<va.txt

7、有如下一批处理:
@echo off
set a=0
set b=0
for /l %%a in (1,1,5) do (
set /a a+=%%a
set /a b+=a
)
echo a=%a%,b=%b%
pause>nul
运行批处理后,则下面对结果预测正确的是:
A、显示“a=5,b=5”
B、显示“a=5,b=15”
C、显示“a=15,b=15”
D、显示“a=15,b=35”

8、有如下一批处理:
@echo off
set var=a
set a=b
call echo %%%%%var%%%%%
pause
则对运行结果预测正确的是:
A、显示“%%b%%”
B、显示“%a%”
C、显示“%b%”
D、显示“b”

9、两个冒号(即“::”)可以达到注释的效果。则下列说法正确的是:
A、::是一条命令,但它不输出输出流及错误流
B、::是系统定义的用法,在系统批处理中也有它的踪影
C、::其实被解析为一个标签,但goto不能跳转到:开头的标签,利用此漏洞达到了注释的效果
D、::其实被解析为一个标签,利用了goto的漏洞达到了效果

10、代码“echo a”的完整形式是:
A、echo a 1>con
B、echo a 1>con 2>nul
C、echo a 0>nul 1>con 2>nul
D、echo a 1>con 2>con

下面是简答题部分:
一、每小题10分,1小题,共10分
二、答题过程中禁止打开一切关于批处理的资料,闭卷作答

1、请简要概述在批处理的书写中,多行书写和多行用连接符连接的区别所在




下面是批处理编写部分:
一、每小题20分,2小题,共40分
二、答题过程中仅允许用记事本编辑批处理并做测试,禁止打开一切关于批处理的资料

1、请编写一批处理,对于用户输入的任何字串,都能原封不动地显示出来
最终效果:打开批处理,提示用户输入,用户输入完成后,将用户输入的内容一字不漏不加地显示出来,暂停并推出批处理



2、请编写一批处理,实现整数计算器的功能。
最终效果:当用户输入 变量=数字 的时候,能将变量的值设置为数字
当用户输入表达式的时候,能计算出表达式的值并显示结果。表达式支持用户设置的变量以及上次运算的结果变量参与计算。(暂不讨论特殊字符)
5

评分人数

下面是答案

拖拽信息框可以显示

答案错误的敬请提出,以免误导他人!

选择题:
1~5 CCCDD 2~10 BDBDD

简答题:
得分点概要:
1、有区别的(1分)
2、用&连接会导致set的延迟,解决则需开启变量延迟并用!代替%在扩住变量(2分)
3、用&&连接,当前一条命令执行不成功时后面的命令将不会执行(2分)
4、用|连接时,上一条命令的stdout输出会作下一条命令的stdin输入(1分)
5、用连接符连接时,:做标签以及::做注释会失效并导致下面的命令不执行(2分)
6、在for和if用括号包括的子块中,除了标签及注释,用连接符连接和换行并无明显区别(2分)

编写题:
1、
思路一:使用set/p =^内容<nul,每个字符输出一次。难点在于判断下个字符是否为空(用if判断时可能因特殊字符导致出错退出)
思路二:使用set的替换功能,把变量中的&替换成^&等,再用echo输出时会进行转义。难点在于找出所有特殊符号
范例(思路二):
@echo off
set /p a=请输入:
set "a=%a:^=^^%"
set "a=%a:&=^&%"
set "a=%a:|=^|%"
set "a=%a:<=^<%"
set "a=%a:>=^>%"
echo %a%
pause>nul
得分点概要:
1、能完成最终效果(5分)
2、对于任何特殊字符都不会出错退出,所有特殊字符可参考cmd /?(5分)
3、代码10行以内,多1行扣1分,本项0分封顶(5分)
4、不使用第三方工具,包括debug等产生的效果(3分)
5、不使用变量延迟(1分)
6、不使用临时文件(1分)

2、
思路:通过判断输入的变量中是否有=判定是计算表达式还是设置表达式,进行进一步处理
范例:
@echo off
set ans=0
:loop
cls
set "ex="
echo 表达式:
set /p ex=
echo %ex%|findstr =>nul
if %errorlevel%==1 (
set /a ans=%ex%
) else (
set /a %ex%
set ans=设置变量成功!
)
echo 结果:
echo %ans%
pause>nul
goto loop
得分点概要:
1、能完成最终效果(5分)
2、能实时设置和调用各种变量,调用批处理使用的自定变量时不发生错误(5分)
3、代码25行以内,多1行扣1分,本项0分封顶(5分)
4、不使用第三方工具,包括debug等产生的效果(3分)
5、不使用变量延迟(1分)
6、不使用临时文件(1分)

TOP

第二小题我测试的是产生1KB的文本文档

TOP

我的答案

B(C)
C
B(C)
C
D
B
D
C(B)
C(D)
D

错的好多啊。 。 饿。 。。
setlocal enabledelayedexpansion

TOP

3L捏,应该看文件的属性,里面才是正确的。。。

1K以下系统都显示为1K的。。。

TOP

汗。。。50%的题目都做错~
3楼的头像,是顺时针转还是逆时针转?~~
心绪平和,眼藏静谧。

TOP

逆吧




看上去像是
for /f "delims=" %%a in ('%0') do (echo %%a)

TOP

请问第四题,我运行后set/p a=123>nul和echo 123的效果是一样的啊,为什么不选A?

TOP

re 6 楼 7楼
    先说明是在上面看还是在下面看……
虽然在其中一个方向看仍有些……

    从下往上看是逆的。

TOP

原帖由 moshou 于 2009-1-29 20:53 发表
请问第四题,我运行后set/p a=123>nul和echo 123的效果是一样的啊,为什么不选A?



回moshou,set/p a=123<nul没有换行,echo 123有换行

TOP

直接取-1不就得了么。。。

TOP

那干嘛在这个贴里发。。。

这个试卷不是给超级菜做的。。。

TOP

我还没完全理解题目的意思

TOP

...让我看了觉得自己好小白.......
o(∩_∩)o...~~~
空间:http://hi.baidu.com/fair_jm
喜欢批处理的没事的话去逛逛哦~~

TOP

返回列表