嵌入式学习C语言(五)循环控制

目录

一、循环三要素

二、go to语句(禁用)

三、while语句

四、do while语句

五、for语句

六、循环嵌套

七、break  continue


一、循环三要素

1.循环变量的初始化

2.有循环条件

3.有使循环趋于结束的语句。

二、go to语句(禁用)

1.goto语句为无条件转向语句,一般形式为:goto 语句标号;

2.禁用该语句

eg  与if构成循环      loop位语句标号,通过goto语句,可以到达loop所在代码的地方

        int i;

        int sum = 0;

        i = 1;          //循环变量初始化

loop:

        if(i <= 100)  //循环条件

        {

                sum += i;

                ++i;      //使循环趋于结束的语句

                goto loop;

        }

   printf("%d\n",sum);

   return 0;

三、while语句

一般形式为   while(表达式)语句   

 先判断表达式后执行语句    循环变量最终的值为第一次不满足循环条件的值

谷歌要求规范:无论有几行执行代码,“{}”不能省且独占一行;

eg    判断输入的数是否为回文数

int n;
scanf("%d",&n);
int m=0;
int k=n;

while(n!=0)
{
    m=m*10+n%10;
    n/10;
}

if(m==k)
{
    printf("yse\n");
}
else
{
	printf("no\n")
}

四、do while语句

1.一般形式

do

    循环体语句

while(表达式);

2.先执行一次指定的循环体语句,然后判别表达式 

3.while(表达式);后的“;”不能省,会编译报错。

4.适用于某些必须要先执行一次循环体的情景

五、for语句

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

for(循环变量赋初值;循环条件;循环变量变化)语句

2.for语句的一般形式中的“表达式1”可以省略,此时应在for语句之前给循环变量赋初值。注意,省略表达式1时,其后的分号不能省略。

eg  打印三位数的水仙花数

int main(void)
{
	int i;
	for(i = 100;i < 1000;++i)
	{
		int a, b, c;
		a = i % 10;
		b = i / 10 % 10;
		c = i / 100;
		if(a * a * a + b * b * b + c * c * c == i)
		{
			printf("%d\n", i);
		}
	}
	return 0;
}

六、循环嵌套

eg 1.  1-10000之间的水仙花数

	int i;

	int m = 0;
	for(i = 0;i < 10000;++i)
	{
		int n = i;
		m = 0;
		while(n)
		{
			m = m * 10 + n % 10;
			n /= 10;
		}

		if(m == i)
		{
			printf("%d\n", i);
		}

	}

eg2    九九乘法表

	int i, j;
	for(i = 1;i < 10;++i)
	{
		for(j = 1;j <= i;++j)
		{
			printf("%2d X %2d = %2d   ", j, i, j * i);
		}
		printf("\n");
	}

eg3  计算阶乘的和

    int n = 3;
	int sum = 0;
	int i, j;
	for(i = 1;i <= n;++i)
	{
		int t = 1;
		for(j = 1;j <= i;++j)
		{
			t *= j;
		}
		sum = sum + t;
	}
	printf("%d\n", sum);

七、break  continue

1.break只能打断当前所在循环,直接跳出整个循环

2.可通过再次判断循环条件来判断一个循环是正常结束还是break跳出的 如下eg

eg  打印100之内的素数   

	int i, j;
	for(i = 2;i <= 100;++i)
	{
		for(j = 2;j < i;++j)
		{
			if(i % j == 0)
			{
				break;
			}
		}

		if(!(j < i))
		{
			printf("%d\n", i);
		}
	}
	return 0;

3.continue是短路本次循环,跳过循环体下边未执行的语句,接着进行下一次是否执行循环的判定。

eg  找出0-100能被3整除的数

	int i;
	int t = 0;
	for(i = 0;i < 100;++i)
	{
		if(i % 3 != 0)
		{
			continue;
		}
		printf("%d ", i);
		++t;

		if(t % 8 == 0)
		{
			printf("\n");
		}
	}
	printf("\n");
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值