C语言(二)分支结构

一、程序的执行顺序

 1、程序是顺序执行 一行行代码逐条语句执行

 *行数呈深蓝色 //断点:调试的时候使用 程序执行到这个位置就会暂停

 2、分支结构  在顺序执行的时候,遇到分支结构(if、switch)  会选择正确的分支继续顺序执行

 3、循环结构  在顺序执行的时候  遇到循环结构  会在符合循环的环境下 一直循环执行  直到不再符合条件  继续顺序执行

 二、关系运算符

 关系运算符:是比较两个元素的关系的对比符号

 <(小于)、>(大于)、==(相同)、<=(小等于)、>=(大等于)、!=(不相同)


 三、逻辑运算符

 &&(并且)、||(或者)、!(取反)(int a=5; !a;)

 关系运算符和逻辑运算符只有两种情况(是(真)、否(假))


 四、分支结构之一  if语句

 if就是 如果 假设 ,if语句 是假设 这个表达式是否成立

 如果表达式可以成立(是正确的),就执行功能代码。

 如果表达式没有成立,就不搭理他。

 程序是顺序执行的当执行到if语句那发现有个分支结构判断 

 是否满足条件 如果满足 就进入分支 如果不满足 就跳过


 if (表达式){

 功能代码

 }

  eg:输入你父亲的年龄,如果大于40就是个好父亲。

 第一种方式:


int fatherAge = 0;

    printf("请输入您父亲的年龄:");

    scanf("%d",&fatherAge);

    int result = fatherAge >=40;

    printf("是不是大于等于40岁?%d\n",result);

    if (result == 1) {

        printf("您父亲倍儿棒!\n");

        }

    else {

        printf("您父亲倍儿倍儿棒!\n");

        }

 1.条件判断:<、>、<=、>=、==、!= 关系运算符计算结果都只是 真(1)或者假(0)两种结果

 2.***当只有两个条件可以选择的时候,优先使用if语句

 3.判断结果是不是1(是不是真的),如果是真的就进入花括号内执行里面的代码;如果不是真的,就跳过;

 4.result可以换成fatherAge>=40

 5.当不满足if语句里面的条件的时候,让他执行另外一个分支。可以使用else(否则)

 第二种方式:

 int fatherAge = 0;

 printf("请输入您父亲的年龄:");

 char *mesaage;      //char * 字符串(一段文字)

 if (fatherAge>=40) {

 mesaage = "您父亲倍儿棒!";

 }

else{

 mesaage = "您父亲倍儿倍儿棒!";

 }

 printf("%s\n",mesaage);


 eg:如果上课人数大于60,学习氛围倍儿好!否则,没来的去当葫芦娃了!

 int num;

 printf("请输入上课人数:");

 scanf("%d",&num);   //跟上一个scanf隔开,格式化字符串前面加个空格

 if (num>60) {

 printf("你们的学习氛围倍儿好!");

 }

 else{

 printf("没来的去当葫芦娃了!");

 }

 如果1.只有两个条件可以选择,2.并且有两个可能发生的结果;3.再并且分支结构里面没有嵌套使用其他内容;4.可以使用三目运算。⬇️


 五、三目运算

 三目运算不要多个嵌套使用

 可以理解为 一重if判断的简写

 三目运算的公式:表达式?(问电脑表达式是不是真的)

 第一个结果(真的):

 第二个结果(假的);


 //第一种方式

 int a=33;

 char *sss;//char * 字符串(一段文字)

 scanf("%d",&a);

 if (a<33) {

 sss="是滴";

 }

 else{

 sss="FP";

 }

 printf("%s\n",sss);

 //三目运算

 int a;

 char *r=a<33?"是滴":"FP";

 scanf("%d",&a);

 printf("%s\n",r);

 六、枚举

 枚举:逐个的列举  他本身是有顺序的 当打破默认的顺序  会按照打破顺序的地方继续按顺序排列

 枚举:列举 一个一个按顺序罗列出来

 enum  默认从0开始按顺序罗列出来

 当有一个元素值发生改变,如(0、1、(2)、3)突然2改变成3,则接着按顺序罗列(0、1、3、4)

 枚举用字符串来表示这些数字,这样的好处:1.很直观的了解这个数字的含义;2. 当改变字符串对应的数字的时候,不会影响到程序里面的代码;⬆️

 枚举的公式之一:⬇️

 enum 枚举的名字{

 枚举的例子,(使用逗号隔开,默认从0开始)

 枚举的例子,(当这个元素的值改变成5,下个元素默认是6)

 枚举的例子(最后一个元素没有逗号)

 };

 eg:

 enum Type{

 Red,

 Orange=5,

 Yellow,

 Green

 };

 enum 枚举名 变量名 = 枚举值;

 enum Type type = Yellow;

 printf("%d\n",type);

 (输出为6)

 枚举的公式之二:

 typedef 用来替代(enum枚举的名字)


 typedef enum 枚举的名字

 {

 枚举的例子,(使用逗号隔开,默认从0开始)

 枚举的例子,(当这个元素的值改变成5,下个元素默认是6)

 枚举的例子(最后一个元素没有逗号)

 }要替代的名字;

 eg:

 typedef enum Type{

 Red,

 Orange=5,

 Yellow,

 Green

 }Color;

 Color color = Green;

 printf("%d\n",color);


 什么情况下使用枚举:

 1.当某些数字具有一定意义的时候,可以使用枚举,直观的体现这些数字的意义;2.在编程过程中有可能修改需求,把具有特定意义的数字修改成别的数字,防止修改大量代码,节省工作量。


  七、分支结构之二 switch

 当有多个条件可以提供选择的时候,可以使用switch,来替代if;

 当条件变量满足第某个条件的时候,会跳到对应的条件里面去执行代码➡️遇到(break)会跳出switch继续执行

