初阶C语言:循环语句

1. while语句

(1)while循环的格式

while(表达式)
    循环语句;
// while 循环中
// break 是用于永久的终止循环
// continue 是跳过本次循环后面的代码,直接去判断部分,进行下一次循环的判断
/// 循环打印 1-10 的数:
int main()
{
    int i = 1;    //初始化
    while(i<=10){    //循环判断条件
        printf("%d  ",i);    //循环体
        i++;     //累加调整   
    }
    return 0;
}   
/*

输出结果:
 1  2  3  4  5  6  7  8  9  10
*/

(2)while 循环中 break 和 continue的用法

如果 while 循环遇到 break 或 continue 的情况:

  • break:遇到break就终止循环

#include
int main()
{
    int i = 1;
    while(i<=10){
        if(i == 5)
        // {break;}
            break;
       printf("%d  ",i);
        i++;    
    }
    return 0;
}     
// ===> 1 2 3 4 
  • continue:

i++ 在后:

        while循环执行过程中遇到 continue ,则直接跳过后续代码,【此题不会 打印 和(i++)】,返回while,重新判断——导致死循环

#include
int main()
{
    int i = 1;
    while(i<=10){
        if(i == 5)
        /// {continue;}
            continue;    // 当 i = 5时,执行continue,
       printf("%d  ",i);   //后面8,9行(即循环中continue后面的代码)都不会执行,直接跳到while重新判断,死循环
        i++;    
    }
    return 0;
}  // ===> 1 2 3 4 .......(死循环) 
i++在前:
#include
int main()
{
    int i = 1;
    while(i<=10){
        if(i == 5)
        // {continue;}
            continue;    // 当 i = 5时,执行continue,
       printf("%d  ",i);   //后面8,9行(即循环中continue后面的代码)都不会执行,直接跳到while重新判断,死循环
        i++;    
    }
    return 0;
}  // ===> 1 2 3 4 .......(死循环) 

(3)getchar()和putchar()

  • getchar():获取用户从键盘上输入的一个字符,为int型
  • putchar():打印字符
#include
int main()
{
    int ch = 0;
    while((ch = getchar()) != EOF)
    {
        //printf("%c",ch);
        putchar(ch);   
    }
    return 0;
}

初阶C语言:循环语句_第1张图片

(4)举例:输入密码并确认

  • 第一步:假设输入密码为:12334asd,输入完成后,按回车(\n)

char password[20]={0};
printf("请输入密码:>");
scanf("%s",password); 

  • 读取\n,防止 “int ret = getchar()” 被\n占用,而导致代码出错

getchar();
  • 第二步:存在局限性,密码中有空格(密码为"123 456asdf"),仍是存在问题

int ch =0;
while(ch = getchar() != '\n')
{
   ;   //空语句         
}    //    将"\n"包括"\n"之前的字符都清理掉了
  • 第三步:判断密码是否确认

printf("请确认密码(Y/N):>");
int ret = getchar();
if(ret == 'Y')
{
    printf("yes\n");    
}
else{
    printf("no\n");    
}
  • 综合

// 输入密码并确认
#include
int main()
{
    char password[20]={0};
    printf("请输入密码:>");
    //假设输入密码为:12334asd,输入完成后,按回车(\n)
    scanf("%s",password);      // scanf() 只读取 12334asd
    //getchar();    // 读取\n,防止 “int ret = getchar()” 被\n占用,而导致代码出错
    //存在局限性,密码中有空格(密码为"123 456asdf"),仍是存在问题
    int ch =0;
    while(ch = getchar() != '\n')
    {
        ;   //空语句         
    }    //    将"\n"包括"\n"之前的字符都清理掉了
    printf("请确认密码(Y/N):>");
    int ret = getchar();
    if(ret == 'Y')
    {
        printf("yes\n");    
    }
    else{
        printf("no\n");    
    }
    return 0;
}

初阶C语言:循环语句_第2张图片

(5)举例:数字字符就打印,其他字符就跳过

#include
int main()
{
    char ch = '\0';
    while(ch = getchar() != EOF)
    {
        if(ch < '0' || ch > '9')
            continue;
        putchar(ch);                                
    }
    return 0; 
}

