C++程序流程结构

一.选择结构

1.if语句

<1>if

<2>if......else....

<3>if.....else if......else

【实例】输入一个年份,判断是否为闰年。闰年的年份必须满足以下两个条件之一)(1)能被4整除,但不能被100整除的年份都是闰年。(2)能被400整除的年份都是闰年

include <iostream>
using namespace std;
 int  main()
 {
    int year;
    cout << "Enter the year:";
    cin >> year;
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))//判断是否为闰年
        cout << year << " is a leap year" << endl;
    else
        cout << year << " is not a leap year" << endl;
    system("pause");
    return 0;
}

2.嵌套if语句

if语句中,如果内嵌语句又是if语句,就构成了嵌套if语句。

一般形式如下:

if()

If()语句1

else语句2

Else

If()语句3

else语句4
应当注意if与else的配对关系。else总是与它上面最近的、且未配对的if配对。假如写成:
if()
   if()语句l
else
    if()语句2
    else语句3
  第一个else写在与第一个if(外层if) 同一列上, 看似else与第一个if对应, 但实际上,else是与第二个if配对,因为它们相距最近,而且第二个if并未与任何else配对。为了避免误用,最好使每一层内嵌的if语句都包含else子句, 这样if的数目和else的数目相同,从内层到外层一一对应,不至于出错。
如果if与else的数目不一样,为实现程序设计者的意图,可以加花括号来确定配对关系。

例如:

if()
{if()语句1}//这个语句是上一行if语句的内嵌if
else语句2//本行与第一个if配对
这时{}限定了内嵌if语句的范围,{}外的else不会与{}内的if配对。关系清楚,不易出错。
【实例】用嵌套if语句实现上个例子的功能。代码如下:#include <iostream>
using namespace std;
 int  main()
 {
    int year;
    bool leap;
    cout << "Enter the year:";
    cin >> year;
    if (year % 4 == 0) {
        if (year % 100 == 0) {
            if (year % 400 == 0) leap = true;
            else leap = false;
        }
        else leap = false;
    }
    else leap = false;
    if( leap)
        cout << year << " is" << endl;
    else
        cout << year << " is not" << endl;
    cout <<"a leap year" << endl;
    system("pause");
    return 0;
}

3.switch语句

c++提供了一个switch语句, 称为多分支语句(开关语句) , 可以用来实现多分支选择程序结构。

switch语句的语法格式为:

switch(表达式){

case 常量表达式1:语句序列1; break;

case 常量表达式2:语句序列2; break;

case 常量表达式n:语句序列n; break;

default: 语句序列n+1;

}
(1)当switch后面括号中表达式的值与某一个case分支的常量表达式匹配时,就执行该分支。如果所有的case分支中常量表达式都不能与switch后面括号中表达式的值匹配,就执行default分支。

(2)break语句可选,如果没有break语句,每一个case分支都只作为开关语句执行入口,执行完该分支后,还将接着执行其后的所有分支。因此,为保证逻辑的正确实现,通常每个case分支都与break语句联用

(3) 每个常量表达式的取值必须各不相同, 否则将引起歧义。各case子句后面必须是常量, 而不能是变量或表达式。各个case(包括default) 分支出现的次序可以任意, 通常将default分支放在最后。

(4)允许多个常量表达式对应同一个语句序列。例如:

char score;

cin>>score;

switch (score)

case 'A':

case 'a': cout<<"excellent";

break;

case 'B':

case 'b': cout<<"good";

break;

default:cout<<"fair";
(5)从形式上看, switch语句的可读性比嵌套if语句好, 但不是所有多选一的问题都 可由开关语句完成, 这是因为开关语句中限定了switch后面括号中表达式的类型, 它的类型可以是整型、字符型、枚举类型,而不能是浮点型。

实例】用switch语句编写程序实现如下功能:某百货公司为了促销,采用购物打折的办法。在1000元以上者,按九五折优惠:在2000元以上者,按九折优惠:在3000元以上者,按八五折优惠;在5000元以上者,按八折优惠。编写程序,输入购物款数,计算并出优惠价。