switch的判断条件只能是short char int long 类型;

 switch常与枚举配合使用;


 switch (条件变量) {

 case 条件1:

 具体代码

 break;

 case 条件2:

 具体代码

 break;

 case 条件3:

 具体代码

 break;

 default:

 break;

 }

 注意:每一个分支条件后面必须跟一个break来跳出花括号,如果没有跳出,会继续往下执行。

default:默认 任何条件 都不满足的时候  进入default

eg:

typedef enum LoginType{

        Acc = 10,

        QQ,

        Sina,

        WeiXin

    }LoginType;

    //定义LoginType这个枚举的变量

    LoginType type;

    //    输入一个数字来判断用户使用哪种方式登陆

    scanf("%d",&type);

    switch (type) {//表示type到底是多少

        case Acc:

            printf("账号登陆");

            break;

        case QQ:

            printf("QQ登陆");

                   break;

        case Sina:

            printf("Sina登陆");

            break;

        case WeiXin:

            printf("WeiXin登陆");

            break;


default:

printf("没有这种登陆方式");

break;

}

 while 循环:

 先判断再执行

 格式:while(表达式){

          循环体

 }

 作用:循环执行某段代码


 int a = 10;


 while (a < 15) {

 a++;

}

 //如果条件正确才会执行这里,并且一直循环执行,知道不再满足这个条件为止


 eg:1-100中7的倍数

int a = 0;

    while (a<100) {

        a++;

        if (a % 7==0) {

            printf("0-100中7的倍数: %d\n",a);

        }

    }

eg: int num = 0;

    while (num<100) {

        num++;

        if (num % 10==7) {

            printf("个位为7的数:%d\n",num);

        }

    }

 do - while :先执行后判断

 格式:do{

    循环体

 }while(表达式);

 用法:不管条件如何,先执行一遍,接着判断表达式,如果条件成立,继续执行。

 eg:输出5次“I am handsome”

 int a=0;

 do {

 a++;

 printf("I am handsome %d\n",a);

 } while (a<5);

 eg:1-100中7的倍数

 int a=0;

 do {

 a++;


 if (a%7==0) {

 printf("7的倍数:%d\n",a);

 }


 } while (a<100);

**代码是按照顺序执行的

eg:1-100中7的倍数

int a=1;

    do {

        if (a%10==7) {

            printf("个位为7: %d\n",a);


        }

        a++;

    } while (a<=100);


**使用随机数需要导入#include

**随机数函数:arc4random()

     a-b的范围              arc4random()%(b-a+1)+a

**取1-5的随机数:arc4random()%5+1

**取100-500的随机数:arc4random()%401+100

   1、要想取一个随机数 (确定 取随机数的范围)

10 - 15 (确定随机数的范围 包含10 和15 以及他们之间的范围)

// 了解随机数 :随机数的值 是从0开始 取随机数的范围是多少(10 - 15 的范围是6)随机数 取余的数 就是6

// 使用随机函数:arc4random()%6(取出来的值 是0 1 2 3 4 5)(随机数 取值 是从0开始 一直到 范围(6)结束(不包括范围(6)))

// 如果想取10 - 15 的随机数 在取出来的随机数 后面加最小的那个数字(10)即可

continue 语句:用在循环语句中

 当符合某个条件的时候,跳过这个条件***继续执行***

 break 语句:当符合某个条件的时候,直接跳出循环。

 eg: int a=0;

 while (a<5) {

 a++;

 //当a的值为4的时候

 if (a==4) {

 //跳过并继续执行

 continue;

 }

 printf("%d\n",a);

 }


 ****在不知道循环多少次的时候用while或者do - while

 如果知道循环次数,可以选择使用for循环*****


for循环语句:

 for (初始值变量;循环的条件;改变变量){

       循环语句

 }

eg:

 //打印十年经历的春夏秋冬,并标记是第几年的

    for (int i =1; i<=10; i++) {

        printf("这是第%d年的\n",i);

    }

for 步骤

1、初始化变量并赋值

2、判断变量是否满足循环条件

3、*如果满足循环条件,进入循环,执行循环语句

4、执行完循环语句里面的代码,让变量改变

   第一次循环执行完毕

5、第二次循环,再次判断变量是否满足循环条件

6、如果满足,进入第三次,不满足跳出循环

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容