学历改变命运
24小时客服:4008135555/010-82335555
当前位置:首页 > 笔记串讲 > 自考“高级语言程序设计”习题答案详解(8

自考“高级语言程序设计”习题答案详解(8)

2007年09月04日    来源:   字体:   打印

  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时,将输出许许多多的字符*.所以解答应是③。

关闭