A1.程序和程序设计语言
- 程序
- 程序=算法+数据结构+程序设计方法+语言工具和环境
- 数据结构:数据的类型和数据的组织形式
- 算法:对数据操作的方法和步骤
- 程序设计语言的种类
- 第一代语言:机器语言
- 第二代语言:汇编语言
- 第三代语言:高级语言
——面向过程语言
——面向对象语言
- 第四代语言:非过程化语言(mysql)
- 语言处理系统
- 编译型(c,java(广义))
- 解释型(python)
- 混合型
A2.算法
- 算法的概念
- 为解决一个问题而此采取的方法和步骤,就称为算法
- 计算机算法两大类
- 数值计算算法:科学计算,少量的输入和输出,复杂的运算
- 非数值计算算法:数值管理,大量的输入和输出,简单的算术和逻辑运算
- 算法的特性
- 有穷性
- 确定性
- 有效性
- 有零或多个输入
- 有一个或多个输出
- 算法的描述方法
- 自然语言
- 传统的流程图
- N-S图
- 伪代码:用介于自然语言和计算机语言之间的文字和符号来描述算法
- 计算机语言
A3.程序设计的过程
- 分析问题
- 确定数学模型
- 算法设计
- 程序开发
- 运行和测试
- 结构化程序的结构简单清晰,可读性好,模块化强,描述符合人们解决复杂问题的普遍规律,在应用软件开发中发挥了在应用软件中发挥了重要的作用
- 在软件设计和实现过程中,提倡采用自顶而下、逐步细化的模块程序设计方法
- 强调采用单入口,单出口(高内聚,低耦合)的三种基本控制结构,避免使用GOTO语句。
A4.C语言的发展、标准及特点
- c语言的发展及标准
- c语言是一种通用的、面向过程的计算机程序设计语言
- 1972年里奇在贝尔电话实验室设计开发了c语言
- 为了全面推广,组成了c语言标准委员会
- 1989,诞生了第一个完备的c语言“c89”
- 2020,最新的c语言标准为18年发布的“c18”
- c语言的特点
- 语言简洁
- 运算符丰富
- 数据类型丰富
- 具有结构化的控制语句
- 可直接访问物理地址
- 生成目标代码质量高,程序执行效率高
- 程序可移植性好
- 语法限制不太严格,程序设计自由度大
A5.C语言程序的结构
- 源程序文件1
- 愿程序文件n
- 源程序文件2
- 预处理命令
- 数据声明
- 函数1
- 函数首部
- 函数体
- 数据声明
- 执行语句
- 函数n
- 一个c语言源程序可以由一个或多个源文件组成
- 每个源文件可由一个或多个函数组成
- 一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数
- 源程序中可以有预处理命令,预处理命令通常应放在源程序的最前面
- 每一个语句都必须以分号结尾
- 标识符,关键字之间必须以空格符间隔
- #include 预处理命令
- int main()
- {
- printf('Hello Wrold!");
- return 0;
- }
A6.常量、变量与数据类型
- 在程序运行过程中,其值不能被改变的量称为常量
- 直接常量
-
- 整形常量:100,125,-100.0
- 八进制整数:以0开头
- 十六进制:以0X或0x开头
- 实型常量:3.14,0.125,-3.789 (浮点型)
- 小数形式:3.14,0.125,-3.789
- 指数形式:3e-3
- 字母e或E之前必须有数字,e后面的指数必须有整数
- 字符常量:‘a','b','ab'
- 用单引号包含的一个字符
- 只能包含一个字符,不能是字符串
- 字符可以是任意字符,后不能参与计算
- 字符串常量:“a”,“ab”
- 是一对双引号括起来的字符序列
- c规定以字符‘\0‘结束标志
- 转义字符
- \n 换行
- \t 横向跳格 (一次跳8位包括已输出位,超出8调到下一个制表位)
- \r 回车
- \\ 反斜杠
- \‘ 单引号
- \“ 双引号
- \b 退格
- \ddd ddd表示1到3位八进制数
- \xhh hh表示1到2位十六进制数
- 整形常量:100,125,-100.0
- 符号常量
- 格式:#define 标识符 常量
- 例如:#define PI 3.14
- #define不是c语句,是一个预编译命令,末尾无分号
- 符号常量名用大写,变量名用小写。
- 变量
- 变量代表内存中具有特定属性的一个存储单元,它用来存放数据,这就是变量的值,在程序运行期间,这些值是可以变化的
- 要区分变量名和变量值是不同的两个概念
- 变量命名规则
- c语言规定标识符只能由字母,数字和下划线3钟组成,且第一个字符必须为字母或下划线,区分大小写字母
- 合法的标识符
- sum,average,_total,Class,day,BASIC,li_ling
- 不合法的标识符
- M.D.John,¥123,#33,3D64,a>b
- 整形变量
- int i;(定义)
- i=10;(赋值)
- 变量类型
- 基本型
- int(类型说明符)
- 2字节(长度)
- -32768~32767(数的范围)
- 短整型
- short 2字节 2 15次方~ 2 15次方-1
- 长整型
- long 4字节 -2 31次方~ 2 31次方-1
- 无符号整型
- unsigned 2字节 0~65535
- 无符号短整型
- unsigned short 2字节 0~65535
- 无符号长整型
- unsigned long 4字节 0~ 2 32次方-1
- 基本型
- 实型变量
- double d;
- d=1.23;
- float(类型)
- 32(位数)
- 10 负37次方 ~ 10 35次方
- 6~7位(有效位)
- double 64 10 负307次方 ~ 10 308次方 15~16位
- long double 128 10 负4931次方~ 10 4932次方 18~19位
- float(类型)
- 字符变量
- char c;
- c=‘a’;
- 字符类型变量用来存放字符常量,注意只能放一个字符,一个字符变量在内存只占一个字节
A7.表达式
-
运算符的类型
- 圆括号【()】
- 下标运算符【【】】
- 指向结构体成员运算符【->】
- 结构体成员运算符【.】
- 逻辑非运算符【!】
- 按位取反运算符【~】
- 自增自减运算符【++】【--】
- 负号运算符【-】
- 类型转换运算符【(类型}】
- 指针运算符和取地址运算符【*】【&】
- 长度运算符【sizeof】
- 乘法运算符【*】
- 除法运算符【/】
- 加法运算符【+】
- 减法运算符【-】
- 左移动运算符【
- 右移动运算符【>>】
- 关系运算符【】【+】
- 等于运算符【==】
- 不等于运算符【!=】
- 换位与运算符【&】
- 换位异或运算符【^】
- 按位或运算符【|】
- 逻辑与运算符【&&】
- 逻辑或运算符【||】
- 条件运算符
- 【=】【/=】【*=】【%=】【+=】【-=】【>=】【&=】【^=】【|=】
- 逗号运算符【,】
-
算数运算符和算术表达式
- 算术运算符
- + 加法运算符,或正直运算符
- - 减法运算符,或负值运算符
- * 乘法运算符
- / 除法运算符
- % 求余运算符,%两侧均应为整型数据
- 算数运算符的结合方向为左至右
- 自加,自减运算符
- 作用是使变量的值加(减)1
- ++i,--i 在使用i之前,先使i的值加(减)1
- i++,i-- 在使用i之前,使i的值加(减)1
- j=++i 如果i为3,则i的值加(减)1
- j=i++ 先将i的值赋予j,再加(减)1
- C算数表达式
- 用算数运算符和括号将运算对象(也称操作数)连接起来的,符合c语言规则的式子,称为C算数表达式。运算对象包括常量,变量,函数
- a+b
- (a*2)
- (x+r)*8-(a+b)7
- ++i
- sin(x)+sin(y)
- (++i)-(j++)+(k--)
- 用算数运算符和括号将运算对象(也称操作数)连接起来的,符合c语言规则的式子,称为C算数表达式。运算对象包括常量,变量,函数
- 自加,自减运算符
-
强制类型转换运算符
- 作用:将一个表达式转换成所需类型
- 一般形式:(类型名)(表达式)
- (double)a 将a转换成double类型
- (int)(x+y) 将x+y的值
- (float)(5%3) 将5%3的值换成float型
-
赋值运算符和赋值表达式
- 简单赋值运算符
- 格式:变量=表达式
- 赋值运算符具有右结合性
- 赋值运算符的优先级在所有运算符中排倒数第二
- 例如a=5
- 复合赋值运算符
- x=x+n 等价于x+=n
- a+=5 等价于a=a+5
- x*=y+7 等价于x=x*(y+7)
- r%=p 等价于r=r%p
- 赋值表达式
- a=5
- b=(a=5)
- c=10+(a=8)
- a=(b=10)/(c=2)
- 注意在变量说明中,不允许连续给多个变量赋初值,如下述
- int a=b=c=5
- int a=5,b=5,c=5正确
- 注意在变量说明中,不允许连续给多个变量赋初值,如下述
- 赋值过程中的类型转换
- 实型数据赋给整型变量,先对实数取整后赋予整型变量
- 例如:i为整型变量,执行“i=3.56”后i的值为3
- 将一个double型数据赋给float变量时,截取其前面7位有效数字存放到float变量中。注意数值范围不能溢出
- 将一个占字节多的整形数据赋给一个占字节少的整型变量或字符变量只将其低字节原封不动地送到该变量(既发生截断)
- 实型数据赋给整型变量,先对实数取整后赋予整型变量
-
逗号运算符和逗号表达式
- 使用逗号把两个表达式连接起来组成一个表达式,称为逗号表达式
- 其一般形式为:表达式1,表达式2
- 逗号运算符的优先级在所有运算符中是最低的
- 其求值过程是分别求两个表达式的值,并以表达式2的值作为整个逗号表达式的值
- 例如 a=2,b=4,c=6,x,y;
- y=(x=a+b),(b+c)
-
程序练习
- 通过计算,将给出的五位正整数的个位,十位,百位,千位,万位分别拆分出来并输入,假设该正整数为12345
- 从右开始拆分输入
#include int main() { int x=12345; int a1,a2,a3,a4,a5; a5=x%10; a4=x/10%10; a3=x/100%10; a2=x/1000%10; a1=x/10000%10; printf("%d%d%d%d%%d,a1,a2,a3,a4,a5); return 0; }
- 从右开始拆分输入
- 从左开始拆分输入
-
#include int main() { int x=12345; int a1,a2,a3,a4,a5; a1=x/10000; a2=x%10000/1000; a3=x%1000/100; a4=x%100/10; a5=x%10; printf("%d%d%d%d%%d,a1,a2,a3,a4,a5); return 0; }
-