目录

  • 1 第一章  C语言概述
    • 1.1 第一节  C语言的产生和发展
    • 1.2 第二节  C语言的特点
    • 1.3 第三节  两个简单的C程序
    • 1.4 第四节  C程序的上机步骤
    • 1.5 第五节  Dev-C++介绍
    • 1.6 第六节  VC2010学习版介绍
    • 1.7 第七节  宏定义和文件包含
    • 1.8 本章小结
    • 1.9 本章单元测试
  • 2 第二章  基本数据类型与简单程序设计
    • 2.1 第一节  C语言的基本数据类型
    • 2.2 第二节  常量
    • 2.3 第三节  变量
    • 2.4 第四节  赋值语句
    • 2.5 第五节  数据输出
    • 2.6 第六节 数据输入
    • 2.7 第七节  运算符
    • 2.8 第八节  常用的数学函数
    • 2.9 第九节  顺序结构程序设计
    • 2.10 本章小结
    • 2.11 本章单元测试
  • 3 第三章  分支结构程序设计
    • 3.1 第一节  关系表达式和逻辑表达式
    • 3.2 第二节  if单分支语句
    • 3.3 第四节  if双分支语句
    • 3.4 第五节  if多分支语句
    • 3.5 第六节  case多分支语句
    • 3.6 第七节  分支结构程序设计实例
    • 3.7 本章小结
    • 3.8 本章单元测试
    • 3.9 书中本章习题答案
  • 4 第四章  循环结构程序设计
    • 4.1 第一节  While循环
    • 4.2 第二节  do ... while循环
    • 4.3 第三节  for循环
    • 4.4 第四节  多重循环
    • 4.5 第五节  break语句和continue语句
    • 4.6 第六节  循环结构程序设计实例
    • 4.7 本章小结
    • 4.8 书中本章习题答案
  • 5 第五章 数组
    • 5.1 第一节  一维数组的定义和使用
    • 5.2 第二节  二维数组的定义和使用
    • 5.3 第三节  字符数组的定义和使用
    • 5.4 第四节  数组的应用举例
    • 5.5 本章小节
    • 5.6 书中本章习题
  • 6 第六章  函数
    • 6.1 第一节  函数的定义
    • 6.2 第二节  函数的调用
    • 6.3 第三节 数组作为函数参数
    • 6.4 第四节  变量的作用域
    • 6.5 第五节 变量的存储类别
    • 6.6 第六节 函数应用实例
  • 7 第七章 结构体和共用体
    • 7.1 第一节  概述
    • 7.2 第二节  定义结构体变量的方法
    • 7.3 第三节 结构体变量的引用
    • 7.4 第四节 结构体数组
    • 7.5 第五节 共用体
    • 7.6 第六节  结构体和共用体应用实例
  • 8 第八章 指针
    • 8.1 第一节  指针的概念
    • 8.2 第二节  指向简单变量的指针
    • 8.3 第三节 指向数组的指针变量
    • 8.4 第四节  指向字符串的指针变量
    • 8.5 第五节 指针作为函数参数
    • 8.6 第六节  指向结构体的指针变量
    • 8.7 第七节 指针应用实例
  • 9 第九章  文件
    • 9.1 第一节  文件概述
    • 9.2 第二节  文件的打开和关闭
    • 9.3 第三节 文件的读/写函数
    • 9.4 第四节  文件定位函数
    • 9.5 第五节  文件应用实例
    • 9.6 本章小节
    • 9.7 本章习题
  • 10 附录
    • 10.1 附录A  基本字符ASCII码表(0~127)
    • 10.2 附录B  运算符优先级表
    • 10.3 附录C 常用C库函数表
    • 10.4 附录D  编译常见错误提示
    • 10.5 附录E  常见C语言英语单词
    • 10.6 附录F  如何从十进制转换为二进制
    • 10.7 附录G  如何把二进制数转化为十进制数
    • 10.8 附录H  什么是编译器
    • 10.9 附录I  与编译器相关的几个知识点
  • 11 数组
    • 11.1 一维数组
    • 11.2 二维数组
    • 11.3 字符数组
    • 11.4 常见问题集锦
    • 11.5 配套课件
    • 11.6 配套实训
  • 12 第一章 C语言程序设计基础
    • 12.1 程序设计语言的发展及其特点
      • 12.1.1 为什么要学习C语言
      • 12.1.2 什么是程序设计语言
      • 12.1.3 程序设计语言发展的三个阶段
    • 12.2 C语言的发展及其特点和应用
      • 12.2.1 C语言的发展史
      • 12.2.2 C语言的特点
      • 12.2.3 C语言的应用以及其他语言的关系
    • 12.3 C语言程序的基本结构
      • 12.3.1 最简单的C语言程序
      • 12.3.2 计算输入的两个整数的和
      • 12.3.3 练习:计算输入的两个整数的和
    • 12.4 编制C语言程序的基本步骤
      • 12.4.1 编写C程序的步骤
      • 12.4.2 VC6.0集成开发环境介绍
      • 12.4.3 建立工程操作演示
      • 12.4.4 练习:我们编的第一个程序
      • 12.4.5 程序调试
    • 12.5 习题
  • 13 基本数据类型、运算符与表达式
    • 13.1 预备知识
      • 13.1.1 计算机系统组成
      • 13.1.2 计算机中数的表示及进制转换
    • 13.2 C语言的数据类型
    • 13.3 常量、变量和标识符
      • 13.3.1 标识符
      • 13.3.2 常量
      • 13.3.3 变量
    • 13.4 简单数据类型与表示范围
      • 13.4.1 整型数据
      • 13.4.2 整数在内存中的表示
      • 13.4.3 整型变量
      • 13.4.4 整数常量的分类
      • 13.4.5 实型数据
      • 13.4.6 字符型数据和字符串常量
      • 13.4.7 简单数据类型的表示范围
      • 13.4.8 简单的数据输出
    • 13.5 运算符与表达式
      • 13.5.1 赋值运算符、赋值表达式
      • 13.5.2 强制类型转换符
      • 13.5.3 算术运算符、算术表达式
      • 13.5.4 自增自减运算符、符号运算符
      • 13.5.5 算术运算符中数据类型转换规则
      • 13.5.6 位运算符、位运算表达式
      • 13.5.7 逗号运算符、逗号表达式
      • 13.5.8 其他运算符:sizeof运算符
      • 13.5.9 关系运算符与表达式
      • 13.5.10 逻辑运算符与表达式
      • 13.5.11 条件运算符与表达式
    • 13.6 运算符的优先级和结合性
  • 14 基本输入输出和顺序程序设计
    • 14.1 程序的控制结构
    • 14.2 格式化输出printf
    • 14.3 格式化输入scanf
    • 14.4 字符数据的非格式化输入输出
    • 14.5 顺序程序设计举例
  • 15 选择结构程序设计
    • 15.1 C程序中语句的分类
    • 15.2 关系运算符、逻辑运算符、条件运算符
      • 15.2.1 关系运算符和关系表达式
      • 15.2.2 逻辑运算符和逻辑表达式
      • 15.2.3 条件运算符和条件表达式
    • 15.3 选择结构的程序设计
      • 15.3.1 if语句
      • 15.3.2 switch语句
    • 15.4 选择结构程序设计举例
      • 15.4.1 例1 计算员工当月薪水
      • 15.4.2 例2 判定闰年
      • 15.4.3 例3  简单表达式计算
  • 16 循环结构程序设计
    • 16.1 循环结构的程序设计
      • 16.1.1 while语句
      • 16.1.2 do-while语句
      • 16.1.3 for语句
      • 16.1.4 循环嵌套
      • 16.1.5 break与continue语句
      • 16.1.6 exit()函数
    • 16.2 循环结构类型的选择及转换
    • 16.3 循环结构程序设计举例
  • 17 数组
    • 17.1 一维数组
      • 17.1.1 一维数组的定义
      • 17.1.2 一维数组的引用
      • 17.1.3 一维数组的赋值
      • 17.1.4 应用实例1:字符统计
      • 17.1.5 应用实例2:冒泡排序
      • 17.1.6 应用实例3:选择排序
      • 17.1.7 应用实例4:斐波那契数列
    • 17.2 二维数组及多维数组
      • 17.2.1 二维数组的定义、引用和赋值
      • 17.2.2 二维数组的应用举例
    • 17.3 字符串与数组
      • 17.3.1 字符串的本质
      • 17.3.2 字符及字符串操作的常用函数
      • 17.3.3 字符串的应用举例
      • 17.3.4 字符串数组
      • 17.3.5 字符串数组的应用举例
    • 17.4 数组综合应用举例
  • 18 函数
    • 18.1 函数的概述
    • 18.2 函数的定义和调用
    • 18.3 函数参数的传递方式
    • 18.4 变量的作用域和生存期
    • 18.5 变量的存储类型
    • 18.6 函数的嵌套与递归调用
    • 18.7 函数的作用域
    • 18.8 函数的封装
    • 18.9 函数应用综合举例
    • 18.10 本章习题
  • 19 指针
    • 19.1 指针与指针变量的概念
    • 19.2 指针变量的定义和引用
    • 19.3 指针和地址运算
    • 19.4 指针与数组
      • 19.4.1 数组的指针和指向数组的指针变量
      • 19.4.2 指向多维数组的指针——数组指针
      • 19.4.3 元素为指针的数组——指针数组
    • 19.5 指针与字符串
    • 19.6 指针与动态内存分配
    • 19.7 多级指针
    • 19.8 指针作为函数参数
    • 19.9 指针作为函数的返回值——指针函数
    • 19.10 本章习题
  • 20 VC6  Debug
    • 20.1 VC6  Debug
