程序流程结构

C++三种最基本的程序运行结构:顺序结构、选择结构、循环结构

一、选择结构

1.  if 语句

(1)单行格式 if 语句:if (条件) {条件满足执行的语句}

(2)多行格式 if 语句:if (条件) {条件满足执行的语句}  else{条件不满足执行的语句}

(3)多条件的 if 语句:if(条件1){条件1满足执行的语句} else if(语句2){条件2满足执行的语句} ......else{都不满足的执行语句}

 1 #include <iostream>
 2  using namespace std;
 3   
 4  int main()
 5   {
 6       //选择结构 单行 if 语句
 7       //用户输入分数,如果分数大于600,考上一本大学,在屏幕上输出
 8       //大于500,考上二本大学,屏幕输出
 9       //大于300,考上三本大学,屏幕输出
10       //小于等于300,未考上大学
11       //1.用户输入分数
12       float a=0;
13       cout << "请输入你的分数:" << endl;
14       cin >> a ;
15      
16       //2.打印用户输入的分数
17       cout << "您输入分数为" << a <<endl;
18     
19       //3.判断分数,如果分数大于600,考上一本大学,在屏幕上输出
20       if (a>600)
21          cout <<"恭喜考上一本" << endl;
22      else if (a>500)
23          cout <<"恭喜考上二本" << endl;
24      else if (a>300)
25          cout <<"恭喜考上三本" << endl;
26      else
27         cout<<"很遗憾"<<endl; 
28     
29       system("pause");
30       return 031  }    
if 语句实现是否考上大学

 

(4)嵌套 if 语句

 1 #include <iostream>
 2  using namespace std;
 3   
 4  int main()
 5   {
 6       //选择结构 单行 if 语句
 7       //用户输入分数,如果分数大于600,考上一本大学,在屏幕上输出,
 8       //在一本分数中,分数>700清华大学;分数>650人大;分数>600同济大学;
 9       //大于500,考上二本大学,屏幕输出
10       //大于300,考上三本大学,屏幕输出
11       //小于等于300,未考上大学
12       //1.用户输入分数
13       float a=0;
14       cout << "请输入你的分数:" << endl;
15       cin >> a ;
16      
17       //2.打印用户输入的分数
18       cout << "您输入分数为" << a <<endl;
19     
20       //3.判断分数,如果分数大于600,考上一本大学,在屏幕上输出
21       if (a>600)
22     {
23         cout <<"恭喜考上一本" << endl;
24        if (a>700)
25             cout<<"恭喜考入清华"<<endl;
26        if (a>650)
27             cout<<"恭喜考入人大"<<endl;
28        if (a>600)
29             cout<<"恭喜考入同济"<<endl;
30     }
31          
32      else if (a>500)
33          cout <<"恭喜考上二本" << endl;
34      else if (a>300)
35          cout <<"恭喜考上三本" << endl;
36      else
37         cout<<"很遗憾"<<endl; 
38     
39       system("pause");
40       return 041  }        
嵌套 if 语句

 

(5)三目运算符:通过三目运算符实现简单判断

语法:表达式1 ?表达式2:表达式3

#include <iostream>
using namesspace std;

int main()
{
    //三目运算符
    
    //创建三个变量a,将a与b作比较,将变量大的值赋给变量c
    int a=10,b=20,c=0;
    
    c=(a > b ? a : b);
    cout <<"c=" << c <<endl;

    //在c++中三目运算符返回的是变量,可以继续赋值
     (a > b ? a : b)= 100;
    cout <<"a=" << a <<endl;
    cout <<"b=" << b <<endl;

    system ("pause");
    return 0;
}    

三目运算符
三目运算符

注:在c++中三目运算符返回的是变量,可以继续赋值

 

2.  switch语句

语法:

switch (表达式)
{

    case 结果1:执行语句;breakcase 结果2:执行语句;break;
    ……
    default:执行语句;break;

}    

 

注:

  • break只表示向外跳出一层

  • switch里面不一定每一个case都要对应break,也不是整个switch的执行与一定要有break,仅作说明

  • 不一定需要default,所有case都不符合也可以顺序执行

#include <iostream>
using namespace std ;

int main()
{
    //给电影打分;10~9经典;8~7非常好;6~5一般;5分以下烂片。

    //1.提示用户打分
    cout <<"请给电影打分" <<endl;

    //2.用户开始打分
    int score;
    cin >> score;
    cout <<"您给电影打分" << score <<endl;

    //3.根据用户输入的分数来提示用户最后的结果;
    swich (score)
    {
        case 10:
                cout << "经典电影" <<endl;break; //退出当前分支
        case 9:
                cout << "经典电影" <<endl;break;
        case 8:
                cout << "非常好" <<endl;break;
        case 7:
                cout << "非常好" <<endl;break;
        case 6:
                cout << "一般" <<endl;break;
        case 5:
                cout << "一般" <<endl;break;
        default:
                 cout << "烂片" <<endl;break;

    }

    system("pause"):
    return 0;
}

switch小例子
switch小例子

 

小结:

if 与 switch的区别:

(1)switch 缺点:判断时候只能是整型或字符型,不可以是一个区间

(2)switch优点:结构清晰,执行效率高

(3)case里如果没有break,那么程序会一直向下执行

 

二、循环结构

1.  while循环语句

语法:while(循环条件)(循环语句)

ps:只要条件为真,就执行循环语句

#include <iostream>
using namespace std;

int main()
{
    int num=0;

    //避免死循环   
    while (num < 10)
    {
        cout << num <<endl;
        num++;
    }
    system("pause");
    return 0;
}    
while打印

注:在执行循环语句的时候,程序必须提供跳出循环的出口,否则出现死循环

小案例:猜数字

