C语言复习:选择结构

注:本文是对苏小红版c语言教材第5章的笔记

  1. 机器语言是一种低级语言,而程序设计语言是一种高级语言
  2. 公式: 数据结构 + 算法 = 程序 仅对面向过程的语言成立
  3. 算法的基本特性:
    1. 有穷性
    2. 确定性
    3. 有效性
    4. 允许没有输入或一个/多个输入
    5. 必须有一个或多个输出
  4. n % 2 != 0 与 n % 2等价
    if(a = b)当b != 0 时为真
  5. && 和 || 都具有“短路”特性:若表达式的值可以先有计算的左操作数的值单独计算出来,则将不再计算右操作数的值,这意味着某些操作数的值可能不会被计算
    e.g.:
    #include <stdio.h>
    int main()
    { 
       int a=1,b=2,m=0,n=0,k;
       k=(n=b>a)||(m=a<b);
       printf("%d,%d\n",k,m);
       return 0;
    }


给k赋值的表达式中,n=b>a的值为1, 故右边的表达式不会被计算(即使a < b的值为1), 故m的值为0(不变)
6. 表达式1?表达式2:表达式3
表示若表达式1的值非0则执行表达式2, 否则执行表达式3
7. 多分枝控制

if(表达式1)语句1;
else if(表达式2)语句2;
else if(表达式3)语句3;
......
else if(表达式m)语句m;
else语句m + 1;

注意:条件语句只允许每个分支放置一条语句,故若一个分支有多条语句,应用{}扩起

  1. 浮点数与0的比较:
    只能使用近似的方法
    e.g.:
#include <math.h>
#define EPS 1e-3
...
if(fabs(a - b) < EPS)// 误差之内相等
  1. switch语句
switch (表达式)
{
case 常量1: 	语句1;
			//break;
case 常量2:	语句2;
			//break;
...
case 常量n:	语句n;
			//break;
default:
}

注意:1. 表达式只能是int型或char型
2. case本身没有条件判断的功能,如果没有break, 程序将依次执行下面的语句,直到遇到 } 为止
因此,若想用x X * 均表示乘法运算符,可以写成:

case *:
case x:
case X:
		printf("...");
  1. 测试
    白盒测试(结构测试):内部结构和流向已知, 尽量让测试数据覆盖每条语句,每个分支和每个判断条件,并减少重复覆盖
    黑盒测试(功能测试):只检查程序功能是否符合功能说明
    通常:选择有限的重要路径进行白盒测试,对重要的功能需求进行黑盒测试
  2. 编写判断条件时应从特殊到一般:
    如应先判断是不是等边三角形,再判断是不是等腰三角形
  3. 对输入非法字符的检验和处理
    检验scanf()返回值的方法
    若scanf()调用成功,则其返回值为已成功读入的数据项数。
    e.g.:
    计算2个整数之和(排除异常输入的干扰)
#include <stdio.h>
int main()
{
int a, b, ret;
ret = scanf("%d %d", &a, &b);
if(ret != 2){
printf("error!");
fflush(stdin);//fflush()用于清除缓冲区中的内容,可能会带来可移植性的内容
}else{
printf("%d", a + b);
}
return 0;
}
  1. 字母可以参加计算
    e.g. printf("%c", A + 32);
    输出结果为a
    但不能被当成数字读入
    e.g.scanf(“%d, &a”);
    输入a会出错
  2. 位运算:只能是char和int型

按位或:可用于清零
按位与:可用于置一
按位异或
按位取反
左移位:右边补0
右移位:
算数移位:x为有符号数时左边空位补符号位上的值
逻辑移位:x为无符号数时左边空位补0
左移n位相当于乘以2n,右移位相当于除以2n

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值