C语言程序和程序设计概述
程序:可以连续执行的一条条指令的集合
开发过程:C源程序(.c文件) --> 目标程序(.obj二进制文件,目标文件) --> 可执行文件(.exe文件) -->结果
在任何机器上可以运行C源程序生成的 .exe 文件
没有安装C语言集成开发环境,不能编译C语言程序,函数
是C程序的基本单位
程序设计有以下几个部分:
- 确定数据结构
- 确定算法
- 编码(编写代码)
- 计算机上调试程序
- 整理并写出文档资料
C语言运行方法:编译执行,python:解释执行
头文件:#include<stdio.h>
C语言的结构特点:
- 函数是C程序的主要组成部分
一个C程序是由一个或多个函数组成
必须包含一个main函数(只能有一个)
每个函数都用来实现一个或多个特定功能
被调用的函数可以是库函数,也可以是自己编制设计的函数
- 程序总是从main函数开始执行
- C程序书写可以一行内写几个语句,也可以一个语句分写在多行上(以分号为标准,判断是否是一个语句)
- 数据声明和语句最后必须有分号
- C语言本事不提供输入输出语句,由库函数提供
算法表示方法:
- 自然语言
- 用伪代码表示
- 用流程图表示
- N-S流程图表示
标识符、常量和变量
常量
整型常量:12、0、-3
实型常量:
十进制小数:0.34、-56.79
指数形式:12.34e3(12.34×10³)
符号常量:‘a’、‘b’
字符串常量:“Beijing”
常量在程序运行期间,值不可以改变的
#define PI 3.14159 //定义符号常量不需要分号
变量
在程序运行期间,值是可以改变的
定义变量时指定该变量的名字和类型
变量名实际上是以一个名字代表一个存储地址
从变量取值,实际上是通过变量名找到相应的内存地址,从该存储单元中读取数据
标识符
只能由字母、数字和下划线组成,且第一个字符必须为字符或下划线,不能使用C语言关键字作为标识符
C语言是严格区分字母大小写
关键字必须用小写字母
数据类型
整型数据
整型常量3种表示形式
十进制整数,如2,-983
八进制整数。以0开头,由0~7构成,通常为无符号数,如012,八进制12
十六进制整数。以0x开头,由 0 ~ 9 和 A ~ F 或 a ~ f 构成,如0x12A,十六进制12A
整型变量:类型说明符 变量名标识符; 如 int a,b,c;
在定义变量的同时给变量赋初值,称变量初始化,若没有初始化,则内容不确定
计算机最小存储单位:位(bit)
一个字节(byte) = 8bit
关键字 | 类型 | 所占的空间 |
---|---|---|
char | 字符串类型 | 占1字节空间(8位二进制位) |
short | 短整型 | 占2字节空间(16位二进制位) |
int | 整型 | 占4个字节空间(32位二进制) |
long | 长整型 | 占4个字节空间(32位二进制)(在64为平台下占8个字节) |
float | 单精度浮点数 | 占4个字节空间(32为二进制)(7位有效位,指数-37到38) |
double | 双精度浮点数 | 占8个字节空间(64为二进制)(16位有效位,指数-307到308) |
在存储有符号数时,存储单元最高为代表符号位,0为正,1为负
设计程序时,注意变量类型的取值范围,当赋值超过取值范围时,会出现溢出错误
一个整 型常量后加 U或u 后缀则被认为时unsigned类型,内存中按unsigned规定方式存放
一个整型常量后加 L或l 后缀则被认为时long类型,内存中按long规定位数存放
无符号长整数:用后缀 UL/ul表示,如:15ul
浮点型(实型)数据
实型常量
又称实属或浮点数
十进制小数形式,如123.456
指数形式:以 “e” 或 “E” 后跟一个整数来表示以10为底的幂数,如 2.3026e2
规定:字母 e 或 E 之前必须有数字,且e或E后面指数必须为整数
10⁸不能写成e8,必须写成:1e8 或 1.0E8
实型变量
实型(3.14159)数据在内存中存放的形式:
+:数符
.314159:小数部分
1:指数
小数部分占的为数越多,数的有效数字越多,精度越高
指数部分占的位数越多,则能表示的数值范围越大
字符型数据
字符常量
用单引号括起来的一个字符,如’a‘、’E‘,不能 ’ab‘
字符常量以ASCII码存储,一个字符占一个字节,大写字母与小写字母ASCII码值相差 32
字符变量
如:char c1,c2,c3; c1 = ‘A’; c2 = ‘\n’;
每个字符变量分配一个字节用于存放一个字符(存放的是字符的ASCII码值)
字符数据与整型数据可相互赋值,直接运算
用%d输出,则输出整型数,用%c输出,则输出字符
字符串常量
一对双引号(" ")括起来的字符序列,字符个数称为其长度,如:“hellow”
长度为n的字符串,在计算机存储中占n+1个字节,原因:会自动在结尾添加 ’\0‘
ASCII码表
转义字符
字符形式 | 功能 | 字符形式 | 功能 |
---|---|---|---|
\n | 回车换行 | \\ | 一个反斜杠字符(\) |
\t | 将当前位置移到下一个tab位置 | \’ | 一个单引号(') |
\v | 当前位置移到下一个垂直制表对齐点 | \" | 一个双引号(") |
\r | 回车符 | \ddd | 三位八进制数代表一个ASCII字符 |
\f | 换页符 | \xhh | 二位十六进制代表一个ASCII字符 |
\b | 将当前位置后退一个字符 | \0 | 空值,其ASCII码值为0 |
符号常量
用标识符表示的常量,一般符号常量名用大写字母表示,命令通常放在文件头,在程序中不允许重新赋值,注意:不需要分号结尾
格式:#define 标识符 常量 如:#define PI 3
数学函数
运算符和表达式
算术运算符
优先级越小,越优先,优先级相同时,运算次序由结合性决定
运算符 | 运算规则 | 操作数数目 | 优先级 | 结合方向 |
---|---|---|---|---|
- | 负号 | 单目 | 2 | 左结合 |
+ | 加法 | 双目 | 4 | 左结合 |
- | 减法 | 双目 | 4 | 左结合 |
* | 乘法 | 双目 | 3 | 左结合 |
/ | 除法 | 双目 | 3 | 左结合 |
% | 取余或模 | 双目 | 3 | 左结合 |
1./3 + 1./3 + 1./3 = 1
取余运算符,所得结果的符号与运算符左侧操作数符号相同,如:-5 % 2 = -1,5 % -2 = 1,运算对象只能是整型
,结果也是整型,如:5 % 2 =1
自增、自减运算符
自增和自减运算符只能用于变量,不能用于常量和表达式
含义 | 运算符 | 优先级 | 结合性 | 功能 |
---|---|---|---|---|
自增 | ++ | 2 | 右结合 | 使变量的值增1 |
自减 | – | 2 | 右结合 | 使变量的值减1 |
使用形式:
++i 或 --i 变量 i 先自增或自减 1,再引用 i
i++ 或 i-- 先使用变量 i,再自增或自减1
不同数据类型间的转换
自动转换类型:数据类型自动由低级向高级转换
强制转换:将表达式的运算结果强制转换成指定的数据类型
格式:(数据类型说明符)(表达式)
int x,y;
float<