1.有穷性 | 算法的操作步骤只能是有限的 |
2.确定性 | 算法中每一个步骤是确定的,而非含糊的,模棱两可的 |
3.有零个或多个输入 | 算法需要获取相关必要信息就是输入 |
4,有一个或多个输出 | 算法得到的结果就是输出 |
5,有效性 | 算法中每一个步骤都应能有效执行并得到确定结果 |
(一)顺序结构
(二)选择结构(if,switch语句)
(三)循环结构(while,for语句)
1,整型常量,包括正整型常量和负整型常量,eg:100,-78,0,678
2,实型常量,
十进制形式,数字加小数点组成,eg:5.4,-88.2,0.0
指数形式,以字母e或E代表以10为底的指数(e或E之前必须有数字,之后必须为整数),eg:56.66e3(56.66*10^3),-0.553E-7(-0.553*10^(-7))
3.字符常量,
普通字符,字符常量只能是一个字符,以其代码(一般为ASCII码)存储,eg:'a','#','4'
连续输入两个字符中间不能用空格隔开,因为空格也是一个字符,会赋值给第二个字符变量。
转义字符,以\开头的字符序列,常见转义字符表:
转义字符 | 字符值 | 输出结果 |
\' | 一个单撇号 | ' |
\" | 一个双撇号 | " |
\? | 一个问号 | ? |
\\ | 一个反斜线 | \ |
\0 | 空(null) | 作为字符串结尾字符(其后字符会被忽略) |
\a | 警告(alert) | 发出声音或视觉信号 |
\b | 退格(backspace) | 当前位置后退一个字符 |
\f | 换页(form feed) | 当前位置移到下一页开头 |
\n | 换行 | 当前位置移到下一行开头 |
\r | 回车(carriage return) | 当前位置移到本行开头 |
\t | 水平制表符 | 当前位置移到下一个tab位置。注意:\t不是和前面字符保持固定距离,而是从前面字符开始移动到该行最接近的8字符倍数的位置,再输出。 |
\v | 垂直制表符 | 当前位置移到下一个垂直制表对齐点 |
\o,\oo,\ooo(o代表一个八进制数字) | 与该八进制码对应的ASCII值 | 与该八进制码对应字符 |
\xh[h](h代表一个十六进制数字) | 与该十六进制码对应的ASCII值 | 与该十六进制码对应字符 |
4,字符串常量,用双引号而不能用单引号括起来,eg:"CHINA","56Bboy"
5,符号常量,用#define指定一个符号名称代表一个常量,eg:#define pi 3.1415926
变量名实际上是一个以一个名字代表的一个存储地址,eg:int a;
C99允许使用常变量,变量存在期间其值不能改变,eg:const int a=4;
符号常量和常变量的区别:
#define是预编译指令,在预编译时进行字符替换,预编译后符号常量就不存在了(全部替换成对应值了),不对其分配存储单元,而常变量需要占用存储单元,只是值不改变,相比使用更加方便。
标识符可由字母,数字,下划线组成,且必须以字母或下划线开头(不能以数字开头)。
用计算机进行的计算不是抽象的理论值的计算,而是用工程的方法实现的计算,许多情况下只能得到近似的结果。
c语言允许使用的数据类型:
其中基本类型(包括整型和浮点型)和枚举类型变量的值都是数值,统称为算术类型(arithmetic type).算术类型和指针类型统称为纯量类型(scalar type),因为其变量的值是以数字来表示的.枚举类型是程序中用户定义的整数类型。数组类型和结构体类型统称为
组合类型(aggregate type),共用体类型不属于组合类型,因为在同一时间内只有一个成员具有值。函数类型用来定义函数,描述一个函数的接口,包括函数返回值的数据类型和参数的类型。
机器数:符号位+数值(0表示正,1表示负)
原码:计算机用原码计算困难,0的表示不唯一
反码:x>0: [x]原=[x]反,x<0:[x]反=对应原码符号位不变,数值部分按位取反,0的表示不唯一
补码:x>0: [x]原=[x]反= [x]补,x<0: [x]补=[x]反+1,0的表示唯一
⇒[x+y]补=[x]补+[y]补 ; [x-y]补=[x+(-y)]补=[x]补+[-y]补(将减法转化为了加法)
附:补码10000000为什么可以表示-128?:https://blog.csdn.net/u012814856/article/details/70850543
编译系统(根据操作系统具体情况)给int型数据分配两个字节或四个字节(VC下)的存储空间
类型名为short int 或short
编译系统给short int型数据分配两个字节(VC下)的存储空间
类型名为long int 或long
编译系统给long int型数据分配四个字节(VC下)的存储空间
类型名为long long int 或long long
编译系统给long int型数据分配四个字节(VC下)的存储空间
各种类型数据所占用存储单元长度由编译系统决定,c标准只要求:short<=int<=long<=long long
1.对于只有正值的数据来说,可以在类型符号前加unsigned表示为无符号整数(即不考虑第一位的符号位),只有对整型数据(包括字符型)加signed(一般省略)和unsigned修饰符,实型数据不可以加。
2.如果把一个负整数赋给符号字符型变量是合法的,但它并不代表一个字符,而是作为一字节整型变量存储负整数
c语言中,实数以指数形式存放在存储单元中,一个实数表示为指数可有不止一种表示形式,我们把小数点前数字为0,小数点后第一位数不为0的表示形式成为规范化的指数形式
每一个float型变量占据4个字节的存储空间,数值范围:-2^128 ~ +2^128,也即-3.40E+38 ~ +3.40E+38
在c语言中进行浮点数的算术运算时,将float型数据都自动转换为double型,然后进行计算
每一个double型变量占据8个字节的存储空间,数值范围:-2^1024 ~ +2^1024,也即-1.79E+308 ~ +1.79E+308。
每一个long double型变量占据8个(VC)或16个字节(Turbo C)的存储空间
系统根据整型常量的值来确定将其作为int还是ong int还是long long int处理
在整数末位加大写L或者小写的l表示它是长整型,但是VC中int和long int都是4四字节,因此无必要使用long int型
小数形式或者指数形式出现的实数都是浮点型常量,c编译系统把浮点型常量都按双精度处理,分配8字节。(进行编译时,对float变量分配4字节,对浮点型常量按双精度处理,分配8字节)
eg:float a=3.14159会警告可能存在精度损失
可以在常量末尾加专用字符,强制指定常量类型,如在3.14159后加F或f表示是float型常量,分配4字节,加L或l表示此常量为long double类型
注意:多数c编译系统(如VC)采用向零取整的方法,eg:5/3=1, -5/3=-1,取整后向零靠拢
++i,--i:在使用i之前使i的值加(减)1
i++,i--:在使用i之后使i的值加(减)1
注意:自增,自减运算符只能用于变量,不能用于常量和表达式
详见:https://blog.csdn.net/qq_36369267/article/details/82940997
(1)+、-、*、/运算的两个数中有一个数为float或double型,结果是double型,因为系统将所有float型数据都先转换为double型,然后进行运算
(2)如果int型与float或double型数据进行运算,先把int型和float型数据转换为double型.然后进行运算,结果是double型
(3)字符(char)型数据与整型数据进行运算,就是把字符的ASCII代码与整型数据进行运算.如:12+'A',由于字符A的ASCII代码是65,相当于12+65,等于77。字符数据可以直接与整型数据进行运算。如果字符型数据与实型数据进行运算,则将字符的ASCII代码转换为double型数据,然后进行运算
类型转换分为:系统自动进行的和手动进行的强制类型转换
(类型名)(表达式)
强制类型转换时,得到一个所需类型的中间数据,原来变量的类型未发生变化。
注意:强制类型转换运算优先于%运算 eg:若x为float型,x%5不合法,需要对x进行强制类型转换:(int)x%5