分支与循环(中)

前言:

      C语言提供了3种循环结构,分别为while循环for循环do-while循环

  1.  for循环适合针对一个范围判断进行操作,即已知循环次数。
  2. while循环适合判断次数不明确 的操作,切循环结束后依旧可以使用。
  3.  for、while循环都必须先判断条件是否成立,然后决定是否执行循环体。
  4.  do...while循环比较特殊,它先执行循环体,然后根据判断条件决定是否再次执行循环,即   do...while至少执行一次循环。

1.while循环

1.1 while循环语法与if语句语法相似:

1. while(表达式)
2.       语句;

1.2 while语句的执行流程

 1.3 练习:

        输入一个正的整数,逆序打印这个整数的每一位

  例如:

  输入:1234,输出:4 3 2 1

  输入:521,输出:1 2 5

1. #include<stdio.h>
2. 
3. int main()
4. {
5.      int n = 0;
6.      scanf("%d ",&n);
7.      while(n)
8.      {
9.          printf("%d ",n%10);
10.         n /= 10;
11.     }
12.     return 0;
13. }

2. for循环 (使用最多)

2.1 语法形式:

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


//表达式1 用于循环变量的初始化
//表达式2 用于循环结束条件的判断
//表达式3 用于循环变量的调整

注:切记在for循环表达式括号后不要加分号,否则会将循环变成空语句;如:

不加分号:

int main()
{

		int i = 0;
		for (i = 1; i <= 10; i++)
			printf("%d ", i);
	return 0;
}

 加分号:

int main()
{

		int i = 0;
		for (i = 1; i <= 10; i++);
			printf("%d ", i);
	return 0;
}

 由此可见:

“;”表示本行语句结束,在for后面加上“;”说明for已经结束,表示不进行任何代码的执行,就相当一个空语句。注意以下语句的分号“;”。

1. for (i=1;i<10;i++)  表示可以执行到i=9,注意此时i=10,但不执行。

2. for (i=1;i<10;i++) ; 表示不执行该语句,只计算i的值,注意此时i=10,如i=9时,9<10,则i+1。

3.for (i=1;i++<10;) 当i=9,时,因9<10,执行for循环,此时i+1=10,即,此时i的值是10。

4.for (i=1;i++<10;);表示不执行该语句,只计算i的值,由于i++是先返回i的值,然后再‘执行’i = i + 1;

在i = 9时9 < 10成立,然后i = i +1; i为10,并进入‘循环’,10 < 10不成立,i = i + 1; 并退出‘循环’,此时i为11 。

摘抄自:穿着大号裤衩

2.2 for循环的流程图

   

2.3 练习:

      使用for循环打印九九乘法表 

1.  int main()
2.  {
3.  	int i = 0;//i为行数
4.	    for(i = 1; i < 10; i++)
5.	    {
6.		  int j = 0;//j为列数
7.		  for (j = 1; j <= i; j++)
8.		  {
8.			printf("%d*%d=%d\t", j, i, i * j);
10.		  }
11. 	  printf("\n");
12. 	}
13.
14.    return 0;
15.  }

3. do-while循环(使用最少)

3.1 语法形式

1. do
2.    语句;
3.while(表达式);

注:do-while循环先进入循环体,执行循环语句,之后再判断表达式是否为真。

3.2 执行流程

 由图可知:do while循环循环体至少执行一次

3.3 练习

输入一个正整数,计算这个整数是几位数?

例如:

输入:1234   输出:4

输入: 12      输出:2

1.#include<stdio.h>
2.int main()
3.{
4.  int n = 0;
5.  scanf("%d", &n);
6.  int cnt = 0;
7.  do
8.  {
10.       cnt++;
11.       n = n / 10;
12. } while (n);
13. printf("%d\n", cnt);
14.
15. return 0;
16 }

n即使为0,也为一位数,故用do while循环更为合适.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值