C语言——循环语句

        C语言是结构化的程序设计语言,这里的结构是指:顺序结构、循环结构、选择结构。在C语言中,有三种循环语句,下文将一一介绍如何在C语言编程时使用。

1. while语句

        while语句的语法形式如下:

1 while(表达式);

2 {

        语句;

    }

        示例代码: 

// while后的表达式为真,死循环打印 Hello World!
#include <stdio.h>
int main()
{
	while (1)
	{
		printf("Hello World!\n");
	}
	return 0;
}

       while语句的执行流程如下:

        首先,执行判断表达式,若表达式为真,则执行循环语句,语句执行结束后再继续判断表达式是否为真,是否进行下一次循环;若表达式为假,循环结束。

        练习代码:

//练习代码1:打印0~10的值
#include <stdio.h>
int main()
{
	int i = 0;
	while (i <= 10)
	{
		printf("%d ", i);
		i++;
	}
	return 0;
}

//练习代码2:输入一个正整数,逆序打印这个正整数的每一位。
#include <stdio.h>
int main()
{
	int i = 0;
	int a = 0;
	scanf_s("%d", &i);
	while (i != 0)
	{
		a = i % 10;
		i = i / 10;
		printf("%d ", a);
	}
	return 0;
}

2. for语句

        for语句的语法形式如下:

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

2 {

        语句;

    } 

       示例代码:

//打印0~10的值
#include <stdio.h>
int main()
{
	int i = 0;
	for (i = 0; i <= 10; i++)
	{
		printf("%d ", i);
	}

	return 0;
}

       for语句的执行流程如下:

         首先,执行表达式1初始化循环变量。然后执行表达式2的判断条件,若表达式2为假,则跳出循环体;若表达式2为真,则执行循环语句。循环语句执行后,再去执行表达式3,调整循环变量。然后再去执行表达式2的判断条件,决定是否继续循环。需要注意的是,整个循环过程,表达式1初始化循环变量只执行1次,只有表达式2、循环语句和表达式3在循环。

        练习代码:

//练习代码:计算1~100之间3的倍数之和
#include <stdio.h>
int main()
{
	int i = 0;
	int sum = 0;
	for (i = 0; i <= 100; i++)
	{
		if (i % 3 == 0)
		{
			printf("%d ", i);
			sum = sum + i;
		}
	}
	printf("\n%d\n", sum);

	return 0;
}

3. do-while语句

         do-while语句的语法形式如下:

 1 do

2 {

        语句;

   }while(表达式);

         示例代码:

//示例代码:打印0~10的值
#include <stdio.h>
int main()
{
	int i = 0;
	do
	{
		printf("%d ", i);
		i++;
	}while (i <= 10);

	return 0;
}

         do-while语句的执行流程如下: 

         首先,do-while语句先执行循环语句,然后再执行while后的判断表达式,若表达式为真,则会进行下一次循环;若表达式为假,则会跳出循环体。需要注意的是,while语句和for语句这两种循环都是先判断表达式真假,再决定是否执行循环语句,而在do-while语句中会直接执行一次循环语句,再进行判断语句,所以do-while语句中循环体至少执行一次。

        练习代码:

//练习代码:输入一个正整数,计算这个整数是几位数?
#include <stdio.h>
int main()
{
	int i = 0;
	int count = 0;
	scanf_s("%d", &i);
	do
	{
		count++;
		i /= 10;//i = i / 10

	}while (i);
	printf("count = %d", count);

	return 0;
}

4. break语句和continue语句

        在循环执行的过程中,如果需要提前终止循环,就需要用到 break和continue这两个关键字。

        break是用于永久终止循环,即只要break语句被执行,就会直接跳出循环体,执行后面的程序。

        continue是跳过本次循环中continue后的代码,在while语句和for语句中有所差异,需要具体问题具体分析。

4.1 while语句中的break和continue 

4.1.1 break

        示例代码:

//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
		{
			break;//当i等于5时,循环就终止了
		}
		printf("%d ", i);
		i++;
	}

	return 0;
}

        输出结果: 

        代码分析:输出1,2,3,4后,当i等于5后,循环在break的地方终止。不再输出,循环彻底终止。所以brake的作用就是永久终止循环,只要break被执行,break外的第一层循环就终止了。当使用while语句时想在某种条件下终止循环,则可使用break实现。

4.1.2 continue

        示例代码:

//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		if (i == 5)
		{
			continue;
			/*
			* 当i等于5后,执行continue,直接跳过continue后的代码,去执行判断表达式。
			* 这里跳过i++这条语句,变量没有调整,故i一直是5,程序陷入死循环。
			*/
		}
		printf("%d ", i);
		i++;
	}

	return 0;
}

输出结果: 

        代码分析:continue在循环中作用是跳过本次循环中continue后的代码,继续进行下一次循环判断。当i等于5后,执行continue,直接跳过continue后的代码,去执行判断表达式,跳过i++这条语句,变量没有调整,故i一直是5,程序陷入死循环。如果循环的调整语句在continue前,就不会陷入死循环。

4.2 for语句中的break和continue 

4.2.1 break

        示例代码:

//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
		{
			break;
		}
		printf("%d ", i);
	}

	return 0;
}

        输出结果: 

        代码分析:在for语句中,break也是用于终止循环的,不管循环了多少次,只要执行了break,循环就彻底终止。

4.2.2 continue

        示例代码:

//示例代码:分析一下代码执行结果?
#include <stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		if (i == 5)
		{
			continue;//这里continue跳过了i=5时输出,直接执行了i++的调整部分
		}
		printf("%d ", i);
	}

	return 0;
}

         输出结果: 

        代码分析: 在for语句中,continue作用是跳过本次循环中continue后的代码,直接去到循环的调整部分。在使用for语句编程时,若想满足某个条件时,本次循环无需再执行后续某些操作时,则可使用continue。

4.3 do-while语句中的break和continue

        do-while语句中的break和continue的作用和while语句中的break和continue的作用相似,这里不做赘述。

5. goto语句

        在C语言中,除了分支语句和循环语句,还有一种特殊的语句,这就是goto语句和跳转标号。goto语句的作用是在同一个函数内跳转到设置好的标号处。

        示例代码:

#include <stdio.h>
int main()
{
	printf("Hello World!\n");
	goto next;
	printf("ABCD\n");
next:
	printf("EFGH\n");

	return 0;
}

         输出结果:

  • 33
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值