软件基础:
软件=程序+文档
程序=函数+函数+...
函数=数据结构+算法
算法:方法,整个步骤。
语句:在程序中,以;作为结束的代码,表示一条语句。
每个语句就是一个执行的步骤
算法的五个特性:
①有穷性:每条语句,必须在一定的时间内可以执行完。
②确定性:每条语句,算法的每个步骤,执行后的结果唯一。
③输入 :需要有初始信息。可以有多个输入,也可以没有输入。
④输出 :执行的结果,是为人所需的,必须要有输出。
⑤健壮性(可行性):可行,每个步骤的结果,和预期的相同。
C语言的前世今生:
KT教授 ->UNIX
汇编 ->与机器硬件一一对应。 移植性(兼容性)很差
KT ->BCPL ->B语言
DR和KT ->用B语言重写UNIX ->新的数据结构和语法出 ->C语言(C语言来自于BCPL中的C)
DR和KT ->用C语言重写UNIX
C语言的后代:
主流编程语言:易语言, C, C++, Java, C#, PHP, Objective-C, Swift, VB
C语言于20世纪70年代诞生于美国贝尔实验室,在世界范围应用非常广泛,适合开发效率要求高,偏底层或系统级的软件
汇编语言是低级语言
C语言是一门中(高)级语言,C++, Java, C#是高级语言。
脚本语言:Shell脚本,PHP,Javascript等
编译型语言:C, C++, Java, C#等
C语言基础:
运算符 :
一共34种:
+ - * / % ++ —— > < = == >= != ! || | & && ^ ~ << >> ( )
{ } [ ] \ . , ; ? " ' : <=
关键字 :
共32个:
int 整型
long 长整型
short 短整型
char 字符型
float 浮点型
double 双精度浮点型
void 空
struct 结构体
union 联合体
signed 有符号
unsigned 无符号
enum 枚举
volatile 定义隐含变量
const 确定变量不变
typedef 重命名字符类型
if if选择语句关键字
else if选择语句关键字
switch switch选择语句关键字
case switch选择语句关键字
default switch选择语句关键字
for for循环语句关键字
while while循环语句关键字
do do whilie循环语句关键字
return 返回函数值
break 返回跳出循环体
continue 返回跳出当前循环
goto 返回
auto 自动变量
static 静态变量
register 寄存机变量
extern 外部变量
sizeof 标识运算符
控制语句 :
9个
选择:2个 if switch
循环:3个 for while do..while
返回:4个 return break continue goto
函数=数据结构 + 算法
标识符:
函数名,变量名等。规则:
标识符由字母、数字、下划线组成,不能以数字开头,不能和关键字相同,不能重名。
存储
程序是对数据进行处理的,数据必须存放在存储器中
存储器分为外存(硬盘,U盘,光盘等)和内存(内存,缓存以及寄存器)
外存是非易失性存储器,即掉电后数据不丢失,可以持久存放数据,制造成本低,容量大,但读写效率较低。数据是以文件的形式存放在外存设备上的,也称ROM(Read-Only Memory,只读存储器)
内存是易失性存储器,即掉电后数据会丢失,用来存放临时数据,比如变量或中间运算结果,读写效率很高,但制造成本高,容量小,也称为RAM(Random Access Memory,随机访问存储器)
计算机的世界是二进制的,一切非二进制数据要能被计算机程序处理,必须先转换为二进制形式(这个过程就称为编码),存储器也只能存放二进制数据
存储单位:
用来衡量数据量的大小
bit 简写b,即比特或位,一个二进制数字(0或1)
Byte 简写B,即字节,1B = 8b
KB 千字节, 1KB = 2^10B = 1024B
MB 兆字节,1MB = 2^10KB
GB 吉字节,1GB = 2^10MB
TB 太字节,1TB = 2^10GB
C语言支持的数据类型:
基本(简单)数据类型和复杂数据类型
基本数据类型:数值型,字符型,特殊类型
数值型:整数类型,浮点类型
整数类型:短整型(short,占2Byte存储空间,表数范围-32768 - +32767),
无符号短整型(unsigned short,占2B,表数范围0 - 65535),
整型(int,占4Byte存储空间,表数范围-2^31 - +2^31-1),
无符号整型(unsigned int,占4B,表数范围0 - 2^32-1),
长整型(long,占存储空间大小和表数范围和int一样),无符号长整型(unsigned long,占存储空间大小和表数范围都和unsigned int一样)
浮点类型:单精度浮点型(float,占4Byte,大概表数范围-10^38 - -10^-38和+10-38 - +10^38),
双精度浮点型(double,占8Byte,大概表数范围-10^308 - -10^-308和+10-308 - +10^308)
字符型(char,占1Byte,表数范围-128 - +127),无符号字符型(unsigned char,占1Byte,表数范围0 - 255)
特殊类型:空类型(void,不占存储空间,通常用作类型占位符)
不同类型的数据的存储形态:
1.整数是以补码形式存放的
原码,反码和补码
零和正整数的原码,反码和补码是一样的,而负整数的原码,反码和补码不一样,计算方法是这样的:首先计算出原码,然后符号位保持不变,其他位按位取反就可以得到反码,反码再加1就可以得到补码
对于有符号的整数类型,最高位为符号位,0表示正,1表示负
对于无符号的整数类型,最高位是数值位,和其他位一样
不同进制间的互转:二进制,八进制,十进制,十六进制
十进制整数转换为二进制的方法:除2取余,逆序书写
例:21D = 10101B -21D = -10101B
十进制整数转换为八进制或十六进制的方法和转换为二进制类似
例:100D = 144O = 64H
二进制整数转换为十进制的方法:每一位乘以其位权然后相加
例如:1010B = 1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 = 10D
八进制或十六进制整数转化为十进制的方法和二进制的类似
例如:a3b4H = 10*16^3 + 3*16^2 + 11*16^1 + 4*16^0 =41908D
二进制整数转换为八进制或十六进制
例:10011001B = 231O = 99H
八进制或十六进制整数转换为二进制
例:144O = 001100 100B 144H = 101000100B
十进制小数转换为二进制的方法:乘2取整,顺序书写
例:0.125D=0.001B
十进制小数数转换为八进制或十六进制的方法和转换为二进制类似
二进制小数转换为十进制的方法:每一位乘以其位权然后相加
例:0.10101B = 1*2^-1 + 0*2^-2 + 1*2^-3 + 0*2^-4 + 1*2^-5 = 0.5 + 0.125 + 0.03125
八进制或十六进制小数转化为十进制的方法和二进制的类似
二进制小数转换为八进制或十六进制
例:0.1001011B = 0.454O = 0.96H
八进制或十六进制小数转换为二进制
例:A4.A3BH = 10100100.101000111011H