C语言中提供了3种循环执行的语句,首先我们来看一下do语句。

1.do语句

首先我们对上一篇的代码(显示输入的整数是奇数还是偶数)进行如下修改:

输入一个整数,显示出来它是奇数还是偶数。然后询问是否进行同样的操作,并按要求进行处理。

修改之后,无需重新启动,我们就可以按照自己的意愿执行程序了,修改后的程序如下:

#include<stdio.h>
int main()
{
	int retry;
	do
	{
		int no;
		printf("请输入一个整数:");
		scanf("%d", &no);
		if (no % 2 == 1)
			printf("这个数是一个奇数。");
		else
			printf("这个数是一个偶数。");
		printf("需要再来一次吗?0-否/1-是");
		scanf("%d", &retry);
	} while (retry == 1);
	return 0;
}

我们运行一下看看效果:

C语言循环控制(do语句)_执行程序

do是“执行”的意思,while是“在....期间”的意思,根据do语句的处理流程,只要()中的表达式(控制表达式)的判断结果不为0,语句就会执行下去。大致流程图如下:

C语言循环控制(do语句)_#include_02

另外,do语句的循环的对象语句称为循环体。使用do语句的话,从键盘读取的数值是有限的,我们看下面的代码:

#include<stdio.h>
int main()
{
	int hand;
	do
	{
		printf("请选择出什么拳【0-石头/1-剪刀/2-布】:");
		scanf("%d", &hand);
	} while (hand < 0 || hand>2);
	printf("你选择了:");
	switch (hand)
	{
	case 0:
		printf("石头。\n");
		break;
	case 1:
		printf("剪刀。\n");
		break;
	case 2:
		printf("布。\n");
		break;
	}
	return 0;
}

我们看一下效果:

C语言循环控制(do语句)_#include_03

首先来执行一下。如果读取的数值是0、1、2这些“合法的值”,就会显示“石头”,“剪刀”,“布”.而如果输入的是3、-1这样的“非法的值”,就会提醒你再次输入。然后我们来看一下判断do语句的循环是否继续的控制表达式,如果变量hand的值为非法值(比0小或者比2大,即除0、1、2之外的非法值,比如3或-1),那么判断成立(控制表达式的判断结果为int型的1).于是作为循环体的复合语句会再次执行,并显示信息。