慕课C语言-1
慕课C语言-1
1.二进制和十六进制
1.用0和1表示各种信息
二进制数的一位,取值只能是0或1,称为一个“比特”(bit),简写:b
八个二进制位称为一个“字节”(byte),简写: B
1024(210)字节称为1KB ,1024KB称作1MB(1兆),1024MB称作1GB,1024GB称作1TB
用8个连续的0或1(即1个字节)来表示一个字母、数字或标点符号此即为ASCII编码方案
2.给定一个K进制数,求它是多大(应用题)
数就是数,没有进制之分,只有数的表示形式,才有进制之分。
所谓“十进制数”,是“数的十进制表示形式” 的简称。
3.给定一个数,求其K进制表示形式(应用题)
求数的K进制表示形式 – 短除法
4.K进制小数
- n进制下的有限位小数,在m进制下可能就无法精确表示,因为会无限循环
- 十进制有限位小数,在二进制的情况未必能用有限位数表示出来。计算机内存有限,不可能存放无限位,因此计算机的小数运算会有误差。比如,计算机其实无法精确表示4.9,只能精确表示4.899999999…之类一个很接近的数
5.十六进制数到十进制数的转换
6.十六进制数到二进制数的互相转换
2.C++快速入门
1.为什么是C++而不是C语言
C语言是好东西,但是有点弱
C++ 更是好东西,但是有点烦
我们要学的,是C++的一部分,基本上就是:C语言+ STL (STL是C++中能让你节省大量编程时间的神兵!)
因为暂时不写大程序,因此不用关心“面向对象”的事情!
2.第一个C++程序-输出
1 |
|
3.第二个C++程序-输出更多
1 |
|
4.第三个C++程序-输入
输入两个整数,输出它们的和 (NOI.POJ 7883)
1 |
|
5.第四个C++程序-输入字符
%c表示读入一个字符,不会跳过空格
1 |
|
输入内容
1 |
|
输出结果
1 |
|
6.注释
经常需要在程序中写点说明性的文字,帮助程序阅读者理解程序。这就需要用注释
程序的注释不是程序的一部分,不会对程序运行产生影响
1.单行注释:用 //
2.多行注释用 /* */
7.程序文件的保存
本课程中的所有程序,都应该存为后缀名为 “.cpp”的文件然后编译,不能存成 “.c”文件!
3.变量和数据类型初探
1.什么是变量
1.变量就是一个代号,程序运行时系统会自动为变量分配内存空间,于是变量就代表了系统分配的那片内存空间,对变量的访问,就是对其代表的内存空间的访问。
2.变量有名字和类型两种属性,不同变量的名字就对应了内存中的不同地址(即不同位置),而变量的类型,决定了一个变量占用多少个字节。
3.在C++语言中,变量要先定义,然后才能使用。“使用”有时也称为“引用”。读取或修改一个变量的值,都叫使用这个变量。定义变量的语句,要出现所有使用该变量的所有语句之前。
2.变量的定义
1.类型名 变量名1,变量名2,……,变量名n;
1 |
|
2.一个变量不能定义两次
1 |
|
3.变量的命名规则
- 变量由大小写字母、数字和下划线构成,中间不能有空格,长度不限,不能以数字开头。
- 变量名是大小写相关的,name 和 Name 是不同的两个变量。
- 变量名不能和C++系统预留的一些名字(保留字)重复。C++预留的保留字为:
1 |
|
此外还要注意不要取名为 begin 、 end 、 next 、 index、list、link 等
4.C++的数据类型
“数据类型”能够说明一个变量表示什么样的数据(整数,实数,还是字符等)。不同数据类型的变量,占用的存储空间大小不同。除了基本数据类型外,C++还允许程序员自定义数据类型。
5.C++的基本数据类型
int,long,short,char的最高位(最左边)是符号位,为1则表示负数,为0表示非负数
一个字节等于8个比特,即8个二进制位
6.用sizeof运算符求变量占用字节数
sizeof(变量名)
sizeof(类型名)
7.变量的初始化
变量在定义的时候,可以给它指定一个初始值,这叫变量的初始化。
没有初始化的变量,其值一般是不确定的。
4.变量和数据类型进阶
1.有符号整数和无符号整数
- short、int、long、long long 类型的变量,可以表示正数,也可以表示负数,称为有符号的整数类型。
- unsigned short, unsigned int, unsigned long,unsigned long long类型的变量,只会被看作非负数,称为无符号的整数类型。
2.有符号整数的表示方式
- 将最左边的位(最高位)看作“符号位”。符号位为0,则表示是非负数,其绝对值就是除符号位以外的部分;符号位为1,则表示是负数,其绝对值是所有位取反(0变1,1变0)后再加1。
- 将一个负整数表示为二进制的方法:
设置符号位为1,再把其余位等于绝对值取反再加1
3.数据类型的自动转换
有些不同的数据类型之间是相容的,可以互相赋值,这叫数据类型的自动转换
1 |
|
字符型数据可以转换成整型数据
1 |
|
整型数据也可以转换为字符型数据,但只会留下最右边的一个字节(第0位到第7位),其他字节丢弃
1 |
|
类型自动转换示例
1 |
|
5.常量
常量就是在程序运行过程中值不会发生改变,而且一眼就能看出其值的量
常量也可以分成多种:整型,浮点型,字符型,字符串,符号常量
1.十进制整型常量
0 123 -456 677363
2.十六进制整型常量,以“0x”开头
0x123 -0x1a 0x2abcdef 0xFFA 0x100
3.十六进制数中,用A(a)表示10, B(b)表示11 …. F(f)表示15
(3450)10 = 0 ×100 + 5 ×101 + 4 ×102 + 3 ×103
0x2FAB = 11×160 + 10 ×161 + 15 ×162 + 2 ×163 = (12203)10
4.一个十六进制位,正好对应于4个二进制位 F = (1111)2
5.八进制整型常量,以0开头
01 0123 -0456 0677
6.字符型常量
字符型常量表示一个字符,用单引号括起来
‘a’ ‘B’ ‘,’ ‘0’ ‘9’ ‘:’
字符型常量可用于给char 和unsigned char类型的变量赋值
char c = ‘a’;
unsigned char ch;
ch = ‘9’;
7.字符型常量和变量都占一个字节,内部存放的是字符的ASCII编码。
ASCII编码是一个0255的整数’9’: 48 ~ 57
‘0’
‘A’’Z’: 65 ~ 90‘z’: 97 ~ 122
‘a’
C++中还有一类字符常量,以’'开头,如’\n’、’\r’、’\t’等,称为“转义字符”。所谓“转义”就是指’'后面的字符被转成别的含义。
8.字符串常量
- 字符串常量是用双引号括起来的一串字符
“a” “abc” “1234567” - “” 也是一个字符串常量,它代表一个空串,即不包含任何字符的字符串
- “a”和’a’是不一样的,前者是只有一个字符的字符串,后者是一个字符,不能
用前者给一个char类型的变量赋值。 - “1234567”当然也和1234567是不一样的,不能用前者给一个int类型变量赋值。
- 字符串常量里可以包含转义字符
1 |
|
1 |
|
9.符号常量
- 为了阅读和修改的方便,常用一个由字母和数字组成的符号来代表某个常量,这样的常量就叫符号常量
1 |
|
- 定义之后,程序中所有出现“常量名”的地方,就等价于出现的是“常量值”
- “常量名”的命名规则和变量相同,“常量值”则写什么常量都可以
1 |
|
- 尽量少使用数值常量,二用符号常量替代它,这样便于修改