流程控制《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;
}
/*
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;
}
相关文章推荐
- [leetcode] Largest Number
- 分金币 Uva 11300
- Andriod开发环境搭建
- linux命令
- swift学习 一 基础部分 (上)
- android 中ListView 的优化
- 流程控制《2》switch
- linux命令
- [POJ 1330] Nearest Common Ancestors (倍增法)
- Convolutional Neural Networks for Visual Recognition 3
- OpenGL导入三维模型
- 流程控制《1》if
- 软件工程师需要数学的真正理由
- 帝国ECMS6.5灵动标签汇集
- POJ 1067 && HDU 1527 取石子游戏(博弈论)
- 杭电1302 The Snail
- 我是十娘沉梦江,遍洒芳汀,东流少语,喜欲狂,刹时惊梦,空一场!
- ListView已到底部和顶部的判断
- javascript基本包装类型
- 又是整数划分(poj1032)