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;
}
}
}