流程控制《3》while

来源:互联网 发布:获取windows权限 编辑:程序博客网 时间:2024/05/28 22:10

#include <stdio.h>


/*

1> while循环结构:

while (条件) {

代码段(循环体)

}

while循环执行的流程:首先判断while右边的()中的条件,由条件的真假来决定是否进入下面的代码段(或者说是否执行下面的循环体):如果为真,执行代码段;否则跳过直接执行while{}之后的代码



2> do...while循环的结构:

do {

循环体

} while (条件);


do...while执行的流程是:首先进入do下面的循环体内执行代码,接着去判断条件是否成立,如果成立,进入下一轮循环;否则,直接跳过该循环,执行后续的代码

 

whiledo...while的区别:

1while是先判断条件,来决定是否进入循环。所以也称为当型循环,就是当条件成立时才执行循环。

2do...while是先执行一次循环,然后判断条件是否成立,来决定是否进入下一轮的循环。所以也称为直到型循环,就是只有当条件不成立时,才退出循环,否则一直执行循环。

  3do...while至少会执行一次,而while有可能一次也不执行(条件为假时)



3> for循环的结构:


for (语句1;条件;语句2) { 

循环体

}

其中:

语句1:初始化部分

语句2:增量

for循环执行的流程:首先执行语句1一次(也只会执行一次),接着判断条件是否成立,1>如果成立,进入循环体,之后执行语句2,再之后还要进行条件判断,由条件的真假来决定是否进入这次循环;2>如果条件不成立,直接跳过for循环,执行之后的代码


//简单流程示意:

for (1;2;3) {

4;

}

执行过程:1->2->4->3->2->4->3->2->4->3->....



for while 循环的比较:

1,并不是在任何情况下,forwhile都可以等价转化的

2for循环的性能更高,因为循环变量通常定义在for循环的初始化部分,这样就使得这个循环变量在for循环结束之后,占用的空间就被回收了,所以性能更高。


三种循环选择的顺序:for --> while --> do...while

----------

跳转语句:

break能用在的地方:

1switch...case

2,循环(while do...while for

作用是:跳出它所在的那个循环,继续执行循环{}之后的代码


continue能用在的地方:

1,循环(while do...while for

作用是:跳出本次循环,继续进行下一次循环(是否真正能进入下一次循环,取决于条件是否为真) 


goto

用于在函数内进行跳转


return 

用来退出所在的函数的


------------------------

死循环的写法:

第一种写法:

while (1) {

代码段

}

第二种写法:

for (;;) {

代码段

}

 

*/


int main()

{

//运动:仰卧起坐

/*

int count = 0;

while (count < 50) {


count++;

if (!(count % 10)) { //每做到10的整数倍时,跳过这一次

//continue; //当上面的if条件成立时,就会跳过本轮循环后续代码的执行,继续进入下一轮循环

break;

}

printf("做的是第%d次仰卧起坐\n", count);

}


printf("========do...while===========\n");

count = 0;

do {

count++;

if (count % 10 == 0) {

//continue;

break;

}

printf("做的是第%d次仰卧起坐\n", count);

} while (count < 50);

*/


/*

printf("========for===========\n");


//for循环的初始化部分,在C89的标准中,是不允许定义新的变量的,只有C99和之后的标准才允许;如果编译时发现报错,需要在编译时加上编译选项-std=c99

for (int count = 1; count <= 50; count++) {


if (!(count % 10)) {

//continue;

break;

}


printf("做的是第%d次仰卧起坐\n", count);

}


//printf("out for, count = %d\n", count); //count的作用域限定在for循环中,出了for循环,不能被访问

*/


//printf("====== whilefor并不会任何情况下都能等价转化的例子 ======\n");


//int a = 5;

/*

while (a > 0) {

if (a % 2) {

continue;

}

printf("a = %d\n", a);

a--;

}

*/

/*

for (a = 5; a > 0; a--) {

if (a % 2) {

continue;

}

printf("a = %d\n", a);

}

*/


/*

//for循环使用的陷阱1

for (int a = 10; a > 0; a--, b++) { //error

int b = 0; //b的作用范围仅仅限制在for{}之间

}

*/

/*

//for循环使用的陷阱2

for (int a = 10; a > 0; a--) //error

//int b = 0; //作用域范围不明确,所以编译器直接报错

*/


//for循环使用的陷阱3

for (int a =10; a >0; a--) {//ok

int a =1;//可以在{}内定义和循环变量同名的变量,因为它们处于不同的作用范围内

}


return0;

}

#include <stdio.h>


int main()

{

printf("请选择您要进行的运算:\n1加法\n2减法\n");


int choice;

scanf("%d", &choice);//2


while (choice !=1 && choice !=2) {

printf("输入不合法,请重新输入:\n");

scanf("%d", &choice);

}


printf("请输入两个整数进行您选择的运算操作(两个整数之间用空格分隔)\n");


int num1, num2;

scanf("%d %d", &num1, &num2);

int result;

if (choice ==1) {

result = num1 + num2;

printf("%d + %d = %d\n", num1, num2, result);

}else {

result = num1 - num2;

printf("%d - %d = %d\n", num1, num2, result);

}


return0;

}



0 0
原创粉丝点击