1. 预习知识
计算机编程三大结构:
(1)顺序结构:从上至下,从左至右的执行程序
之前所学的程序都是顺序结构
(2)选择结构(分支结构):按条件选择执行某段程序
需要使用 if(flag) { } 来判断 flag 的真假,
若为真,着执行接下来 {} 里面的语句,否则不执行。
(3)循环结构:循环执行某段程序
有以下三种方式:
a. for(int i=0; i<length; i++){ }
b. while(flag){ }
c. do{ } while(flag);
(4)补充一个:跳转语句 goto
goto here;
here:
cout<<"2"<<endl;
=========分割线============
here:
cout<<"2"<<endl;
goto here;
这两句代码的执行结构可是大不相同的哦!!!
前者指执行一次,后者循环执行
2. if
先来一段代码
#include<iostream>
using namespace std;
int main(){
bool flag = true;
if(flag){
cout<<"true"<<endl;//true
}
if(!flag){
cout<<"false"<<endl;//不执行
}
return 0;
}
所以我们看见使用 if(flag) { } 来判断 flag 的真假,若flag为真,着执行接下来 {} 里面的语句,否则不执行;
#include<iostream>
using namespace std;
int main(){
bool flag = true;
if(!flag){
cout<<"false"<<endl;//不执行
}else{
cout<<"true"<<endl;//true
}
return 0;
}
由于 !flag = false
,所以不执行其后面{ }的内容,直接执行 else
后面{}的内容;
#include<iostream>
using namespace std;
int main(){
bool flag = true;
if(!flag){
cout<<"false1"<<endl;//不执行
}else if(flag){
cout<<"true1"<<endl;//true1
}else{
cout<<"false2"<<endl;//不执行
}
return 0;
}
分析:执行结果只输出了:true1,是因为!flag=false
,false1的那段语句不执行,并且 flag = true
,当 else if(flag)
判断时为真,执行true1的语句,由于此时语句已经执行过了,就不再执行else
及其之后的程序了。
练习:看以下程序,会输出什么结果:
#include<iostream>
using namespace std;
int main(){
bool flag = true;
if(!flag){
cout<<"false1"<<endl;
}else if(flag){
cout<<"true1"<<endl;
}else if(flag){
cout<<"true2"<<endl;
}else{
cout<<"false2"<<endl;
}
return 0;
}
分析:flag = true; !flag = false;
所以 false1 不执行,true1 执行,由于 true1执行了,就不再判断接下来的 else if,所以 true2 不执行,false2 不执行。
所以该程序输出结果:true1
3. for
for(预定义条件 ; 判断条件; 执行代码 ){
执行代码
}
预定义条件和执行代码都可以省略,唯独判断条件不可省略。
比如:
for( ; false; ){} //由于判断条件为假,所以不执行
for( ; true; ){} //由于判断条件为真,所以循环执行
练习:使用for输出1~10
#include<iostream>
using namespace std;
int main(){
for(int i=1; i<=10; i++){
cout<<i<<" ";
}
return 0;
}
4. while
while循环有2种,当型循环和直到型循环,主要区别是执行和判断执行条件的先后不同;
当型循环:while(flag){} //先判断,再执行
直到型循环:do{}while(flag); //先执行一次,再判断
练习:看程序写结果,自己先做,最后有答案。
while 练习(1):下列程序输出什么结果
#include<iostream>
using namespace std;
int main(){
bool flag = true;
int i = 0;
while(flag){
cout<<"i = "<<i++<<endl;
}
return 0;
}
while 练习(2):下列程序输出什么结果
#include<iostream>
using namespace std;
int main(){
bool flag = true;
int i = 0;
while(flag){
cout<<"i = "<<i++<<endl;
if(i==5){
flag = false;
}
}
return 0;
}
while 练习(3):下列程序输出什么结果
#include<iostream>
using namespace std;
int main(){
bool flag = false;
int i = 0;
while(flag){
cout<<"i = "<<i++<<endl;
}
return 0;
}
do…while 练习(4):下列程序输出什么结果
#include<iostream>
using namespace std;
int main(){
bool flag = false;
int i = 0;
do{
cout<<"i = "<<i++<<endl;
}while(flag);
return 0;
}
do…while 练习(5):下列程序输出什么结果
#include<iostream>
using namespace std;
int main(){
bool flag = true;
int i = 0;
do{
cout<<"i = "<<i++<<endl;
if(i>=5){
flag = false;
}
}while(flag);
return 0;
}
练习答案
while 练习(1):下列程序输出什么结果
bool flag = true;
int i = 0;
while(flag){
cout<<"i = "<<i++<<endl;
}
(1)答案:由于flag=true,所以一直循环输出: i=?
while 练习(2):下列程序输出什么结果
bool flag = true;
int i = 0;
while(flag){
cout<<"i = "<<i++<<endl;
if(i==5){
flag = false;
}
}
(2)答案:当i=5时,flag=false,所以输出结果为:
i = 0
i = 1
i = 2
i = 3
i = 4
while 练习(3):下列程序输出什么结果
bool flag = false;
int i = 0;
while(flag){
cout<<"i = "<<i++<<endl;
}
(3)答案:由于flag=false,所以while循环不执行,无输出。
do...while 练习(4):下列程序输出什么结果
bool flag = false;
int i = 0;
do{
cout<<"i = "<<i++<<endl;
}while(flag);
(4)答案:虽然 flag = false,但是是直到型循环,会先执行一次,所以输出结果为:
i = 0
do...while 练习(5):下列程序输出什么结果
bool flag = true;
int i = 0;
do{
cout<<"i = "<<i++<<endl;
if(i>=5){
flag = false;
}
}while(flag);
(5)答案:当i>=5时,flag = false,所以输出结果为:
i = 0
i = 1
i = 2
i = 3
i = 4