[c语言基础]循环语句

循环语句

  • while语句

    int i = 1;	//初始化
    while(i <= 10)	// 判断部分
    {
     printf("%d",i);
        i++;	//调整部分
    }
    
    1. break语句和continue语句的区别

      break; 跳出循环

      continue; 跳过本次循环,注意一下不要陷入死循环

  • 补充:getchar( ) ; 和putchar()

    getchar(); 获取一个字符,返回值由整型接收(字符是以ASCII码形式存储)

    putchar(); 输出一个字符,

    EOF:-1,文件的结束标志

    int a = getchar();
    int char = 0;
    while((char=getchar())!=EOF){
        putchar(cahr);
    }
    

    清空缓冲区

    while((char=getchar())!=EOF)
    {
        ;
    }
    
    

    如果不清空缓冲区,可能会导致缓冲区内有数据,导致后面操作错误
    例如:

    int main(){
        int arr[10] = {0};
        printf("请输入密码");	//123456
        scanf("%d",arr);
        printf("请确认密码 Y/N");
        int char = getchar();
        if(char== 'Y')
            printf("确认成功");
        else
            printf("确认失败");
        return 0;
    }
    /*输出结果为:
    请输入密码:123456
    请确认密码:确认失败*/
    //原因是:再输入完密码后,缓冲区内还有\n存在,因此getchar(),此时就会获取\n,又由于\n不等于‘Y’,因此会直接返回,确认失败
    

    改正:

    int main(){
        int arr[10] = {0};
        printf("请输入密码");	//123456
        scanf("%d",arr);
        printf("请确认密码 Y/N");
        getchar();	//这里用一个getchar(),消耗掉缓冲区的\n
        int char = getchar();
        if(char== 'Y')
            printf("确认成功");
        else
            printf("确认失败");
        return 0;
    }
    

    以上改正消耗掉了一个缓冲区的字符,但有的时候缓冲区内不止一个多余字符,因此再加以改正

    改正2.0:

    int main(){
        int arr[10] = {0};
        printf("请输入密码");	//123456
        scanf("%d",arr);
        printf("请确认密码 Y/N");
        int ch = 0;
        while((ch=getchar())!='\n')	//利用循环,消除缓冲区内的多余字符
        {    
            ;
         }
        int char = getchar();
        if(char== 'Y')
            printf("确认成功");
        else
            printf("确认失败");
        return 0;
    }
    
  • for循环

    for(表达式1;表达式2;表达式3)		/*表达式1:初始化
    								表达式2:条件判断
    								表达式3:调整语句*/
    {
    	循环语句;
    }
    
    1. 两个建议:

      1.不可在for 循环体内修改循环变量,防止for 循环失去控制

      2.建议for语句的循环控制变量的取值采用“前闭后开区间”写法

    2. for循环内省略问题:

      int main(){
          int i = 0;
          int j = 0;
          for(;i < 3; i++){
              for(; j <3; j++){
                  printf("hehe\n");	//这里指挥打印三次hehe,
                  					/*因为内层for循环内有省略,使得再第一次i=0,时j=0,1,2,3;共计打印三次,
                  					而当i=1,时,j已经=3,故不再打印hehe*/
              }
          }
          return 0;
      }
      
  • do while语句

    do
    	循环语句;
    while(条件判断);
    

    先执行再判断

    特点:循环体至少执行一次

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值