C语言知识点:for循环和do...while循环

(上节课剩余部分)分析下列代码:

int main()

{

     int ret = 0;

     int ch = 0;

     char password[20] = { 0 };

     printf("请输入密码>:");

     scanf("%s", password);//输入密码,并存放在password数组中

     //缓冲区还剩余一个'\n,前面输入的内容是密码内容+回车(即\n),密码内容被拿走了缓冲区还剩下\n

     while ((ch = getchar()) != '\n')//读取一下'\n',起到清空缓冲区的作用

     {

         ;//空语句

}

     //注意,scanf它遇到空格,换行符或者制表符就会停止

     printf("请确认(Y/N)>:");

     ret = getchar();//要么接收Y,要么接收N

     if (ret == 'Y')

         printf("确认成功\n");

     else

         printf("放弃确认\n");

     return 0;

}

代码2

int main()

{

     int ch = 0;

     while ((ch=getchar())!=EOF)

     {

         if (ch < '0' || ch>'9')

              continue;

         putchar(ch);

     }

     return 0;

}

//这段代码可以限定输入的内容为数字

for循环

我们已经知道了while循环,但是我们为什么还要一个for循环呢?首先来看看for循环的语法:

语法

     for (表达式1; 表达式2; 表达式3)

         循环语句;

表达式1为初始化部分,用于初始化循环变量。表达式2为条件判断部分,用于判断循环时候终止。表达式3为调整部分,用于循环条件的调整。

例:

int main()

{

     int i = 0;

     for (i = 1 ; i <= 10 ; i++)

     {

              //break;

              continue;

         printf("%d ", i);

     }

     return 0;

}

for语句的循环控制变量

一些建议:

  1. 不可在for循环体内修改循环变量,防止for循环失去控制;
  2. 建议for语句的循环控制变量的取值采用“前闭后开区间”写法。

例:

int main()

{

     int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

     int i = 0;

     for (i = 0; i < 10; i++)//前闭后开的写法,这样的写法让10具有了某种意义,如10次循环/打印/元素

     {

         printf("%d ", arr[i]);

     }

     return 0;

}

两边都是闭区间写法:

int main()

{

     int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };

     int i = 0;

     for (i = 0; i <= 9; i++)//两边都是闭区间写法

     {

         printf("%d ", arr[i]);

     }

     return 0;

}

一些for循环的变种

//变种1

int main()

{

     for (;;)

     //for循环的初始化、调整和判断都可以省略

     //但是for循环的判断部分如果被省略,那判断条件就是:恒为真

     //如果不是非常熟练,建议大家不要随便省略

     {

         printf("hehe\n");

     }

     return 0;

}
//变种2

int main()

{

     int x, y;

     for (x = 0, y = 0; x < 2 && y < 5; ++x, y++)

     {

         printf("hehe\n");

     }

     return 0;

}

一道笔试题:

//请问要循环多少次

int main()

{

     int i = 0;

     int k = 0;

     for (i = 0, k = 0; k = 0; i++, k++)//这里的判断k=0是赋值,0为假,故此代码循环0次

         k++;

     return 0;

}

do…while()循环

do语句的语法:

     do

         循环语句;

     while (表达式);

do语句的特点

循环至少执行一次,使用的场景有限,所以不是经常使用

do while循环中的break和continue

例:

int main()

{

//打印1-10

     int i = 1;

     do

     {

         if (i == 5)

              //break;

              continue;

              printf("%d ", i);

         i++;

     }

     while (i <= 10);

     return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值