您的位置:首页 > 其它

流程控制《3》while

2015-06-20 15:10 274 查看
#include <stdio.h>

/*

1> while循环结构:

while (条件) {

代码段(循环体)

}

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

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

do {

循环体

} while (条件);

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

while和do...while的区别:

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

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

3,do...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,并不是在任何情况下,for和while都可以等价转化的

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

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

----------

跳转语句:

break能用在的地方:

1,switch...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("====== while和for并不会任何情况下都能等价转化的例子 ======\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;
//可以在{}内定义和循环变量同名的变量,因为它们处于不同的作用范围内
}

return
0;
}

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

return
0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: