黑马程序员----流程控制(顺序结构、选择结构、循环结构)

一、顺序结构

  • 默认的流程结构,按照书写的顺序执行;

二、选择结构

  • 概念:对给定的条件进行判断,根据判断结果来决定执行那一段代码;

1. if语句

  • if语句的基本使用

/*
 1.if的第一种结构
 if(条件)
 {
    语句1;
    语句2;
    ......
 }

 2.if的第2种结构
 if(条件1)
 {
    语句1;
    语句2;
    ......
 }
 else
 {
    语句3;
    语句4;
    .......
 }

 3.if的第3种结构(按顺序判断条件,遇到某个条件成立就执行其代码(也说明该条件前的所有条件都不成立),执行完不再对条件进行判断)

 if(条件1)
 {
    语句1;
    语句2;
    .......
 }
 else if(条件2)
 {
    语句3;
    语句4;
    .......
 }
 else if(条件3)
 {
    语句5;
    语句6;
    .......
 }
 else
 {  // 前面条件都不成立就来到这里
    语句7;
    语句8;
    .......
 }

 4.if的第4种结构
 if(条件)
    语句1; // 条件成立就执行语句1
    语句2; // 语句2与if语句没有关系,必然执行
    .......

*/

#include <stdio.h>

int main()
{
    /*
     // 练习1
     int count = 40;

    if (count > 50)
    {
        printf("开班!!!\n");
        printf("准备机器!!!\n");
    }
    else
    {
        printf("不开班!!!\n");
        printf("不准备机器!!!\n");
    }*/

    /*
    // 练习2

    int a = 5;

    if (a==10)
    {
        printf("a=10\n");
    }

    else if(a==5)
    {
        printf("a=5\n");
    }

    else if(a==3)
    {
        printf("a==3\n");
    }

    else
    {
        printf("a=其他值\n");
    }*/

    /*
    //练习3
    int a = 10;

    if (a++ > 10) // 先将a=10 与 10 比较判断(假),再加1 即 a=11
    {
        printf("A\n");
    }

    else if(a++ > 5) // 此时a=11,先将a=11 与 5 比较判断(真,下面的条件就不再进行运行、判断,) 再让a加1  即a=12
    {
        printf("B\n");
    }

    else if(a++ > 3) // 由于条件2成立了,一下代码不再进行运行、判断,a不会再进行加1操作
    {
        printf("C\n");
    }

    else
    {
        printf("D\n");
    }

    printf("a的值是%d\n", a); // 运行结果为:B   a的值是12
    */    

     // 练习4
    int a = 10;

    if(a > 11) // 条件没有成立,不会执行哈哈哈哈,但还是会执行嘿嘿嘿嘿
        printf("哈哈哈哈\n");
    printf("嘿嘿嘿黑\n"); // 此语句与if语句没有关系,必然会执行
                         // 运行结果为: 嘿嘿嘿嘿    

    return 0;
}
  • if语句的陷阱

陷阱一:比较大小时,常量放在左边,变量放在右边

int a = 10431;

if (a == 0) // 如果少写了一个 =  ,即:a = 0; 相当于赋值操作,而且不会报错,没有提醒!!!

{

  语句1;

}

else

{

  语句2;

}

/* 总结:

比较大小时,常量放在左边,变量放在右边

即:if (0 == a)  如果少写一个 = ,即:0 = a; 此时由于常量不能被赋值,会报错提醒!!!

*/

陷阱二:注意赋值运算符 = 不要写成了 ==

int a = 10;

a = 15; // 如果多写了一个 = ,即:a == 15; 此时有一个警告,并不会报错,但是并没有对a再次赋值为15,a还是等于10;

printf("%d", a);

/*

总结:注意赋值运算符 = 不要写成了 == ,后果很严重!

*/

陷阱三:if后面不要随便写分号

if (5 > 6); // 多写了一个分号; 导致大括号里面的代码成了一个代码块,必然会执行

{

  printf("A");

}

// 总结:if后面不要随便写分号   ; 

陷阱四:作用域问题

if (10 > 6);

{

  int a = 5; // 变量a的作用域为if后面的大括号内

}         // 变量a再内存中被销毁了

printf("%d", a);

// 解释:作用域问题:a只在大括号内有效,执行到printf函数时,变量a已经被回收,就会报错:(error: use of undeclared identifier ‘a‘),使用了未定义的标识符;

陷阱五:作用域不明确

#include <stdio.h> 

int main(){

  if (10 > 6)

    int a = 5;
}
// 解释:从整个代码来看,变量a是属于main函数,但是对于if语句来讲,变量a的作用域只在if语句内有效,会造成变量a的作用域不明确问题;
// 报错信息:error: expected expression
// 总结:如果要在if语句后面的代码中定义新的变量,必须用大括号扩住
时间: 2024-10-12 16:59:59

黑马程序员----流程控制(顺序结构、选择结构、循环结构)的相关文章

黑马程序员-流程控制--循环结构

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.while循环 while(条件)         //执行完一次判断一次 { 循环体 } 运行原理: 1.如果一开始条件不成立就永远不会执行循环体 2.如果条件成立就会执行一次循环体,执行完毕后再判断条件是否成立 注意事项: 最简单的死循环while(1) while (a>0) ; 如果加分号会一直执行while(a>0); 同样也是死循环 循环中如果包含一个以上的语句应该用花括号括

黑马程序员学习笔记--------C语言变量类型,结构体,枚举

本章学习的知识是定义结构体,枚举等自定义的数据类型,已经宏命令,变量类型等细小的知识点,在开始本章的新知识学习之前首先我们要明白的是C语言有丰富的数据类型和运算符,因此计算能力非常强大,计算过程中使用的值一般用变量来存储.变量也是有分类型的,不同类型的变量有不同的存储类型.不同的生命周期.不同的作用域,C语言也提供了一些关键字来设置变量的属性(比如设置存储类型.生命周期). 一.变量类型 变量分为全局变量和局部变量. 首先说明一下局部变量的特点 1> 定义:在函数内部定义的变量,称为局部变量.形

黑马程序员——Java基础语法(二)语法结构

-----------android培训.java培训.java学习型技术博客.期待与您交流!------------ Java 中的语法结构有四种 顺序结构:顾名思义,就是按照顺序执行语句 判断结构:if  switch 选择结构: 循环结构:for  while   do while 1. if 结构 if语句有三种结构. (1)if(条件表达式){执行语句;} (2)if(条件表达式){执行语句;} else{执行语句;} (3)if(条件表达式){执行语句;} else if(条件表达式

二、流程控制和数组——4-控制循环结构

4-控制循环结构 1.break 2.continue 3.return

黑马程序员-----集合框架类(四) 高级for循环、方法的可变参数及静态导入

1.1 高级for循环(示例1) 格式:for(数据类型 变量名 : 被遍历的集合(Collection)或者数组){ } 对集合进行遍历.只能获取集合元素.但是不能对集合进行操作. 迭代器除了遍历,还可以进行remove集合中元素的动作.如果是用ListIterator,还可以在遍历过程中对集合进行增删改查的动作. 1.1.2 传统for和高级for有什么区别呢? 高级for有一个局限性.必须有被遍历的目标. 1 示例1: 2 import java.util.*; 3 4 class For

黑马程序员-基础部分

基础知识 1.什么是跨平台性?原理是什么?JVM 不同的系统都可以运行.系统安装虚拟机.. 我的总结:Java 程序之所以能够实现跨平台运行,是因为它根本就不直接在任何底层 平台上运行,有虚拟机调用. 2.Jre 和Jdk 的区别? JDK;包含虚拟机和类库,也包含JRE JRE:(Java Runtime Environment),java 运行环境 简单而言:使用JDK 开发完成的java 程序,交给JRE 去运行. 3.java 虚拟机JVM Java Virtual Machine ,简

黑马程序员_Java基础知识

java基础知识 1.Dos命令: dir:列出当前目录下所有的的文件及文件夹 md:创建目录 rd:删除目录 cd:进入指定mul cd\:返回到根目录 cd..:退到上级目录 del:删除文件 exit:退出dos命令行 *:通配符 help:帮助命令 2.path系统变量:系统中应用程序所在的路径 临时配置的环境变量的方式:用set命令完成 set:用于查看本机中所有环境变量的信息 set 变量名:查看具体的一个环境变量的值 set 变量名=:清空变量的值 set 变量名=具体值:赋值 在

【黑马程序员】人生漫长,不懈奋斗

我的名字是苏杭,大家都说我的名字很有诗意,很好听,我大学专业亦如我名字一样很好看,学习"影视专业". 24岁从学校毕业之后,一直从事着大学相关专业工作,大概三年左右.在公司主要负责视频制作美化,公司同事很好,工作也是自己喜欢的类型:但工作久了之后,也相对发现了工作中的一些缺点,例如工作相对小众,薪资待遇提升缓慢,随着年龄的增长,越来越发觉待遇对自己的重要性,一直在纠结自己如何抉择. 因为自己并不是特别能说会道的人,所以选择继续从事技术类工作,对我相对比较适合.大概去年年初时候,从网络的

黑马程序员-------------C语言流程控制-选择结构

流程控制 c语言中有3中结构控制程序运行1> 顺序结构:默认的流程结构,按照书写的顺序执行每一条语句2> 选择结构:对给定的条件进行判断,在根据判断结果来决定来执行哪一段代码3> 循环结构:在给定条件成立的情况下,反复执行某一段代码 1.选择结构 if语句 1>if的第一种结构 if(条件){//条件成立就会执行下面语句 语句1: 语句2: ....... } 例子: #include <stdio.h> int main (){ //人数 int cout = 0;