首页>计算机>软件水平考试>模拟试题>正文
软件设计师课后练习题:第三章习题解答

www.zige365.com 2008-11-11 17:28:00 点击:发送给好友 和学友门交流一下 收藏到我的会员中心
 11.若i、j已定义为int类型,则以下程序段中的内循环体的执行次数是(    )
     for( i=5; i; i--)
     for(j= 0; j<4;j++){……}
    ①20           ② 24            ③ 25           ④ 30
    【解】问题所给的程序段的外循环是一个阶循环语句,它的初始化部分置变量i的初值为5,循环条件简写成i,即i!=0,每次循环后变量i的值减1。所以外循环共控制5次循环。内循环也是一个for循环语句,它的初始化部分置变量j的初值为0,循环条件是j<4,每次循环后变量j的值增1。所以内循环共控制4次循环。这样,如内循环的体内未曾对变量i和j有修改,在内、外循环一起控制下,内循环的体共被重复执行20次。正确解答是①。
        12.假定a和b为int型变量,则执行以下语句后b的值为(   )
       a=1; b=10;
       do b-=a; a++;
       }while<(b--<0);
       ①9         ②-2            ③-1           ④8
    【解】在这个程序段中,循环开始前变量a的值为1,b的值为10,每次循环从变量b减去a,并让a增1,并在循环条件判定时,又让b减去1。第一次循环后,变量b的值变成9,变量a的值变为2,循环判断时,因b的值大于0,循环条件不成立,结束循环。但在循环判断时,让b减去了1,所以循环结束时,变量b的值为8。正确的解答是④。
    13.设x和y为int型变量,则执行下面的循环后,y的值为(    )
     for(y=l, x=l; y<=50; y++){ 
     if(x>=10) break;
     if(x%2==1){ x+=5; continue;} 
     X -= 3;
      }
          ①2          ②4            ③6             ④8
     【解】 for循环语句的初始化部分置变量x和y的初值为1,循环条件是(y<=50),每次循环后变量y的值增1,控制循环最多执行50次。循环体有三个语句:首先在发现变量X的值大于等于10时,结束循环;接着是当变量X除2的余数为1(即变量X是奇数)时,让变量X值增5,让X变成偶数,并直接进入下一轮循环;如变量X是偶数,则从变量X减去3,让变量X变成奇数。由上述分析知,每两次循环使变量X的值增加2.第一次循环后,变量X的值变成6。第二次循环后,变量X的值变成3。第三次循环后,变量X的位变成8。第四次循环后,变量X的值变成5。第五次循环后,变量X的值变成 10。第六次循环时,因变量X的位大于等于 10,直接跳出循环,这次循环是非正常结束,对变量y的修正只执行了5次。所以循环结束后,变量y的值增至6。正确的解答是③。
      14.在C语言中,下列说法中正确的是(   )
    ①不能使用“do语句while(条件)”的循环
    ②“do语句While(条件)”的循环中必须使用“break”语句退出循环
    ③“do语句while(条件)”的循环中,当条件非0时将结束循环
    ④“do语句while(条件)”的循环中,当条件为0时将结束循环
    【解】 do-while语句的一般形式是:
      do语句
      while(表达式);
    其语义是重复执行其成分语句,直至表示条件的表达式值为0时结束。do-while语句是正常使用的一种循环结构之一。do-while语句的循环结束条件由while后的表达式值为0所控制,并不一定要有break语句跳出循环来结束循环。do-while语句在条件值非0时,将继续循环,而不是结束循环。条件值为0时,才结束循环。所以正确的选择是④。
       15.若有以下程序段,W和k都是整型变量,则不能与该程序段等价的循环语句是(  )
       W= k;
    LB: if(w==0) gotO LE;
      w - -;
     printf("*");
      goto LB;
    LE:
       ①for(w=k;w!=0;W--)printf("*");
       ② w= k;
       While(W--!=0) Prinif(”* ”);
     ③ w= k;
      do{w--; prinif(“*”);
    } while( W!= 0);
      ④ for(w=k;W;--W) printf("*");
    【解】问题所给出的程序段用goto语句构造一个循环控制结构,该循环结构的初值是让变量W的值为k的值,循环结束条件是W的情等于0,循环体是让变量W的值减1,并输出一个字符* 。上述循环控制过程用for循环可描述如下:
     for=(w=k;W!=0; W--) printh("*");
或写成:
    for(w=k ;w;--w) printf("*");
若用while语句,可描述如下:
     W=k;
     while(w--!=0)printf("*");
      w++;/*在w等于0时,也执行了一次 w--,这里是对w最后减1的补尝*/
或更直观地写成:
       W=k;
      while(w!=0){ w--;Printf("*");}
若用do-while语句,可描述如下:
      W=k;
      if(W)
     do{
      w--; prinif("*");
     } while(w);
若写成:
     W=k;
    do{
    W--; printf("*");
     } while(w!=0);
是不正确的,因为原代码当k的值为0时,不输出字符*,而上面的改写,当k的值为0时,将输出许许多多的字符*。所以解答应是③。

本新闻共4页,当前在第2页  1  2  3  4  

我要投稿 新闻来源: 编辑: 作者:
相关新闻
2009年咨询工程师考前练习-项目决策方法与实务1(08/1
2009年咨询工程师考前练习-项目决策方法与实务2(08/1
2009年咨询工程师考前练习-项目决策方法与实务3(08/1
2009年咨询工程师考前练习-项目决策分析与评价一-1(0
2009年咨询工程师考前练习-项目决策分析与评价一-2(0
2009年咨询工程师考前练习-项目决策分析与评价一-3(0