一、循环结构(Iteration Structure)的概述
1.目的
为了解决含有重复处理内容的问题,必须采用循环语句(Loop Statement)来编程实现。
2.类型
1 当型循环结构
2)直到型循环结构
二、循环语句
1.while语句
①功能:实现当型循环结构。
②形式
while(表达式){
    循环体
}
③特点:先判断后执行。
④举例:(累加和问题)编程计算整数1~100的和。
int i ; //循环变量
int sum = 0 ; //累加和清0
i = 1 ; //循环变量i赋初值
while( i <= 100){
    sum = sum + i ; //循环变量累加到sum
      i = i + 1; //改变循环变量i的值
}
2.do-while语句
①功能:实现直到型循环结构。
②形式
  do{
      循环体
  }while(表达式); //注意最后的分号
③特点:先执行后判断。
④举例:修改上例。
/*利用do-while语句编程实现整数1~100的和。*/
int i ; //循环变量
int sum = 0 ; //累加和清0
i = 1 ; //循环变量i赋初值
do{
    sum = sum + i ; //循环变量累加到sum
      i = i + 1; //改变循环变量i的值
}while(i<=100);//注意最后的分号
3.for语句
①功能:实现当型循环结构。
②形式
  for(表达式1;表达式2;表达式3){
      循环体
  }
③特点:先判断后执行;使用频率最高。
④举例:修改上例。
/*使用for语句编程计算整数1~100的和。*/
int i ; //循环变量
int sum = 0 ; //累加和清0
for( i = 1 ; i <=100 ; i++ ){//第一个表达式完成循环变量i赋初值;第三个表达式实现改变循环变量i的值
    sum = sum + i ; //循环变量累加到sum
}
4.几种循环语句的比较
①由于while语句和for语句均实现当型循环结构,两者是完全等价的。
for(表达式1;表达式2;表达式3){
    循环体;
}
表达式1 ;
while(表达式2){
    循环体;
    表达式3;
}
for语句适合循环次数事先已知的情况;而while语句和do-while语句适合循环次数事先未知的情况。
③当第一次进入循环时条件就不满足,while语句和do-while语句就不等价。除此情况外,while语句和do-while语句均等价。
三、程序举例
1.循环次数已知的累加和问题
①编程实现计算100以内偶数的和。
/*方法一:使用for语句*/
sum = 0 ;
for( i = 2 ; i <=100 ; i = i + 2 ){
    sum  = sum  + i ;
}
/*方法二:使用while语句*/
sum = 0 ;
i = 2 ;
while( i <=100 ){
    sum  = sum  + i ;
    i = i + 2 ;
}
/*方法三:使用do-while语句*/
sum = 0 ;
i = 2 ;
do{
    sum  = sum  + i ;
    i = i + 2 ;
}while(i <= 100) ;
159页课后习题4.104.114.124.13属于循环次数已知,计算累加和的问题。参考代码
注意:计算累加和时,需要累加和变量清0
2.循环次数已知的累乘积问题
①编程计算n=1*2*3*4*……*n的值。(课本第107页例题4.10
要想解决这个问题,需要用到“递推”的程序设计方法。也就是说,求n!时,先求1!,用1*2得到2程序while语句流程图代码!,用2*3得到3!,以此类推,直到利用(n-1)!*n得到n!为止,问题即可解决。
/*方法一:利用for语句实现。*/
int  i , n ;
long int    p = 1 ;
scanf("%d" , &n) ;
for( i = 1 ; i <= n ; i++ ){
      p = p * i  ;
}
printf("%d!=%ld\n", n , p );
/*方法二:利用while语句实现。*/
int  i , n ;
long int    p = 1 ;
scanf("%d" , &n) ;
i = 1
while( i <= n ){
        p = p * i ;
        i = i + 1 ;
}
printf("%d!=%ld\n", n , p );
/
*方法三:利用do-while语句实现。*/
int  i , n ;
long int    p = 1 ;
scanf("%d" , &n) ;
do{
      p = p * i ;
      i = i + 1 ;
}while( i <= n) ;
printf("%d!=%ld\n", n , p );
159页课后习题4.14属于循环次数已知,计算累乘积的问题。参考代码
注意:计算累乘积时,需要累乘积变量置1
3.循环次数未知的累加和(累乘积)问题
这也是累加求和的问题,但不同的是,这里的循环次数是预先未知的,而且累加项以正负交替的规律出现。实现方法,累加项通式term=sign/n表示。其中,sign+1-1+1-1,……交替变化,可用sign=-sign实现,sign的初值为1n1,3,5,7,……变化,可用n=n+2实现,n的初值为1;统计累加项数只有设置一个计数器变量count即可,初值为0
详细算法描述和代码实现参见课本第112页例题4.12
注意:①能够正确得到累加项或累乘项通式。
②计算累加和问题时注意清0,计算累乘积问题时注意置1

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。