C语言第五章-循环题学习

C语言第五章

除了for以外的循环

//
//  main.c
//  project1
//
//  Created by sihan guo on 2019/06/13.
//  Copyright © 2019 sihan guo. All rights reserved.
//

#include <stdio.h>
#include <stdbool.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    //第五章
    //循环结构:goto while 'do while' for
    //1.循环语句概述
    //2.goto:无条件转向语句,用来跳转到某个程序位置进行执行
    //一般形式:
    //goto 语句标号: 其中语句标号是一个标识符(字母,数字,下划线三种标识符组成,且第一个字符必须是字母或者x下划线)
        //并且:标识符不可以是系统中的保留字,int
    //goto label;
    //goto
    //1:与if语句一起构成循环结构
    //2:从循环体内调到循环体外 不推荐破坏了结构化程序设计原则,除非万不得已
    //1到100的加法运算 用goto语句
    //使用loop and goto进行语句循环示例
    //loop和goto语句在同一个函数中,不能夸函数使用
    int i = 1,sum = 0;
loop:
    if(i<=100){
        sum = sum + i;
        i++;
        goto loop;
    }
    printf("%d\n",sum);//5050
    
    //目前goto语句应用场合比较少
    //很多情况下,我们可以用其他循环语句来取代goto
    
    //3:while语句
    //一般形式:
    //while(表达式) 要执行的语句(一句或者多句)
    //先判断表达式的值,如果表达式为真,就执行语句,同时大家不要忘记,如果表达式值为假,则循环体内的语句一次也不执行
    //举例:用while实现刚才的goto的1+2+...+100
    int x = 1;
    int sum2 = 0;
    while(x<=100){
        sum2 += x;
        x++;//本句就是使用while循环趋向于结束的语句
    }
    printf("sum2=%d\n",sum2);
    //(a)while中如果有多条需要执行的语句,需要{}括上 这样才会被当成一个整体执行
    //(b)在循环体内,要有使用循环趋向于结束的语句
    
    //4.do...while语句
    int a = 1;
    int sum3 = 0;
    do{
        sum3 += a;
        a++;
    }while(a<=100);
    printf("sum3 = %d\n",sum3);
    
    //do..while和while的区别:
    //比如说上述:当x的值直接就比其条件大,则while()这个不会进去执行。
    //而do while语句中,不管条件如何。则直接先执行该语句然后进行判断,语句必须执行一次,肯定会改变一次x或者sum的值
    
    //当while后边的表达式的第一次值为真时,两种循环结果相同,否则,两种循环的结果是不相同的
    
}

for循环

//
//  main.c
//  project1
//
//  Created by sihan guo on 2019/06/13.
//  Copyright © 2019 sihan guo. All rights reserved.
//

#include <stdio.h>
#include <stdbool.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    //for循环的详细讲解:
    //for:循环语句:
    //for语句的一般形式
    //for(表达式1;表达式2;表达式3)内嵌的语句
    //a 先求解1
    //b 再求解表达式2
        //b.1 若表达式2的值为真(非0),则执行for语句中指定的内嵌语句 同时求解表达式3的值 反复循环步骤2
        //b.2 若表达式2的值为假(0),则整个for循环结束,程序流程跳转到for语句后边的语句执行
    //这里注意:表达式1的值只会被执行一次
    //for语句最简单最常用的引用形式:
//    for(循环变量赋初值;循环变量结束条件;循环变量增加值){
//        内嵌语句;
//    }
    
    //for语句的实际操作
    //for语句实现1+2+...+100
    int x = 0;
    int sum = 0;
    for(x = 1;x<=100;x++){//x在这里是循环变量
        sum += x;
    }
    printf("sum:%d\n",sum);
    
    
    //for语句的主要说明
    //1 表达式1可以省略 但其后边的 不能省略 当表达式1省略时 应该在for之前就给循环变量赋初值 很少用
    //2 表达式2可以省略 也就是不判断循环条件 那么循环就会无终止的执行下去了 此时 就必须用break语句终止循环
    //这种写法h也很少用
//    int i,sum2 = 0;
//    for(i=0;;i++){
//        sum2 += i;
//        if(i >= 100){
//            printf("sum2:%d\n",sum2);//5050
//            break;
//        }
//    }
    //也可以将表达式3省略 我们必须要想办法保证for循环能够正常结束,否则循环将无休止的进行下去
    int m;
    int sum3=0;
    for( m=0 ; m<=100 ;){
        sum3 += m;
        m++;//保证for循环正常结束的办法 这里我们把m++放在循环体内嵌语句中,而没有放在表达式3的位置
        //取代了表达式3
    }
    printf("sum3:%d\n",sum3);
    //也可以省略表达式1表达式3,只保留表达式2的数值
    
    //5.三个表达式都可以省略
    //导致无终止的执行循环体
    
    //会被认为一直是真,所以会被无限制的执行
    //一直会执行其内部的循环体
    //....这种循环想要终止,必须要在for内嵌语句中,根据一定的条件增加break;
    //for(;;){}
    //while(1){}
    
    //如果全都省略
    int a = 1;//代替表达式1
    int sum4 = 0;
    for(;;){
        sum4 += a;
        if(a>=100){//代替表达式2
            break;
        }
        a++;//代替表达式3
    }
    printf("sum4 = %d\n",sum4);
    
    //6可以设置循环变量初值,也可以是变量无关的其他表达式
    //可以在表达式1设置与循环无关的变量
    
    //for表达式内嵌语句
    int i,j = 10000,summary;
    for(summary = 0,i=1;i<=100;i++,j--){
        summary += i;
    }
    printf("summary=%d\n",summary);
    printf("j:%d\n",j);
    
    //8表达式2的值一般是关系表达式 或者逻辑表达式 只要其值为非0 就执行循环体
    //for(;这里只要不是0就是无限循环;
    
    //最后建议大家规矩使用å
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值