阅读下列程序说明和C代码,回答问题1~2。[说明]本程序用古典的Eratosthenes的筛法求从2起到指定范围内的素数。如果要找出2至10中的素数,开始时筛中有2到10的数,然后取走筛中的最小的数2,宜布它是素数,并把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数3、5、7、9:重复上述步骤,再取走最小数3,宣布它为素数,井取走3的倍数,于是留下5、7。反复重复上述步骤,直至筛中为空时,工作结束,求得2至 10中的全部素数。程序中用数组sieve表示筛子,数组元素sieve[i]的值为1时,表示

题目

阅读下列程序说明和C代码,回答问题1~2。

[说明]

本程序用古典的Eratosthenes的筛法求从2起到指定范围内的素数。如果要找出2至10中的素数,开始时筛中有2到10的数,然后取走筛中的最小的数2,宜布它是素数,并把该素数的倍数都取走。这样,第一步以后,筛子中还留下奇数3、5、7、9:重复上述步骤,再取走最小数3,宣布它为素数,井取走3的倍数,于是留下5、7。反复重复上述步骤,直至筛中为空时,工作结束,求得2至 10中的全部素数。

程序中用数组sieve表示筛子,数组元素sieve[i]的值为1时,表示数i在筛子中,值为-1时表示数i已被取走。

[程序]

include < stdio, h >

define MAX 22500

main( )

