加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言for循环结构

(2017-07-19 10:55:31)
分类: 教育教学
or语句是循环结构中使用最广泛的循环控制语句,特别适合已知循环次数的情况。

语句格式: for (表达式1;表达式2;表达式3) 
                         {
                             语句序列;
                         }

其中:
表达式1(通常为赋值表达式)用于对循环控制变量初始化赋值,又叫初值表达式;
表达式2(通常为关系表达式或逻辑关系表达式)作为循环进行的条件,满足条件时循环正常进行;
表达式3(通常为++/--表达式)描述循环控制变量的变化,实现对循环控制变量的修改;
语句序列(循环体)可以是简单语句、复合语句。 
执行过程如图1所示。



 图2 for语句流程图

C语言for循环结构




首先,计算表达式1的值,作为循环控制变量初值。
 其次,判断表达式2是否成立,如果成立(条件为真),执行循环体语句,否则退出循环。 

每一次执行循环体结束时,都要重新计算表达式3的值,然后重新判断表达式2是否成立,根据判断结果决定是否继续执行循环体。

for语句很好的体现了正确表达循环结构的三个要素:循环控制变量的初始化、循环控制的条件、循环控制变量的更新。

for语句还需要注意以下几点:

(1)一般情况下,循环控制变量仅用来控制循环过程,尽量不在循环体中做它用,以免导致另人费解的错误。

(2)表达式3可以自增/自减,或是加/减一个整数等多种形式。例如:

     for(i=100;i>=1;i--)
     for(i=0;i<=10;i+=2)         

(3)for语句while语句的相似性。都是先判断条件后执行循环体语句。多数情况下,while循环可以用等价的for循环结构表示。

将for(表达式1;表达式2;表达式3)语句转换为等价的while格式: 

        表达式1;
        while (表达式2)
       
                语句;
                表达式3;
        }


