从零开始学C++(我自己) day 4

本文详细介绍了程序结构中的顺序、分支和循环,包括if语句、多分支、三目运算符、switch语句的用法,以及while、dowhile和for循环的区别。此外,还讲解了如何使用rand函数生成随机数,涉及srand和time函数的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

省流:

(如果能回答出这些问题本文对你几乎无用)

        1.程序结构分为几类?

        2.if语句怎么用?单分支,双分支,多分支会不会?

        3.三目运算符怎么理解?

        4.switch语句怎么用?

        5.while,do while ,for会不会用?

        6.如何用rand函数生成随机数?

(如果你已经学过有了基础或者太懒不想思考这些问题可以只看彩色(非黑色)的部分,而黑色的都是基础知识中的,emmm,基础知识)

(另外,在我眼中,红橙黄绿青蓝紫代表重要级,红最重要)

一、简单介绍程序结构

        分为顺序结构、分支结构和循环结构;

二、分支结构之if

        1.单分支:

                (1)用法:若条件成立(即条件中表达式返回值为1),则执行代码1,否则不执行;

if(条件)
{
    代码1
}

        2.双分支:

                (1)用法:在单分支的基础上加个else分支即可,若条件成立,则执行代码1,否则执行代码2;

if(条件)
{
    代码1
}
else
{
    代码2
}

        3.多分支:

                (1)用法:在双分支的基础上,在if和else中间多加几个else if分支即可,从上到下,当出现某个条件为真的时候,就执行对应的代码,剩余的不看,也即直接跳过,执行整个分支结构后的代码。

                (2)辨析:其实单分支和双分支都可以视为特殊情况的多分支,分别为只有一个if(单分支)、只有if和else(双分支)的“多分支”;

if(条件1)
{代码1}
else if(条件2)
{代码2}
else if(条件3)
{代码3}
......
else 
{代码n}

三、三目运算符:

        1.格式:表达式1 ?表达式2 : 表达式3

                表达式2和表达式3可以是变量或者数值

        2.解释:可以这么理解:从左向右看,表达式1成立吗?若成立,那么整个表达式的结果为表达式2的结果,如果不成立,那么整个表达式的结果为表达式3的结果;

        3.实例:int k = (3>2 ? 1 : 0); 则因为3>2成立,所以三目运算符表达式的结果是1,而这整个式子的意思是把三目运算符表达式的结果赋给k,所以k就等于1;

四、switch语句:

        1.格式:

switch(整型表达式)  //整型表达式即为返回值为整数的表达式
{
		case 常量整型表达式1:
			代码块1;
			break;
		case 常量整型表达式2:
			代码块2;
			break;
		......
		default:
			代码块n;  
}

        2.说明:

                (1)此处常量整型表达式为编译时即为常量的表达式,比如普通数值常量或者宏常量或者字符常量也行;

                (2)执行过程:从上到下看,如果某一个常量整型表达式==switch后的整型表达式的值,那么就会从那一个对应的代码块开始往下一直执行(包括后面所有case的代码块),直到碰到break或者反花括号(});所以每一个case要一个break保证若条件成立则只执行对应的一个代码块;

                (3)补充说明:default可有可无,有default的时候,若前面没有常量整型表达式和switch后的整型表达式的值相等,那么就会执行default的代码块,由于已经是最后一个代码块了,所以不用break啦;

                (4)switch的优点为:结构清晰,执行效率高;缺点为只能判断整型或字符型这种可以表示为整数的东西;

                (5)其实类似于多分支,是吧是吧是吧?

五、循环结构之while语句:

        1.格式与解释:当代码执行过程中遇到while的时候,不断进行“判断条件,成立则执行代码1,不成立则跳过循环”的操作;

while(条件)
{
    代码1
}

        2.除了上述的不满足条件时跳出循环,还可以在循环体代码中写break语句(常搭配if语句使用),当执行到break的时候,就会跳出循环(break语句之后会讲一点点);

六、do while 语句:

        1.格式与解释:当代码执行过程中遇到do while语句的时候,会先执行一次代码2,然后再不断进行“判断条件,成立则执行代码1,不成立则跳过循环”的过程;

