上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
三种基本的循环语句: for语句、while语句和do-while语句
作者:未知 申领版权
2010年12月12日 共有 1454 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    Turbo C 2.0提供三种基本的循环语句: for语句、while语句和do-while语句。
    
    一、循环语句
    (一)、for循环 它的一般形式为:
    for(<初始化>;<条件表过式>;<增量>)
    语句;
    初始化总是一个赋值语句,它用来给循环控制变量赋初值;条件表达式是一个关系表达式,它决定什么时候退出循环;增量定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用;分开。
    例如:
    for(i=1;i<=10;i )
    语句;
    上例中先给i赋初值1,判断i是否小于等于10,若是则执行语句,之后值增加1。再重新判断,直到条件为假,即i>10时,结束循环。
    注意:
    (1).for循环中语句可以为语句体,但要用{和}将参加循环的语句括起来。
    (2).for循环中的初始化、条件表达式和增量都是选择项,即可以缺省,但;不能缺省。省略了初始化,表示不对循环控制变量赋初值。省略了条件表达式,则不做其它处理时便成为死循环。省略了增量,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句。
    (3).for循环可以有多层嵌套。
    例如:
    for(;;) 语句;
    for(i=1;;i =2) 语句;
    for(j=5;;) 语句;
    这些for循环语句都是正确的。
    main()
    {
    int i,j;
    printf(i j\n);
    for(i=0;i<2;i )
    for(j=0;j<3;j )
    printf(%d %d\n,i,j);
    }
    输出结果为:
    i j
    0 0
    0 1
    0 2
    1 0
    1 1
    1 2
    
    用for循环求1 2 …… 100的和:
    main()
    {
    int sn=0,i;
    for(i=1;i<=100;i )
    sn =i; /*1 2 …… 100*/
    printf(%d\n,sn);
    }
    从程序可以看出,使用循环语句可以大大简化代码。
    (二)、while循环 它的一般形式为:
    while(条件)
    语句;
    while循环表示当条件为真时,便执行语句。直到条件为假才结束循环。并继续执行循环程序外的后续语句。
    例如:
    #include stdio.h
    main()
    {
    char c;
    c='\0'; /*初始化c*/
    while(c!='\n') /*回车结束循环*/
    c=getche(); /*带回显的从键盘接收字符*/
    }
    
    上例中,while循环是以检查c是否为回车符开始,因其事先被初始化为空,所以条件为真,进入循环等待键盘输入字符;一旦输入回车,则c='\n',条件为假,循环便告结束。与for循环一样,while循环总是在循环的头部检验条件,这就意味着循环可能什么也不执行就退出。
    注意:
    (1).在while循环体内也允许空语句。
    例如:
    while((c=getche())!='\n');
    这个循环直到键入回车为止。
    (2).可以有多层循环嵌套。
    (3).语句可以是语句体, 此时必须用{和}括起来。
    用while循环求1 2 …… 100的和:
    main()
    {
    int sn=0,i=0;
    while( i<=100)
    sn =i; /*求1 2 …… 100*/
    printf(%d\n,sn);
    }
    (三)、do--while循环 它的一般格式为:
    do
    {
    语句块;
    }
    while(条件);
    这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断条件是否为真,如果为真则继续循环;如果为假,则终止循环。因此,do-while循环至少要执行一次循环语句。
    同样当有许多语句参加循环时,要用{和}把它们括起来。
    
    用do--while循环求1 2 …… 100的和:
    main()
    {
    int sn=0,i=1;
    do
    sn =i; /*求1 2 …… 100*/
    while( i<=100);
    printf(%d\n,sn);
    }
    从上面三个程序看出,使用for,while和do--while求解同样的问题,基本思路都差不多,只是在第一次计算时,注意初值。
    
    二、循环控制
    (一)、break语句
    break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;如果没有break语句,则将成为一个死循环而无法退出。break在switch中的用法已在前面介绍开关语句时的例子中碰到,这里不再举例。
    当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起。即满足条件时便跳出循环。
    例如:
    main()
    {
    int sn=0,i;
    for(i=1;i<=100;i )
    {
    if(i==51) break; /*如果i等于51,则跳出循环*/
    sn =i; /*1 2 …… 50*/
    }
    printf(%d\n,sn);
    }
    
    可以看出,最终的结果是1 2 …… 50。因为在i等于51的时候,就跳出循环了。自己写写怎样在while和do--while循环中增加break语句。
    注意:
    1. break语句对if-else的条件语句不起作用。
    2. 在多层循环中,一个break语句只向外跳一层。
    例如:
    main()
    {
    int i,j;
    printf(i j\n);
    for(i=0;i<2;i )
    for(j=0;j<3;j )
    {
    if(j==2) break;
    printf(%d %d\n,i,j);
    }
    }
    输出结果为:
    i j
    0 0
    0 1
    1 0
    1 1
    当i==0,j==2时,执行break语句,跳出到外层的循环,i变为1。
    (二)、continue语句
    continue语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。
    continue语句只用在for、while、do-while等循环体中, 常与if条件语句一起使用,用来加速循环。
    例如:
    main()
    {
    int sn=0,i;
    for(i=1;i<=100;i )
    {
    if(i==51) continue; /*如果i等于51,则结束本次循环*/
    sn =i; /*1 2 …… 50 52 …… 100*/
    }
    printf(%d\n,sn);
    }
    从程序中可以看出,continue语句只是当前的值没有执行,也就是说当前的值跳过去了,接着执行下次循环。
    main()
    {
    int i,j;
    printf(i j\n);
    for(i=0;i<2;i )
    for(j=0;j<3;j )
    {
    if(j==1) continue;
    printf(%d %d\n,i,j);
    }
    }
    输出结果为:
    i j
    0 0
    0 2
    1 0
    1 2
    (三)、goto语句
    goto语句是一种无条件转移语句,与BASIC中的goto语句相似。goto语句的使用格式为:
    goto 标号;
    其中标号是Turbo C 2.0中一个有效的标识符,这个标识符加上一个:一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句。标号既然是一个标识符,也就要满足标识符的命名规则。另外标号必须与goto语句同处于一个函数中,但可以不在一个循环层中。通常goto语句与if条件语句连用,当满足某一条件时,程序跳到标号处运行。goto语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用goto语句则比较合理。
    main()
    {
    int sn=0,i;
    for(i=1;i<=100;i )
    {
    if(i==51) goto loop; /*如果i等于51,则跳出循环*/
    sn =i; /*1 2 …… 50*/
    }
    loop: ;
    printf(%d\n,sn);
    }
    可以看出,这儿的goto语句和break作用很类似。
    这儿的loop: ;
    printf(%d\n,sn);
    也可以写成loop: printf(%d\n,sn);
    main()
    {
    int sn=0,i;
    for(i=1;i<=100;i )
    {
    if(i==51) goto loop; /*如果i等于51,则跳出本次循环*/
    sn =i; /*1 2 …… 50 52 …… 100*/
    loop: ;
    }
    printf(%d\n,sn);
    }
    可以看出这儿的loop语句和continue的作用类似。
    但是某些情况下又必须使用goto语句,否则会让程序大大臃肿。如:
    main()
    {
    int i,j,k;
    printf(i j k\n);
    for(i=0;i<2;i )
    for(j=0;j<3;j )
    for(k=0;k<3;k )
    {
    if(k==2) goto loop;
    printf(%d %d %d\n,i,j,k);
    }
    loop: ;
    }
    输出结果为:
    i j k
    0 0 0
    0 0 1
    如果不使用goto语句,而使用break,continue语句,应该这样
    main()
    {
    int i,j,k;
    printf(i j\n);
    for(i=0;i<2;i )
    {
    for(j=0;j<3;j )
    {
    for(k=0;k<3;k )
    {
    if(k==2) break;
    printf(%d %d %d\n,i,j,k);
    }
    if(k==2) break;
    }
    if(k==2) break;
    }
    }
    输出结果为:
    i j k
    0 0 0
    0 0 1
    所以在同时跳出多层循环时,应该使用goto语句。记住,所有的goto语句其实都是可以用break,continue代替的。
    
    下面举几个例子:
    1.求两个整数的最大公约数。例如10和15的最大公约数是5。
    分析:最大公约数一定小于等于最小的那个数一半,同时能被两数整除。
    main()
    {
    int num1,num2,i,min;
    scanf(%d%d,&num1,&num2);
    min=num1
    for(i=min/2;i>0;i--)
    if(num1%i==0&&num2%i==0) break;
    printf(最大公约数为%d\n,i);
    }
    
    2.求1! 2! …… n!(n<10)
    main()
    {
    int n,i;
    long temp=1,sn=0; /*从9!以后,所得的值就超过了int范围*/
    scanf(%d,&n);
    for(i=1;i<=n;i )
    {
    temp*=i;
    sn =temp; /*如果没有这一步,求的就是n!*/
    }
    printf(%ld\n,sn);
    }
    那么想想,如果求1! 3! 5! …… n!应该怎么办?
    
    3.判断一个整数是不是素数(素数就是只能被本身和1整除的数)。
    #include math.h
    main()
    {
    int num,i,flag=0;
    scanf(%d,&num);
    for(i=2;i
    {
    flag=0; /*标志变量复位*/
    if(num%i==0)
    {
    flag=1;
    break;
    }
    }
    if(flag==0) printf(是素数\n);
    else printf(不是素数\n);
    }
    可以说,在所有的C语言书上,都有判断素数的例题。它的编程思想是:把一个变量作为标志变量,用来标志是不是素数;循环体是从2到sqrt(num),因为如果一个数不是素数的话,一定能分解成num=num1*num2,它们中的最小值一定小于sqrt(num),所以循环的时候只要到 sqrt(num)就可以了。同时要注意变量复位的问题。
    
    
    
    

 

相关新闻

考点:有机化学几个基本概念
高中化学基本理论
高中化学基本概念
实验基本操作知识易错70例
化学实验的基本知识
化学实验基本操作复习
初中化学实验基本操作
初中化学基本知识、理论
化学实验的基本操作
化学实验基本仪器

您可能对这些感兴趣  

第7讲 综合分析BIM在运用与推广中的障碍问题
考核学生质量的困难
日本福岛核电站事故初步分析
论科技异化与科技人化
中国科技计划项目管理现状与对策
财政科技资金的审计重点和内容
软科学研究机构在政府决策中的功效、困境及对策研究
打造超级DOS系统(下)
DOS命令基础应用(6)
打造超级DOS系统(上)

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》