第一节  关系表达式和逻辑表达式
  • 1 文字讲解
  • 2 视频讲解
  • 3 过关测试

一、关系运算符

1、关系运算符的定义

     关系运算符:指对两个同类型的数据按它们值的大小进行比较的运算,判断它们是否符合给定条件。

2、关系运算符运算的结果

     关系运算符运算结果如下所示。

      

3、关系运算符优先级与结合方向

表3-1  C语言中的关系运算符
运算符含义优先级结合方向
<小于6从左往右
<=小于或等于
>大于
>=大于或等于
==等于7
!=不等于

关系运算符优先级说明如下:

     ① 关系运算符被分为两组不同的优先级,“==”、“!=”的优先级低于“<”、“<=”、“>”、“>=”。

     ② 关系运算符的优先级低于算术运算符。

     ③ 关系运算符的优先级高于赋值运算符。看下面的例子。

       a>b+3  等价于   a>(b+3)

       a=b>3   等价于   a=(b>3)

       a != b >3  等价于   a != ( b >3 )

      当相同优先级的关系运算符同时出现时,从左向右进行运算。也就是说,结合性是从左向右。例如:

         a != b == c 等价于 ( a !=b ) == c

      用关系运算符连接两个表达式组成的式子称为关系表达式下面都是合法的关系表达式:

      ① a>b  ② (a+b)<=(b+c)   ③ 'a'<'b'   ④ 1==1  ⑤  1 == 0

     在C语言中,当表达式的值为真时,其值为1;而当表达式的值为假时,其值为0.1熟练达式中,除了1表示“真”以外,所有非0值也都表示“真”,只有0表示“假”,如:

       x=(3>2);        x的值为1

       x=(3<2);        x的值为0