初阶C语言:循环语句_第3张图片

2. for语句

(1)for循环的格式

for(表达式1;表达式2;表达式3)
    循环语句;

初阶C语言:循环语句_第4张图片

#include
int main()
{
    int i;
    for(i = 1; i<=10; i++){
        printf("%d ",i);    // 循环体  
   }
   return 0;
}    
/*
输出结果:
1 2 3 4 5 6 7 8 9 10
*/ 

(2)for循环的break和continue的用法

  • break

#include
int main()
{
    int i = 0;
    for(i = 1; i <= 10; i++)
    {
        if(i == 5)
            break;    // ===> 1 2 3 4 
        printf("%d ",i);                    
    }
    return 0;
}    
  • continue

#include
int main()
{
    int i = 0;
    for(i = 1; i <= 10; i++)
    {
        if(i == 5)
            continue;    // ===> 1 2 3 4 6 7 8 9 10
        printf("%d ",i);                    
    }
    return 0;
}    

(3)for语句的循环控制变量

  • 建议

    • 不可以在for循环体内修改循环变量,防止for循环是去控制
    • 建议for语句的循环控制变量的取值采取 “ 前闭后开区间 ” 写法<通俗易懂>
        1)前闭后开区间
int i = 0;
for(i = 0; i < 10; i++)
{}
        2)两边都闭区间
int i = 0;
for(i = 10; i<= 9; i++)
{}

(4)for循环的变种

  • 代码1:判断部分省略,意味着这个判断恒成立

#include
int main()
{
    for(;;) 
    {
        printf("hehe\n");    
    }// for 循环中的 初始化部分、判断部分、累加(减)调整部分 是可以省略的,但可能会存在问题
    return 0;
}
  • 代码2:省略初始化部分

#include
int main()
{
     int i = 0;
     for(; i < 10; i++)
     {
         printf("hehe\n");     
     }
    return 0;
}
  • 代码3:for循环嵌套

#include
int main()
{
      int i = 0;
      int j = 0;
      for(i = 0; i < 10; i++)
      {
          for(j = 0; j < 10; j++) 
          {
              printf("hehe\n");          
          }     
      }
      return 0;
}    // ===>打印 100 个 “hehe”

初阶C语言:循环语句_第5张图片

  • 代码4:在for语句的 “ () ” 内定义循环变量

#include
int main()
{
      for(int i = 0; i < 10; i++)    // c99语法才支持这种写法(c++支持)
      {
          printf("hehe\n");              
      }
      return 0;
}    
  • 代码5:使用多余一个的变量控制循环

#include
int main()
{
      int x, y;
      for(x = 0, y = 0; x < 2 && y < 5; ++x, y++)
      {
          printf("hehe\n");      
      }
      return 0;
}  

(5)练习:以下程序循环多少次?

#include
int main()
{
      int i = 0;
      int k = 0;
      for(i = 0, k = 0; k = 0; k++)
          k++;
      return 0;
}
// ===> 0次
// 因为 “ k = 0 ” 是赋值,为0,即为假,不满足,不进入循环

3. do...while语句

(1)do...while循环的格式

do
    循环语句;
while(表达式);
#include
int main()
{
    int i = 11;
    do
    {
        printf("%d", i);
        i++;
    } while (i < 10);
    return 0;
}    
// ===> 11 ;
// 即使不满足 while 条件表达式,仍然会 do 一次(执行一次)

(2)do...while的break和continue的用法

  • i++在后

#include
int main()
{
    int i = 1;
    do
    {
        if(i == 5)
            break;        // 若是 continue ,则输出 1,2,3,4,... 循环到  i=5 时,形成死循环 
        printf("%d ", i);
        i++;
    } while (i < 10);
    return 0;
}    
// ===> 1 2 3 4 ;break 直接终止循环
  • i++在前

#include
int main()
{
    int i = 1;
    do
    {
        i++;
        if(i == 5)
            break;        // 若是 continue ,则输出 2,3,4,6,7,8,9
        printf("%d ", i);

    } while (i < 10);
    return 0;
}     
//===> 2,3,4

你可能感兴趣的:(c语言,开发语言)