#include <iostream>
using namespace std;
#include <ctime>   //time系统时间头文件

int main()
{
    //添加随机数种子:利用当前系统时间生成随机数,防止每次随机数都一样
    srand((unsigned int) time (NULL));

    //1.系统生成随机数
    int num=rand()%100 +1;    // rand()%100生成0~99的随机数,rand不是伪随机数
    //cout << num <<endl;

    //2.玩家进行猜测
    int val =0;
  
    
    //3.判断玩家猜测
    while(1)
    {
        cin >> val;
        if(num>val)
            {
                cout << "猜小了"<<endl;
            }
        else if(num<val)
            {
                cout << "猜大了"<<endl;
            }   
        else
            {
                cout << "恭喜猜对了"<<endl;
                break;   //break,可以利用该关键字来退出当前循环
            }    
    }

    system("pause");
    return 0;
}       

while猜数字
while猜数字

 

2.  do ... while循环语句

语法:do{循环语句} while{循环条件};

注:与while的区别在于do...while会先执行一次循环语句,再判断循环条件

#include <iostream>
using namespace std;

int main()
{
    //在屏幕中输出0到9
    
    int num=0;
    do
    {
        cout << num <<endl;
        num++;
    }
    while (num < 10);
     //do...while先执行一次;

    system("pause");
    return 0;
}
do...while

案例:水仙花数是指一个3位数,它的每个位上的数字的3次幂之和等于它自己本身.请用 do...while 写出代码。

例如:1^3+5^3+3^3=153

#include <iostream>
using namespace std;

int main()
{
    cout << "输出三位数字的水仙花数" << endl;
    int num = 100;
    do
    {     //获取个位数
           int a=num %10; 
           //获取十位数
           int b=num /10 %10;
            //获取百位数
            int c=num/100;
            if (a*a*a+b*b*b+c*c*c == num)
                {
                    cout << num<<endl;
                }
            num++;
    }
    while (num<1000);
    system ("pause");
    return 0;
}
水仙花

 

3.  for循环语句

语法:for(起始表达式;条件表达式;模为循环体) {循环语句};

注:起始表达式只执行一次

案例:敲桌子;

案例描述:从1开始数到数字100,如果数字个数含有7,或数字十位含有7,或者数字是7的倍数,我们打印敲桌子,其余数字直接打印输出。

#include <iostream>
using namespace std;

int main()
{
    for (int i=1;i<=100;i++)
    {
        if ( i %7== 0 || i%10==7 || i/10==7)  //特殊数字
        {
            cout << "敲桌子" << endl;
        }
        else 
        {
            cout << i <<endl;
        }
    }
    system("pause");
    return 0;
}
敲桌子

 

 

3.1  嵌套循环

在循环体中嵌套再嵌套一层循环,解决一些实际问题

注:当外层循环与内层循环的变量一致时,输出变量采用就近原则方式输出

案例:乘法口诀表

#include <iostream>
using namespace std;

int main()
{
    for (int i=1;i<=9;i++)
    {
        for (int j=1;j<=i;j++)
        {
            cout << j << "*"<< i << "="<< i*j <<"  ";
        }
         cout <<endl;      
    }
    system ("pause");
    return 0;
}
乘法口诀表

 

 

3.2  跳转语句

3.2.1  break语句用于跳出选择结构或者循环结构

break使用的时机

  • 出现在switch条件语句中,作用是终止并跳出switch

  • 出现在循环语句中,作用是跳出当前的循环语句

  • 出现在嵌套循环中,跳出最近的内层循环语句

#include <iostream>
using namespace std;

int main()
{
    //1.出现在switch语句中
    cout << "请选择副本难度" << endl;
    cout << "1.普通" << endl;
    cout << "2.中等" << endl;
    cout << "3.困难" << endl;
    
    int select =0; //创建选择结果变量

    cin >> select;
    switch(select)
    {
     case 1:
            cout << "您选择的是普通难度" << endl;breakcase 2:
            cout << "您选择的是中等难度" << endl;breakcase 3:
            cout << "您选择的是困难难度" << endl;breakdefaultbreak;
    }


    //出现在循环语句中
    for (int i=0;i<10;i++)
    {
        //如果等于5,退出循环;
        if (i==5)
            break;
        cout << i<<endl ;
    }


    //出现在嵌套循环中
    for (int m=0;m<10;m++)
    {
        for (int n=0;n<10;n++)
        {
            if (n==5)
                break;  //退出内层循环,不影响外层循环
            cout << "*" ;
        }
        cout <<endl;
    }

    system ("pause");
    return 0;
}
break语句

 

3.2.2  continue 语句:跳本次循环中余下尚未执行的语句,继续执行下一次循环。

小例子:输出奇数

#include <iostream>
using namespace std;

int main()
{
    //continue 语句
    for (int i=0;i<=100;i++)
    {
        //如果奇数就输出
        if(i % 2 ==0)
        {
            continue; //可以筛选条件,执行到次不再执行,执行下一次循环;
            //break会退出循环,而continue不会
        }
        cout << i<<endl;
    }
    system ("pause");
    return 0;
}
输出奇数

 

 

3.2.3  goto 语句:无条件跳转语句

语法:goto 标记;

解释:如果标记的名称存在,执行到goto语句时,回调到标记的位置

#include <iostream>
using namespace std;

int main()
{
    cout <<"1.xxx" <<endl;
    cout <<"2.xxx" <<endl;
 
   goto FLAG;

    cout <<"3.xxx" <<endl;
    cout <<"4.xxx" <<endl;

    FLAG:  //标记

    cout <<"5.xxx" <<endl;
    system ("pause");
    return 0;
}

注:在程序中不建议使用goto语句,以免造成程序流程混乱。

posted @ 2020-04-07 20:40  by1314  阅读(269)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end