{ unsigned int i , range , factor , k;

int sieve[MAX];

prinff( "please input the 'range:" );

scanf(" %d" ,&range); /* range 指出在多大的范围内寻找素数* /

for(i=2 ;i<=range; i++) (1); /*筛子初始化*/

factor = 2 ;

while (factor < = range) {

if((2)= = 1)l /*筛子中最小数是素数*/

pfinff( "% d\t" ,factor);

k = factor;

while (k < =range) { /* 取走素数的倍数*/

(3);

k=(4);

factor + +;

}

}

[问题1]将程序代码中的(1)~(4)处补充完整。

[问题2]在上述代码的执行过程中,若factor为5,从筛子中取走的头两个数是5和(5)。


相似考题
更多“阅读下列程序说明和C代码,回答问题1~2。[说明] 本程序用古典的Eratosthenes的筛法求从2起到指定范 ”相关问题
  • 第1题:

    阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内。

    【说明】

    逻辑覆盖法是设计白盒测试用例的主要方法之一,通过对程序逻辑结构的遍历实现

    程序的覆盖。针对以下由C语言编写的程序,按要求回答问题。

    【问题1] (6分)

    请给出满足100%DC(判定覆盖)所需的逻辑条件。

    【问题2] (10分)

    请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。

    【问题3](4分)

    请给出问题2中控制流图的线性无关路径。


    正确答案:
    本题考查白盒测试技术的应用。
    【问题1】
    本问题考查白盒测试用例设计方法:判定覆盖法。
    判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次
    “真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有6个判定,
    所以满足判定覆盖一共需要12个逻辑条件。
    【问题2】
    本问题考查白盒测试用例设计方法:基本路径法。涉及的知识点包括:根据代码绘
    制控制流图、计算环路复杂度。
    控制流图是描述程序控制流的一种图示方式,它由节点和定向边构成。控制流图的
    节点代表一个基本块,定向边代表控制流的方向。其中要特别注意的是,如果判断中的
    条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,
    则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。本题程序中,
    if((filename[len-2]==’.’)&&(filename[len.1]=’c’))这条判断语句中的判定由两个条件
    组成,因此在画控制流图的时候需要拆开成两条判断语句。程序的环路复杂度等于控制
    流图中判定节点的个数加1,本题控制流图I中判定节点个数为7,所以V(G)=8。
    【问题3】
    本问题考查白盒测试用例设计方法:基本路径法。涉及的知识点包括:根据控制流
    图和环路复杂度给出线性无关路径。
    线性无关路径是指包含一组以前没有处理的语句或条件的路径。从控制流图上来
    看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程
    序的环路复杂度等于线性无关路径的条数,所以本题中应该有8条线性无关路径。
    参考答案

    【问题2]
    环路复杂度V(G)=8。

    线性无关路径:
    1.1-2-3-4-6-7-8-9-10-11-12-13-10......
    2.1-2-5-6-7-8-9-10-11-12-13-10.....
    3.1-2-3-5-6-7-8-9-10-11-12-13-10...
    4.1-2-3-4-6-8-9-10-11-12-13-10...
    5.1-2-3-4-6-7-8-10-11-12-13-10....
    6.1-2-3-4-6-7-8-9-10-15
    7.1-2-3-4-6-7-8-9-10-11-14-10.....
    8.1-2-3-4-6-7-8-9-10-11-12-10....

  • 第2题:

    阅读下列说明,回答问题1和问题2,将解答写在答题纸的对应栏内。
    【说明】
    Windows 系统的用户管理配置中,有多项安全设置,如图2-1 所示。





    答案:
    解析:
    【问题1】(3分)属于账号策略。 账户策略主要包括密码策略和账户锁定策略两种安全设置。
    【问题 2】(3分)Abcd321 test123! 123@host 密码必须符合复杂性要求:启用此策略,用户账户使用的密码必须符合复杂性的要求。 密码复杂性必须符合下列最低要求: 不能包含用户的账户名; 不能包含用户姓名中超过两个连续字符的部分; 至少有六个字符长; 密码总必须包含一下4类字符中的三类字符: 1、英文大写字母(A-Z) 2、英文小写字母(a-z) 3、10个基本数字(0-9) 4、特殊符号(!@#¥%等)

  • 第3题:

    阅读下列程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由C 语言编写的程序,按要求回答问题。
    main( ){int i,n; //1for(i=1;i<5;i++){ //2n=0;  if(i!=1) //3 n=n+1; //4 if(i==3) //5 n=n+1; //6  if(n==3) //7  printf("Hello!"); //8 }} //9 问题1:(4分)请给出满足100%DC(判定覆盖)所需的逻辑条件。问题2:(6分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。问题3:(5分)请给出【问题2】中控制流图的线性无关路径。


    答案:
    解析:
    问题1:
    1、i < 52、i >= 53、i != 14、i == 15、i == 36、i != 37、n == 38、n != 3
    问题2(1) 控制流图如下图所示:



    (2)V(G)=4+1=5问题3:
    (1) 1-2-9 (2) 1-2-3-5-7-2... (3) 1-2-3-5-7-8-2...(4) 1-2-3-4-5-7-2… (5) 1-2-3-5-6-7-2…
    【解析】
    问题1:判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得-次 “真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序一共有4个判定,所以满足判定覆盖一共就需要8个逻辑条件,这些条件详见上述答案。问题2:
    本题考查白盒测试方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:



    其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度。环路复杂度等于右图中的判定的节点个数加1。图中判定节点个数为4,所以V(G)=4+1=5。控制流程图的环路复杂性 V(G)一共有以下三种方法,但是最后一种最好用,不易出错。(1)控制流程图中的区域个数。(2)边数-结点数+2。(3)判定数+1。问题3:本小题考查白盒测试用例设计方法之基本路径法。涉及到根据控制流图和环路复杂度给出线性无关路径。线性无关路径:指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中有5条线性无关路径。这5条路径组成了问题2中控制流图的一个基本路径集。只要设计出的测试用例能确保这些基本路径的执行,就可以使程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试。需要注意的是,基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。

  • 第4题:

    阅读下列说明,回答问题1和问题2,将解答填入答题纸的对应栏内。
    【说明】
    某系统在线讨论区采用ASP+Access开发,其主页如图4-1所示

    【问题2】(7分)
    该网站在主页上设置了分页显示,每页显示10条留言,以下是该网站页面分页显示部分代码,请阅读程序代码,并将(9)~(15)的空缺代码补齐。

    <%Set rs = server.CreateObject(“adodb.recordset”)(9) = “select * from cont (10) by id desc ”rs.Open exec, conn, 1, 1If rs. (11) Then response.Write “ 暂无留言!"Else rs.PageSize= (12) ’每页记录条数 iCount= rs.RecordCount’记录总数 iPageSize= rs.PageSize maxpage= rs.PageCount page= request("page") If Not IsNumeric(page) Or page=""Then page = 1 Else lPage = (13)End ifIf page<1 Then page = 1ElseIf page>maxpage Then page= (14)End Ifrs.AbsolutePage = PageIf page = maxpage Then x = iCount - (maxpage -1) * iPageSizeElse x= (15)End If%>......
    (9)~(15)的备选答案:A.Clnt(page) B.exec C.maxpage D.10 E.EOF F.iPageSize G. order


    答案:
    解析:
    9.B
    10.G
    11.E
    12D
    13A
    14 C
    15.F

  • 第5题:

    阅读下列Java程序,回答问题1至问题3,将解答填入答题纸的对应栏内。【说明】逻辑覆盖法是设计白盒测试用例的主要方法之一,它是通过对程序逻辑结构的遍历实现程序的覆盖。针对以下由Java语言编写的程序,按要求回答问题。



    问题1:(2分) 请简述基本路径测试法的概念。
    问题2:(8分)请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
    问题3:(3分)请给出【问题2】中控制流图的线性无关路径。


    答案:
    解析:
    问题1:答案:基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。
    问题2:答案:(1)控制流图如下图所示:



    (2)V(G)=4+1=5
    问题3:答案:(1) 1-2-3-8-10(2) 1-2-4-5-6-8-10(3) 1-2-3-4-5-6-8-10(4) 1-2-4-5-7-8-10(5) 1-2-3-8-9-10
    【解析】
    问题1:本小题考查基本路径法的概念。
    问题2:本题考查白盒测试方法中的基本路径法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。基本结构如下所示:



    其中要特别注意的是,如果判断中的条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接的逻辑表达式,则需要改变复合条件的判断为一系列之单个条件的嵌套的判断。环路复杂度用来衡量一个程序模块所包含的判定结构的复杂程度。环路复杂度等于右图中的判定的节点个数加1。图中判定节点个数为4,所以V(G)=4+1=5。控制流程图的环路复杂性 V(G)一共有以下三种方法,但是最后一种最好用,不易出错。(1)控制流程图中的区域个数。(2)边数-结点数+2。(3)判定数+1。
    问题3:本小题考查白盒测试用例设计方法之基本路径法。涉及到根据控制流图和环路复杂度给出线性无关路径。线性无关路径:指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中有5条线性无关路径。这5条路径组成了问题2中控制流图的一个基本路径集。只要设计出的测试用例能确保这些基本路径的执行,就可以使程序中的每个可执行语句至少执行一次,每个条件的取真和取假分支也能得到测试。需要注意的是,基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。