#include  
#define  N  5
{
int i =1 ,sum=0 ,a  ;                                                             
while( i<=N)                                                            
   {
    scanf("%d"  &a);
    sum+=a;
    i++  ;                                                                  
   }
printf ("sum=%d\n",sum) ;



#include  
{
int i =1 ,sum=0 ,a  ;                                                             
while( a!=-1)                                                            
   {
    scanf("%d"  &a);
    sum+=a;
    i++  ;                                                                  
   }
printf ("sum=%d\n",sum) ;


循环用for语句

#include  
#define  N  5
{
int i =1 ,sum=0 ,a  ;                                                             
for(i=1, i<=N,i++)                                                            
   {
    scanf("%d"  &a);
    sum+=a;                                                       
   }
printf ("sum=%d\n",sum) ;


#include  
{
int i =1 ,sum=0 ,a  ;                                                             
for( i=1,a!=-1,i++)                                                            
   {
    scanf("%d"  &a);
    sum+=a;                                                               
   }
printf ("sum=%d\n",sum) ;

C语言for循环结构




分析功能  实现功能
开平方 搜索开平方的函数sqrt
1、返回值  参数   2、查头文件math.h

for循环
#include "stdio.h"
#include "stolib.h"
 int main(void)
{
 int  a = 1 ;
 int  b = 5 ;
for ( a =1 ,b = 5 ; a <= 5 ; a++ )                                //  初始值  条件 变化   写多条赋值语句,用逗号隔开
                                                 //for  (  ; a<=5 ; a++ )  语句1什么都不写,但分号不能丢. 因为前面已初始化了

printf("  %d  ,%d  \n  "  ,  a  , b );
b --
system (pause) ;
 
return 0 ;
}

for循环执行的顺序
语句1(初始值)—— 语句2(条件)——代码块——语句3(变量)——语句2(条件)——代码块——语句3(变量)
语句1  只执行一次

for循环比while循环  更加合理紧凑。使用这2种之一都是可以的。就看你更熟悉哪一个循环了。

在2015版本之前的,条件语句不能定义变量
注意分号 花括号 不要写成逗号。

for循环的灵活性

语句1
1、通常是循环变量的初始值
2、可以写多条赋值语句,用逗号隔开
3、可以什么都不写,但是分号不能丢。
4、可以写其它表达式,甚至写函数调用都行。只要是合法的语句都能写。
语句2
1、必须写条件
2、可以什么都不写,默认为1,表示真,死循环。
3、甚至可以加函数
语句3
1、写循环变量控制的变化。
2、可以写多个变化,逗号隔开。
3、可以什么都不写,变化放在代码块内

for (  ; ;  )      
{
}
for 循环可以当while循环来使用
while  (  1 )
{
}

C语言for循环结构

输出带符号的整数,需要占用5个字符位置, 不够则空格补齐. ]是右对齐,%-5d是左对齐.

for 循环的嵌套

#include "stdio.h"
#include "stolib.h"
 int main(void)
{
 int  a = 1 ;                            //  外部循环控制变量
 int  b = 1 ;                           //   内部循环控制变量
 int  ncount = 0 ;
for ( a =1 ;  a <= 3   ; a++ )      
    {
        for ( b =1 ;  b < 3   ; b++ )        //内部循环第一个语句不设置,不应该省略,否则会造成很大问题。
        {
        ncount ++  ;
        printf("  次数 %d  \n  "  ,  ncount )   ;
        }
    }
system (pause) ;

return 0 ;
}

说明程序执行的过程:2*3=6次
a =1 时 ,1 <= 3  成立,
1、则当    b =1时,1 < 3成立,ncount++,输出 1次,输出1,总1次
2、则当    b =2时,2 < 3成立,ncount++,输出 1次,输出2,总2次
3、则当    b =3时,3 < 3不成立,跳出。
a =2 时 ,2 <= 3  成立,
1、则当    b =1时,1 < 3成立,ncount++,输出 1次,输出1,总3次
2、则当    b =2时,2 < 3成立,ncount++,输出 1次,输出2,总4次
3、则当    b =3时,3 < 3不成立,跳出。
a =3 时 ,3 <= 3  成立,
1、则当    b =1时,1 < 3成立,ncount++,输出 1次,输出1,总5次
2、则当    b =2时,2 < 3成立,ncount++,输出 1次,输出2,总6次
3、则当    b =3时,3 < 3不成立,跳出。
a =4 时 ,4<= 3  不成立,跳出。

for 循环  比  while循环  结构更清晰

#include "stdio.h"
#include "stolib.h"
 int main(void)
{
 int  a = 1 ;                            //  外部循环控制变量
 int  b = 1 ;                           //   内部循环控制变量

while ( a <= 3  )      
    {
         b = 1
         while ( b < 3  
        {
        ncount ++  ;
        printf("  次数 %d  \n  "  ,  ncount )   ;
        b++ 
        }
        a++ 
    }
system (pause) ;

return 0 ;
}



当只有一个外部变量时的嵌套

#include "stdio.h"
#include "stolib.h"
 int main(void)
{
 int  a = 1 ;                            //  外部循环控制变量
 int  b = 1 ;                           //   内部循环控制变量
 int  ncount = 0 ;
for ( a =1 ;  a <= 3   ; a++ )      
    {
        for (  =1 ;  a < 3   ; a ++ )        //内部循环第一个语句不设置,不应该省略,否则会造成很大问题。
        {
        ncount ++  ;
        printf("  次数 %d  \n  "  ,  ncount )   ;
        }
    }
system (pause) ;

return 0 ;
}

请注意:两层循环用一个变量可能会出问题,两层交集要少一些,否则逻辑会很难理解。

说明程序执行的过程:2次
a =1 时 ,1 <= 3  成立,
1、则当    a =1时,1 < 3成立,ncount++,输出 1次,输出1,总1次
2、则当    a =2时,2 < 3成立,ncount++,输出 1次,输出2,总2次
3、则当    a =3时,3 < 3不成立,跳出内部循环。进入外部,a++则为4,当    a =4时,4 < 3不成立


阶乘计算
1!+2!+3!+4!+……+m!
分析:
t=t*n ; n=1,2,3,4,……
s=s++  ;
常用算法
(1)累乘计算(t=1 或第1项)
(1)累加计算(sum=0 或第1项)

#include  
{
int n,m  ;   
long sum=0,t=1     
scanf("%d"  &m);                                                    
for( n=1,n<=m,n++)                                                            
   {
    t=t*n ;
    printf ("%d!=%ld\n",n,t) ;
    sum=sum+t  ;                                                               
   }
printf ("sum=%ld\n",sum) ;








0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有