【TUM-EI-Programmieren】 208 - while & do-while

while的格式结构

while (表达式)
{
        语句;
}

do while的格式结构

do
{
    语句;
}
while (表达式);

do…while 和 while 的执行过程非常相似,唯一的区别是:“do…while 是先执行一次循环体,然后再判别表达式”。当表达式为“真”时,返回重新执行循环体,如此反复,直到表达式为“假”为止,此时循环结束。

现在问一个问题:你认为 while 和 do…while 是否等价?它们是否可以相互转换?我们前面讲,while 和 for 是完全等价的,它们是可以相互转换的。那 do…while 和 while、for 等价吗?它们可以相互转换吗?

答案是“不能”。原因十分简单,while 循环体内部不一定会执行,当表达式一开始就为假的时候它就不会执行。但 do…while 不管表达式开始为真还是为假,循环体内部都会先执行一次。


do-while循环形式:

#include <stdio.h>


int main()
{
	char antwort = 'd';

	do
	{
		printf("\n");
		printf("Menue\n");

		printf("a)  Mensa Innenstadt\n");
		printf("b)  Steinheil\n");
		printf("c)  Thai Magie\n");
		printf("d)  Beenden\n");
		printf("\n");

		printf("Bitte waehlen Sie eine Aktion aus: ");
		scanf(" %c", &antwort);

		if (antwort == 'a' || antwort == 'A') 
		{
			printf("Es gibt Krautspaetzle. Verdauungsschlaf am Nachmittag.\n");
		}
		else if (antwort == 'b' || antwort == 'B')
		{
			printf("Grosses Schnitzel mit Bratkartoffeln.\n");
		}
		else if (antwort == 'c' || antwort == 'C')
		{
			printf("Menue 503. Es lebe die Mikrowelle.\n");
		}
	} while (antwort != 'd' && antwort != 'D');	

}


while循环形式:

​
#include <stdio.h>


int main()
{
	char antwort; //把这个赋值改一下就行,感谢哲哥

	while (antwort != 'd' && antwort != 'D')
	{
		printf("\n");
		printf("Menue\n");

		printf("a)  Mensa Innenstadt\n");
		printf("b)  Steinheil\n");
		printf("c)  Thai Magie\n");
		printf("d)  Beenden\n");
		printf("\n");

		printf("Bitte waehlen Sie eine Aktion aus: ");
		scanf(" %c", &antwort);

		if (antwort == 'a' || antwort == 'A') 
		{
			printf("Es gibt Krautspaetzle. Verdauungsschlaf am Nachmittag.\n");
		}
		else if (antwort == 'b' || antwort == 'B')
		{
			printf("Grosses Schnitzel mit Bratkartoffeln.\n");
		}
		else if (antwort == 'c' || antwort == 'C')
		{
			printf("Menue 503. Es lebe die Mikrowelle.\n");
		}
	}

}

​
#include <stdio.h>


int main()
{
	char antwort = 'd';

	while(antwort != 'd' || antwort != 'D')
	{
		printf("\n");
		printf("Menue\n");

		printf("a)  Mensa Innenstadt\n");
		printf("b)  Steinheil\n");
		printf("c)  Thai Magie\n");
		printf("d)  Beenden\n");
		printf("\n");

		printf("Bitte waehlen Sie eine Aktion aus: ");
		scanf(" %c", &antwort);

		if (antwort == 'a' || antwort == 'A') 
		{
			printf("Es gibt Krautspaetzle. Verdauungsschlaf am Nachmittag.\n");
		}
		else if (antwort == 'b' || antwort == 'B')
		{
			printf("Grosses Schnitzel mit Bratkartoffeln.\n");
		}
		else if (antwort == 'c' || antwort == 'C')
		{
			printf("Menue 503. Es lebe die Mikrowelle.\n");
		}
		else if (antwort == 'd' || antwort == 'D')
		{
			break;
		}
	} 

}

for循环形式: 

#include <stdio.h>


int main()
{
	char antwort = 'd';

	for(;;)
	{
		printf("\n");
		printf("Menue\n");

		printf("a)  Mensa Innenstadt\n");
		printf("b)  Steinheil\n");
		printf("c)  Thai Magie\n");
		printf("d)  Beenden\n");
		printf("\n");

		printf("Bitte waehlen Sie eine Aktion aus: ");
		scanf(" %c", &antwort);

		if (antwort == 'a' || antwort == 'A') 
		{
			printf("Es gibt Krautspaetzle. Verdauungsschlaf am Nachmittag.\n");
		}
		else if (antwort == 'b' || antwort == 'B')
		{
			printf("Grosses Schnitzel mit Bratkartoffeln.\n");
		}
		else if (antwort == 'c' || antwort == 'C')
		{
			printf("Menue 503. Es lebe die Mikrowelle.\n");
		}
		else if (antwort == 'd' || antwort == 'D')
		{
			break;
		}
	} 

}


for、while、do while间转换_福祸无门的博客-CSDN博客_while改成do whilehttps://blog.csdn.net/zhoufeiy/article/details/54142478

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值