计算机二级

3773考试网计算机等级考试计算机二级正文

2013计算机等级考试二级《C语言》复习:第三章第4节

来源:2exam.com 2013-1-26 20:45:27

 

 do-while语句

  do-while语句的一般形式为:

  do

  语句;

  while(表达式);

  其中语句是循环体,表达式是循环条件。

  do-while语句的语义是:

  先执行循环体语句一次, 再判别表达式的值,若为真(非0)则继续循环,否则终止循环。

  do-while语句和while语句的区别在于do-while是先执行后判断,因此do-while至少要执行一次循环体。而while是先判断后执行,如果条件不满足,则一次循环体语句也不执行。

  while语句和do-while语句一般都可以相互改写。

  void main(){

  int a=0,n;

  printf("\n input n: ");

  scanf("%d",&n);

  do printf("%d ",a++*2);

  while (--n);

  }

  在本例中,循环条件改为--n,否则将多执行一次循环。这是由于先执行后判断而造成的。

  对于do-while语句还应注意以下几点:

  1.在if语句,while语句中, 表达式后面都不能加分号, 而在 do-while语句的表达式后面则必须加分号。

  2.do-while语句也可以组成多重循环,而且也可以和while语句相互嵌套。

  3.在do和while之间的循环体由多个语句组成时,也必须用{}括起来组成一个复合语句。

  4.do-while和while语句相互替换时,要注意修改循环控制条件。

  for语句

  for语句是C语言所提供的功能更强,使用更广泛的一种循环语句。其一般形式为:

  for(表达式1;表达式2;表达3)

  语句;

  表达式1 通常用来给循环变量赋初值,一般是赋值表达式。也允许在for语句外给循环变量赋初值,此时可以省略该表达式。

  表达式2 通常是循环条件,一般为关系表达式或逻辑表达式。

  表达式3 通常可用来修改循环变量的值,一般是赋值语句。

  这三个表达式都可以是逗号表达式, 即每个表达式都可由多个表达式组成。三个表达式都是任选项,都可以省略。

  一般形式中的“语句”即为循环体语句。for语句的语义是:

  1.首先计算表达式1的值。

  2.再计算表达式2的值,若值为真(非0)则执行循环体一次, 否则跳出循环。

  3.然后再计算表达式3的值,转回第2步重复执行。在整个for循环过程中,表达式1只计算一次,表达式2和表达式,3则可能计算多次。循环体可能多次执行,也可能一次都不执行。

  void main(){

  int n,s=0;

  for(n=1;n<=100;n++)

  s=s+n;

  printf("s=%d\n",s);

  }

  用for语句计算s=1+2+3+…+99+100

  int n,s=0;

  for(n=1;n<=100;n++)

  s=s+n;

  printf("s=%d\n",s);

  本例for语句中的表达式3为n++,实际上也是一种赋值语句,相当于n=n+1,以改变循环变量的值。

  void main(){

  int a=0,n;

  printf("\n input n: ");

  scanf("%d",&n);

  for(;n>0;a++,n--)

  printf("%d ",a*2);

  }

  用for语句修改例题。从0开始,输出n个连续的偶数。

  int a=0,n;

  printf("\n input n: ");

  scanf("%d",&n);

  for(;n>0;a++,n--)

  printf("%d ",a*2);

  本例的for语句中,表达式1已省去,循环变量的初值在for语句之前由scanf语句取得,表达式3是一个逗号表达式,由a++,n-- 两个表达式组成。每循环一次a自增1,n自减1。a的变化使输出的偶数递增,n的变化控制循次数。

  在使用for语句中要注意以下几点:

  1.for语句中的各表达式都可省略,但分号间隔符不能少。如:for(;表达式;表达式)省去了表达式1.for(表达式;;表达式)省去了表达式2。

  for(表达式;表达式;)省去了表达式3.for(;;)省去了全部表达式。

  2.在循环变量已赋初值时,可省去表达式1,如例3.27即属于这种情形。如省去表达式2或表达式3则将造成无限循环, 这时应在循环体内设法结束循环。例题即属于此情况。

  void main(){

  int a=0,n;

  printf("\n input n: ");

  scanf("%d",&n);

  for(;n>0;)

  { a++;n--;

  printf("%d ",a*2);

  }

  }

  本例中省略了表达式1和表达式3,由循环体内的n--语句进行循环变量n的递减,以控制循环次数。

  void main(){

  int a=0,n;

  printf("\n input n: ");

  scanf("%d",&n);

  for(;;){

  a++;n--;

  printf("%d ",a*2);

  if(n==0)break;

  }

  }

  本例中for语句的表达式全部省去。由循环体中的语句实现循环变量的递减和循环条件的判断。当n值为0时,由break语句中止循环,转去执行for以后的程序。在此情况下,for语句已等效于while( 1)语句。如在循环体中没有相应的控制手段,则造成死循环。

上一页  [1] [2] [3] [4] [5] 

触屏版 电脑版
3773考试网 琼ICP备12003406号-1