二、关系表达式

1、关系表达式的定义

     关系表达式是指用关系运算符将两个数值或数值表达式连接起来的式子。

2、关系表达式的值

      关系表达式的值是一个逻辑值,即“真”或“假”。在C语言的逻辑运算中,以“1”代表“真”,以“0”代表“假”

注意:在C语言中非0表示真,0表示假。只要进行关系运算后,结果只有0或1。

三、逻辑表达式

逻辑表达式是指用逻辑运算符连接若干个表达式组成的式子

1、逻辑运算符的含义

      &&(逻辑与)    || (逻辑或)   !(逻辑非)

说明:

     ① 逻辑运算的值应该是逻辑量“真”或“假”

     ② 编译系统在表示逻辑运算结果时,以数值1代表“真”,以0代表“假”

     ③ 但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”

     ④ 注意:将一个非零的数值认作为“真”

     ⑤  逻辑运算真值表


逻辑运算真值表
ab!a!ba && ba || b
 非0 非00011
 非000101
0 非01001
00110

0

说明: 

       ● a && b   若a,b均为真,则“a && b”值为真,否则为假。

       ● a || B   若a、b均为假,则“a || b”值为假,否则为真

       ● !a    若a为真,则“a”值为假,否则为真

      ● 与运算只要有一个为0,则结果为0,全1才为1。

     ●  或运算只要有一个为1,则结果为1,全0才为0。

     ●  与运算前一操作数为0,则后一个不算

     ●  或运算前一操作数为1,则后一个不算

2、逻辑运算符的优先级与结合方向

      如表3-2所示。

表3-2  C语言中的逻辑运算符
运算符含义优先级结合方向
!逻辑非2
&&逻辑与11
||逻辑或12

 说明:

     ① 逻辑运算符中,“&&”和“”是双目运算符要求有两个运算对象:“1”是单目运算符。

     逻辑运算符的优先次序

             !  → && → ||           (!为三者中最高)

      ③ 与其他运算符的优先次序,如下图所示。

  