do
{
    代码2
}while(条件);

         2.除了上述的不满足条件时跳出循环,还可以在循环体代码中写break语句(常搭配if语句使用),当执行到break的时候,就会跳出循环(break语句之后会讲一点点);

七、for循环

        1.格式与解释:当遇到for循环时,会不断执行“①判断循环条件,②条件为真则执行代码3并进行循环中某些变量的变化,不为真则跳过循环”的过程;

for(计数器初始值;循环条件;循环中某些变量的变化)
{
    代码3
}

          2.除了上述的不满足条件时跳出循环,还可以在循环体代码中写break语句(常搭配if语句使用),当执行到break的时候,就会跳出循环(break语句之后会讲一点点);

        3.循环变化一般是使得计数器+1,条件往往也与计数器有关;

八、循环补充说明:

        1.就像if里可以嵌套if,循环里也可以嵌套循环;

        2.循环跳转语句:

                (1)break:遇到这玩意就会跳出当前循环,例如此处如果巴拉巴拉成立,则会遇到break,就会跳出内层循环进而执行代码4;

for(int i = 0; i < 5 ; i++)
{
    代码1
    
    for(int j = 0 ; j < 5 ; j++)
    {
    代码1
    if(巴拉巴拉)
    {
    break;
    }
    代码2
    }

    代码4
}

                (2)continue:遇到这玩意会跳过当次循环,直接到i++或j++那个变量变化阶段,进而到判断条件环节,如:此时如果巴拉巴拉为真,则会遇到continue,则会直接跳过代码2,到j++,然后继续判断条件j<5是否成立;

for(int i = 0; i < 5 ; i++)
{
    代码1
    
    for(int j = 0 ; j < 5 ; j++)
    {
    代码1
    if(巴拉巴拉)
    {
    continue;
    }
    代码2
    }

    代码4
}

                (3)goto:

                        ①要用goto首先要设置一个标签,用一个名(命名规则同标识符)加冒号设置,此后遇到goto 标识符则跳转到标签行往下执行;

                        ②由于这玩意不太常用,举个例子如下,此时当巴拉巴拉成立的时候,会执行goto语句,则又会回到标签sign处,从sign行开始执行,进而再次执行代码2,再次判断巴拉巴拉是否成立;

                        ③标签也可以在goto语句的后面;

        

代码1
sign:
代码2
if(巴拉巴拉)
{
    goto sign;
}
......

九、随机数的生成:

        0.需要先引入头文件:#include <cstdlib> // 包含了 rand() 和 srand()
                                            #include <ctime>   // 包含了 time()

        1.rand函数:

                (1)基础用法:rand()%m,用于生成一个闭区间0到m-1之间的数;

                (2)修改随机数范围的方法:例如想生成50到99之间的随机数,则可以这样int q = (rand()%50) + 50;原本是0到49,加了50就变成50到99啦!

                (3)注意:使用rand函数要先用srand函数设置种子(关于种子,之后有一点解释),否则rand函数每次生成的随机数都可能相同;

        2.srand函数:

                (1)用法:srand(无符号整数);

                (2)解释:这里的无符号整数称为种子,基于不同的“种子”生成的随机数才会不同,同一个种子生成的随机数是一样的,也就是说放进去的数值决定了生成的数。所以,我们应该使得每次放进去的东西都要不同,这就需要用到time函数;

        3.time函数:

                (1)用法:time(参数),参数是一个指向time_t类型(之后会说一点点)的指针或者是NULL(空指针,不指向任何变量);

                                                备注:指针是一类专门存储别的变量的地址的变量

                (2)说明:

                                ①当参数为NULL的时候,该函数仅仅返回当前时间(相对于1970年的某个时刻,秒为单位),这也是随机数生成中常用的;

                                ②当参数不是NULL的时候,该函数不仅返回当前时间,还把当前时间赋值给参数指向的那个time_t类型的变量里;

                                ③现阶段如果不理解可以理解为,参数位置需要放一个这样的东西:&变量(time_t类型),这样就能够把当前时间赋值给这个变量哦;

        4.time_t类型:

                解释:这种类型的变量是专门用来存储当前时间(相对于1970年的某个时刻,秒为单位)的一种变量;

免责声明:有问题或者觉得我没讲清楚的可以讨论,或者自个儿想办法弄明白,嘻嘻,总之别骂我

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值