#include <iostream>
using namespace std;
int  main(){

    int imoney;
    cout << "请输入您消费的金额:" << endl;
    cin >> imoney;
    switch (imoney / 1000)
    {
    case 0:
        cout << "您的消费没有折扣,金额是:" << imoney << endl;
    case 1:
        cout << "您的消费享受95折优惠,金额是:" << imoney << ",优惠后的金额是:" << imoney * 0.95 << endl;
        break;
    case 2:
        cout << "您的消费享受9折优惠,金额是:" << imoney << ",优惠后的金额是:" << imoney * 0.9 << endl;
        break;
    case 3:case 4:
        cout << "您的消费享受85折优惠,金额是:" << imoney << ",优惠后的金额是:" << imoney * 0.85 << endl;
        break;

        default:
        cout << "您的消费享受8折优惠,金额是:" << imoney << ",优惠后的金额是:" << imoney * 0.8 << endl;
        break;
    
        
    }
    system("pause");
    return 0;
}

 二.循环结构

1 .while循环语句

作用:满足循环条件,执行循环语句

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

解释:只要循环条件的结果为真,就执行循环语句

 示例:

int main() {

    int num = 0;
    while (num < 10)
    {
        cout << "num = " << num << endl;
        num++;
    }
    
    system("pause");

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

2.do...while循环

作用: 满足循环条件,执行循环语句

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

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

示例:

int main() {

    int num = 0;

    do
    {
        cout << num << endl;
        num++;

    } while (num < 10);
    
    
    system("pause");

    return 0;
}//与while循环区别在于,do...while先执行一次循环语句,再判断循环条件

 3. for循环语句

作用: 满足循环条件,执行循环语句

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

示例:

int main() {

    for (int i = 0; i < 10; i++)
    {
        cout << i << endl;
    }
    
    system("pause");

    return 0;
}
详解:

注意:for循环中的表达式,要用分号进行分隔

总结:while , do...while, for都是开发中常用的循环语句,for循环结构比较清晰,比较常用

4. 嵌套循环

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

示例:

int main() {

	//外层循环执行1次,内层循环执行1轮
	for (int i = 0; i < 10; i++)
	{
		for (int j = 0; j < 10; j++)
		{
			cout << "*" << " ";
		}
		cout << endl;
	}

	system("pause");

	return 0;
}

【实例】输出九九乘法表。

#include <iostream>
#include<iomanip>/*io代表输入输出,manip是manipulator(操纵器)的缩写(在c++上只能通过输入缩写才有效。)
iomanip的作用:
          主要是对cin, cout之类的一些操纵运算子,比如setfill, setw, setbase, setprecision等等*/
using namespace std;
int  main() {
    cout << "*";
    for (int i = 1; i <= 9; i++)
        cout << setw(8) << i;
        cout<< endl;//输出循环语句每一行的表头,其中setw(int n)是c++中在输出操作中使用的字段宽度设置,设置输出的域宽,n表示字段宽度
    for (int i = 1; i <= 9; i++){
        cout << i;//输出行号
        for (int j = 1; j <= i; j++)
            cout << setw(3) << i << '*' << j << '=' << setw(2) << i * j;
        cout<< endl;
}
    system("pause");
    return 0;
}

 

 三. 跳转语句

1.break语句

作用: 用于跳出==选择结构==或者==循环结构==

break使用的时机:

  • 出现在switch条件语句中,作用是终止case并跳出switch
  • 出现在循环语句中,作用是跳出当前的循环语句
  • 出现在嵌套循环中,跳出最近的内层循环语句

 示例:

int main() {
    //在循环语句中用break
    for (int i = 0; i < 10; i++)
    {
        if (i == 5)
        {
            break; //跳出循环语句
        }
        cout << i << endl;
    }

    system("pause");

    return 0;
}

2. continue语句

作用:在==循环语句==中,跳过本次循环中余下尚未执行的语句,继续执行下一次循环

示例:

int main() {

    for (int i = 0; i < 100; i++)
    {
        if (i % 2 == 0)
        {
            continue;
        }
        cout << i << endl;
    }
    
    system("pause");

    return 0;
}

注意:continue并没有使整个循环终止,而break会跳出循环

四.goto语句

作用:可以无条件跳转语句

语法: goto 标记;

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

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值