3、逻辑表达式优先级使用案例

      例1  x > y && m > n  等价于  ( x >y ) && ( m > n )

      例2  a != b || x == y   等价于   (a != b) || (x == y )

      例3  ! x || x > y    等价于  ( ! x ) || ( x > y )

4、逻辑表达式运算案例

     例1   ( 3 < 2 ) && ( 7 > 5 ) 值为 0     只有“&&”右边的子表达式为真

     例2    ( 3 < 2 ) || ( 7 > 5 )    值为 1     只要求有一个子表达式为真

      例3    !( 3 < 2 )                   值为1      子表达式为假    

       逻辑表达式的值为1或0。因为任何类型的表达式都有真假,所以逻辑运算符可以连接任何类型的数据。如果逻辑表达式太复杂,则需要注意比较运算符优先级的大小。看下面的例子。

       x > 7 && x + y != 20  等价于  ( x>7 ) && ( ( x+y ) != 20 )

       3 + 2 && 5 > 40  等价于  ( 3 + 2 ) && ( 5 > 4 ) || ( !0 )

     熟练掌握关系运算和逻辑运算是运用分支结构编程的关键。

四、拓展资料

案例1  判别某一年是否为润年,用逻辑表达式表示

问题分析:

      如果是年,则为1(真),否则为0(假)

是否为闰年应符合下面二者之一:

      ① 能被4整除,但不能被100整除,如2008

      ② 能被400整除,如2000

      “应符合下面二者之一”这句话表明两个条件是或的关系,不是与的关系。“能被4整除,但不能被100整除这句话表明是与的关系,不是或的关系。

逻辑表达式如下:

     (year % 4 == 0 && year 100 !=0) || year % 400 == 0

分析验证:

      ① 当年份(year)为 2008、2020、2000年时,计算结果为真(1)

      ② 当年份(year)为 2002、2100、2010年时,计算结果为假(0)

     通过上面两组数据分析,得出判别“某年是否为润年”的逻辑表达式是正确的。

案例2  已知三边a,b,c均大于0,判断三边是否构成三角形,用逻辑表达式表示。

问题分析:

      如果是任意两边的和大于第三边,则为1(真),否则为0(假)

      判断三边是否构成三角形的定理是:任意两边的和大于第三边。三边a,b,c的所有组合有三种情况,分别为: ① a+b>c,② a+c>b,③ b+c>a,这三种情况任何一种情况都必须成立,则可以构成三角形,应是与的关系,不是或的关系。

逻辑表达式如下:

        a+b>c && a+c>b && b+c>a

分析验证:

     ① 当 a=3,b=4,c=5 或  a=4,b=3,c=5 或 a=5,b=4,c=3时,计算结果为真(1),  表明可以构成三角形。

     ② 当 a=3,b=1,c=1 或  a=1,b=3,c=1 或 a=1,b=1,c=3时,计算结果为假(0),表明不可以构成三角形。


写逻辑表达式

例1:判断整数x是否为奇数

    如果是奇数,则为真,否则为假

         x % 2==1

         或  x % 2

         或  x/2*2!=x

    多用几个具体的数去算一下

    如:3,5,11,4,10去算一下


例2:判断整数x是否为偶数

    如果是偶数,则为真,否则为假

         x % 2==0

         或  !(x % 2)

         或  x/2*2==x

    多用几个具体的数去算一下

    如:3,5,11,4,10去算一下



例3:判断整数x是否能被3整除

    

    如果能被3整除,则为真,否则为假

         x % 3==0

         或  !(x % 3)

         或  x/3*3==x

    多用几个具体的数去算一下

    如:3,5,11,4,10去算一下



例4:判断整数x是否既能被3整除,又能被5整除

    

    如果能,则为真,否则为假

         x % 5==0  && x % 3==0

         或  !(x % 3)

         或  x/3*3==x

    多用几个具体的数去算一下

    如:3,5,11,15,10去算一下



设a=6,b=4,写出下列运算表达式的结果。


a>=5 && b<=3  1 && 0   0



设a=2,b=4,写出下列运算表达式的结果。


a>=5 && b<=3 

  0  && b<=3 与运算前一操作数为0,则后一个不算


设a=2,b=4,写出下列运算表达式的结果。

a>=5 && (b+=2)    

  0  && (b+=2)

 与运算前一操作数为0,则后一个不算

  设a=5,b=4,写出下列运算表达式的结果。

a>=5 || (b+=2)    

  0  || (b+=2)

 或运算前一操作数为1,则后一个不算

 设a=5,b=4,写出下列运算表达式的结果。

a>5 || (b+=2)    

  0  || (b+=2)

 或运算前一操作数为1,则后一个不算