返回 课程

信奥AC之路-1级

0% 完成
0/0 步骤
  1. 第1课 开发环境与基础输出
    5 主题|小节
  2. 第2课 算术运算符
    7 主题|小节
  3. 第3课 printf与运算输出
    7 主题|小节
  4. 第4课 数的进制与拆位
    6 主题|小节
  5. 第5课 变量与基础运算
    17 主题|小节
  6. 第6课 常量与取整运算
    8 主题|小节
  7. 第7课 关系运算
    8 主题|小节
  8. 第8课 逻辑运算
    9 主题|小节
  9. 第9课 输入与计算进阶
    10 主题|小节
  10. 第10课 if语句及双分支语句
    8 主题|小节
  11. 第11课 if语句及双分支进阶
    11 主题|小节
  12. 第12课 三目运算
    9 主题|小节
  13. 第13课 多分支、多if和switch语句
    11 主题|小节
  14. 第14课 循环(基本输出)
    7 主题|小节
  15. 第15课 循环(While+If)
    8 主题|小节
  16. 第16课 循环(计数、求和、求乘积)
    10 主题|小节
  17. 第17课 循环进阶(While+)
    8 主题|小节
  18. 第18课 do-while及while其他用法
    8 主题|小节
  19. 第19课 For循环基础
    9 主题|小节
  20. 第20课 For循环进阶
    8 主题|小节
课 8, 主题|小节 4
进行中

8.3 运算组合练习

2025年9月22日
课 进展
0% 完成

8.3.1 奇偶性判断

// 方法一:使用 == 0 判断偶数
printf("===使用==0判断偶数===n");
// 判断两个数都是偶数
printf("6和8都是偶数?%dn", 6 % 2 == 0 && 8 % 2 == 0);    // 输出:1(真)
printf("6和7都是偶数?%dn", 6 % 2 == 0 && 7 % 2 == 0);    // 输出:0(假)

// 判断至少有一个是偶数
printf("6和7至少一个是偶数?%dn", 6 % 2 == 0 || 7 % 2 == 0);    // 输出:1(真)
printf("7和9至少一个是偶数?%dn", 7 % 2 == 0 || 9 % 2 == 0);    // 输出:0(假)

// 判断不全是偶数
printf("6和8不全是偶数?%dn", !(6 % 2 == 0 && 8 % 2 == 0));    // 输出:0(假)
printf("6和7不全是偶数?%dn", !(6 % 2 == 0 && 7 % 2 == 0));    // 输出:1(真)

// 方法二:直接使用取模结果(0为假,1为真)
printf("n===直接使用取模结果===n");
// 判断两个数都是奇数(余数都是1)
printf("5和7都是奇数?%dn", 5 % 2 && 7 % 2);    // 输出:1(真)
printf("5和6都是奇数?%dn", 5 % 2 && 6 % 2);    // 输出:0(假)

// 判断至少有一个是奇数
printf("5和6至少一个是奇数?%dn", 5 % 2 || 6 % 2);    // 输出:1(真)
printf("6和8至少一个是奇数?%dn", 6 % 2 || 8 % 2);    // 输出:0(假)

// 判断不全是奇数
printf("5和7不全是奇数?%dn", !(5 % 2 && 7 % 2));    // 输出:0(假)
printf("5和6不全是奇数?%dn", !(5 % 2 && 6 % 2));    // 输出:1(真)

// 方法三:复杂条件组合
printf("n===复杂条件组合===n");
// 判断:两个数中一个奇数一个偶数
printf("5和6一奇一偶?%dn", 5 % 2 && !(6 % 2) || !(5 % 2) && 6 % 2);    // 输出:1(真)
printf("5和7一奇一偶?%dn", 5 % 2 && !(7 % 2) || !(5 % 2) && 7 % 2);    // 输出:0(假)

// 判断:两个数不同性质(一个奇数一个偶数)的另一种写法
printf("5和6性质不同?%dn", 5 % 2 != 6 % 2);    // 输出:1(真)
printf("5和7性质不同?%dn", 5 % 2 != 7 % 2);    // 输出:0(假)

[图片:用图表展示不同判断方法的逻辑关系]

练习题:

  1. 选择题:以下哪个表达式可以判断两个数都是偶数?
    A. a % 2 || b % 2
    B. a % 2 && b % 2
    C. a % 2 == 0 || b % 2 == 0
    D. a % 2 == 0 && b % 2 == 0

正确答案:D
解析:判断偶数需要判断除以2的余数是否为0,要两个数都是偶数,需要用&&连接两个条件。

  1. 判断题:表达式”!(a % 2) && !(b % 2)”也可以用来判断两个数都是偶数。

正确答案:√
解析:对于偶数,a % 2 的结果是0,!0 的结果是1;对于奇数,a % 2 的结果是1,!1 的结果是0。所以这个表达式确实可以判断两个数都是偶数。

8.3.2 复杂条件判断

// 比较运算与逻辑运算的组合
printf("===复杂条件===n");
printf("b>b && a>c: %dn", 5>5 && 3>2);    // 0(因为5>5为假)
printf("b>b || a>c: %dn", 5>5 || 3>2);    // 1(因为3>2为真)

// 多重条件判断
printf("n===多重判断===n");
printf("结果:%dn", 5>3 && 2<4 || 1>2);    // 1
// 步骤:1. 5>3 = 1
//      2. 2<4 = 1
//      3. 1>2 = 0
//      4. 1 && 1 || 0 = 1

8.3.3 短路求值演示

// 与运算的短路特性
printf("===与运算短路===n");
printf("%dn", 0 && 5/0);    // 0(因为第一个操作数是0,不会计算5/0)

// 或运算的短路特性
printf("===或运算短路===n");
printf("%dn", 1 || 5/0);    // 1(因为第一个操作数是1,不会计算5/0)

[图片:展示短路求值的流程图]