C语言自学教程--郝斌--第二讲 第二讲 11. 代码规范化 12. 什么是字节 13. 不同数据类型之间相互赋值的问题 14. 什么是ASCII 15. 字符的存储【字符本质上与整数的存储方式相同】 16. 基本的输入和输出函数的用法 17. 运算符 18 流程控制

11. 代码规范化

  • 《高质量C/C++编程》林锐
  • 成对法则
  • 内部代码要缩进
  • 功能独立的代码要和其他的代码换行
# include <stdio.h>

int main(void)
{
    //定义变量
    
    //对变量进行操作
    
    //输出值
    
    return 0;
}

12. 什么是字节

  • 字节就是存储数据的单位,并且是硬件所能访问的最小单位。
  • 1字节 = 8位
  • 1K = 1024字节
  • 1M = 1024K
  • 1G = 1024M

13. 不同数据类型之间相互赋值的问题

  • 暂不考虑(原码、反码、补码)

14. 什么是ASCII

  • ASCII不是一个值,而是一种规定,规定了不同的字符是使用哪个整数值去表示。
'A' = 56
'B' = 66
'a' = 97
'b' = 98
'0' = 48    

15. 字符的存储【字符本质上与整数的存储方式相同】

16. 基本的输入和输出函数的用法

  • printf() -- 将变量的内容输出到显示器上
  • scanf() -- 通过键盘将数据输入到变量中
	1. printf("字符串
");
    2.printf("输出控制符",输出参数);
	3. printf("输出控制符1 输出控制符2", 输出参数1,输出参数2);
	4. printf("输出控制符 非输出控制符",输出参数):
        
    1. scanf("输入控制符",输入参数);
    // 将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中。
	2. scanf("非输入控制符 输入控制符",输入参数):
    //将从键盘输入的字符转化为输入控制符所规定格式的数据,然后存入以输入参数的值为地址的变量中,非输入控制符必须原样输入。
输出控制符
%d -- int
%ld -- long int
%c -- char
%f -- float
%lf -- double
%x(或者%X或者%#X) -- int 或 long int 或 short int
%o -- 同上
%s -- 字符串
为什么需要输出控制符:
1. 01组成的代码可以表示数据也可以表示指令
2. 如果01组成的代码表示的是数据的话,那么同样的01代码组合以不同德输出格式输出就会有不同的输出结果 。
如何使用scanf编写出高质量代码:
1. 使用scanf之前最好先使用printf()提示用户以什么样的方式来输入。
2. scanf中尽量不要使用非输入控制符,尤其是不要用 。
3. 应该编写代码对用户的非法输入做适当的处理
while ((ch = getchar()) != '
')
    continue;

17. 运算符

运算符类型
算术运算符 + - * /(除) %(取余数)
关系运算符 > >= < <= !=(不等于) ==(等于)
逻辑运算符 !(非) &&(且) ||(或)
赋值运算符 = += *= /= -=
  • 优先级别:算术 > 关系 > 逻辑 > 赋值
  • &&左边的表达式为假,右边的表达式肯定不会执行
  • || 左边的表达式为真,右边的表达式肯定不会执行

18 流程控制

1. 什么是流程控制

  • 程序代码执行的顺序。

2. 流程控制的分类(顺序、选择、循环)

选择
定义 某些代码可能执行,也可能不执行,有选择的执行某些代码。
分类 1. if最简单的用法
2. if的范围问题
3. if ... else ... 的用法
4. if ... else ... if ... else ... 的用法
5. C语言对真假的处理
6. if举例 -- 求分数的等级
7. if的常见问题解析

18.2.1 if最简单的用法

if(表达式)
{
    语句
}
/*功能:如果表达式为真,执行语句
      如果表达式为假,语句不执行*/

18.2.2 if的范围问题

1.
    if(表达式)
    	语句A;
    	语句B;
 //if默认只能控制语句A的执行或不执行
 //if无法控制语句B的执行或不执行
 2.
    if(表达式)
{
    语句A;
    语句B;
}
//此时if可以控制语句A和语句B

//由此可见:if默认只能控制一个语句的执行或不执行,如果想控制多个语句的执行或不执行,就必须把这些语句用{}括起来

18.2.3 if...else的用法

18.2.4 if...else...if..else...的用法

//格式:
if(1)
    A;
else if(2)
    B;
else if(3)
    C;
else
    D;

18.2.5 C语言对真假的处理

  • 非零是真

  • 零就是假

  • 真用1表示

  • 假用零表示

18.5.6 if举例 -- 求分数的等级

# include <stdio.h>

int main(void)
{
    float score;
    
    printf("请输入您的考试成绩:");
    scanf("%f",&score);
    
    if(score > 100)
        printf("输入错误!
");
    else if (score>=90 && score<=100)	//(90<=score<=100)返回的是逻辑值而不能达到判断score值范围的目的
        printf("优秀!
");
    else if (score>=80 && score <90)
        printf("良好!
");
    else if (score>=60 && score<80)
        printf("及格!
");
        else
            printf("输入的分数过低!");
}
# include <stdio.h>

int main(void)
{
    int i = 3;
    int j = 5;
    int t;	//定义临时变量
    
    //互换ij
    t = i;
    i = j;
    j = t;
    
    printf("i = %d, j = %d
", i, j);
}
#include <stdio.h>

int main(void)
{
    int a, b, c;	//等价于:int a; int b; int c;
    
    printf("请输入三个整数(中间以空格分隔):");
    scanf("%d %d %d", &a, &b, &c); 
    
    //编码完后a是最大值 b是中间值 c是最小值
    
    if (a < b)
    {
        t = a;
        a = b;
        b = t;
    }
    if (a < c)
    {
        t = a;
        a = c;
        c = t;
    }
    if (b < c)
    {
        t = b;
        b = c;
        c = t;
    }
    
    printf("%d %d %d
", a, b, c);
    
    return 0;
}

19 学习C语言常见误区

如何看懂一个程序
1.流程
2.每个语句的功能
3.试数
对一些小算法的程序
1.尝试自己编程解决它,大部分人最终都无法独立解决。
2.如果解决不了,就看答案。
3.关键是把答案看懂,这个要花很大的精力,也是我们学习的重点,看懂之后尝试修改程序,并且知道修改之后程序的不同输出结果的含义。
4.照着答案去敲。
5.调试错误。
6.不看答案,自己独立把答案敲出来。
7.如果程序实在无法彻底理解,就把它背会。