1、1c 语言程序设计听课笔记 :01演变历史:CPL-BCPL-B-C面向机器的高级语言C 语言的特点:1 语言简洁,紧凑,使用灵活 2 运算符丰富 3 具有数据类型构造能力 4 具有很强的流程控制结构 5 语言生成的代码质量高 6 可移植性较好(显著的特点) 7 语言限制不够严格程序设计语言的构成:数据,运算,控制结构,存储管理,运算环境数据:提供用于加工的各种类型的初等数据项和数据结构运算:为数据提供一组有效的数据运算控制结构:为一系列被执行的基本运算提供控制运算顺序的机构存储管理:动态,静态运算环境:内部,外部程序设计语言的实现:(1)翻译或编译:1 编译程序:高级语言源程序-机器语言目标
2、程序 2 汇编程序:汇编语言源程序-机器目标语言程序 3 装配程序:机器语言源程序-机器语言目标程序(2)软件模拟:高级语言源程序-运行结果字符集:1 数字:0-9 2 字母:A-Z,a-z 3 特殊字符:-,#,、,(,)等 4 运算符:+,-,/,%等保留字:1 类型说明和定义保留字:chai,int,short 等 2 存储类说明保留字:auto,resgister,static,extern 3 特定字:用在预处理程序中,define,undef,include.标示符:保留字,特定字,一般标示符,一般标示符:用来标识变量名,常量名,函数名,数组名,类型名,文件名等的符号名字:(1)标
3、识符其结构定义:以字母(包括下划线)开头的字母数字串注意:书写标识符时有大小写区别,标示符的长度无统一规定C 语言以左大括号开头以右大括号结束,分号前的语句表示 C 语言的输出字符c 语言程序设计听课笔记 :02一、整形数据的类型:a)整型常量:整型常量即整常数,有十进制、八进制和十六进制整数。十进制数:一串连续的数字表示,最高位为非零。八进制数:以数字零开头。十六进制数:以数字零和字母 x 开头,a-f 不区分大小写。b)整型变量:分为有符号和无符号两种,所有整型变量在使用前必须加以说明和定义有符号的整型变量分为三种:标准整型(int)、短整型(short)和长整型(long),其值可正可负
4、。无符号的亦可分为三种:标准整型(unsigned int)、短整型(unsigned short)和长整型(unsigned long),其值不能为负。2 int、short 和 long 区别主要是表示的整数范围不同,用一个机器字来存放一个 int 型数据。且 int、short和 long 型整数的字长满足: short整数值:基准字符0,任意数字字符X-0=X (数值)字符量可以参加关系运算(之类),但是必须转化成 ASCII 码后进行字符量可以参加逻辑运算(内存中占 2 个字节 16 位)字符型数据:char a, b;(内存中占 1 个字节 8 位)可参与整数运算浮点型数据:flo
5、at a, b;(内存中占 4 个字节 32 位,以阶码和尾数表示)双精度数据:double a, b;(内存中占 8 个字节 64 位)五、变量的初始化变形说明完之后到使用之前,要赋初值六、变量的存储类变量的两个属性:存在性:变量都具有一个数据类型并以一定方式存在在内存中可见性:在其作用域(作用域指该变量有定义的程序部分)中是可见的(活动的),出了作用域则不再可见变量的以上两个属性以四个变量存储类决定:自动的(auto):每一次从程序中进入某个函数时,函数中的这个变量的值总会取初始化的值寄存器(register):用到计算机的寄存器,硬件变量静态的(static):下次进入这个函数时,函数中
6、的这个变量绕过初始化的部分,取上次这个函数结束时的值外部的(extern):全局变量c 语言程序设计听课笔记 :05a)自动变量:由保留字 auto 说明(auto 可省略)是局部变量,每进入一次函数体,就赋一次指定的初值(在进行编译前必须赋值),作用域局限于所在函数或块b)寄存器变量:在变量说明前面加保留字 register 来完成是局部变量,用法和作用域同自动变量,变量保留在 CPU 的寄存器中,占用固定的存储空间,只是对编译程序的一种建议(希望为寄存器变量),不是强制的,一般用于系统开发寄存器变量无地址,不能进行求地址运算寄存器变量的说明应尽量靠近使用的地方,用完尽快释放(有限的硬件资源
7、)c)静态变量:在变量说明前面加保留字 static 来完成静态局部变量生存期延长到程序运行结束(不止是函数结束),不一定赋初值,编译时对无值的赋予 0,用法和作用域同自动变量d)外部变量:函数外部任意位置定义的全局变量(作用域:从定义位置起到整个源文件结束;生存期:整个程序的运行期间)5外部变量与局部变量同名时,外部变量被摒弃每个引用外部变量的函数,都应对外部变量用 extern 加以说明第三章 运算一、运算符算术运算符关系运算符逻辑运算符位运算符赋值运算符条件运算符 ?:逗号运算符 ,指针运算符 * for(year=1900;year main() int a,b,t,i,k; prin
8、tf(“Please input a and bn“); scanf(“%d %d“, if(ab) t=a; a=b; b=t; for(i=1;imain() int x=9; while(!(x%3=2) printf(“%dn“,x); getch(); 例四:百钱买百鸡,小鸡 0.5 元,母鸡 2 元,公鸡 3 元,共 100 元要买 100 只,有哪些买法?设小鸡买 h 只公鸡买 c 只母鸡买 100-h-c 只则有 0.5*h+2*(100-h-c)+3*c=100#include main() int h,c; for(h=1;h=3)3、编写一个程序它从键盘上读入一个整数,经
9、它的所有正因子输出。14for(d=1;d(不在当前目录中寻找,径直到一系列系统预先设定的目录中寻找)16ps: 1、头文件之所以成为头文件,是因为#include 命令常出现在源文件头部2、C 本身包含很多头文件stdio.h(输入输出函数 ) string.h(字符串)math.h(数学函数)3、一个#include 只能指定一个被包含的文件 4、#include 可以嵌套 ,不可递归三、条件编译:有时希望程序中的一部分只有在满足一定条件时才进行编译,否则不参与编译一般形式:1、如果常量表达式为真,非零,则相应程序段被编译,否则跳过它#if 常量表达式程序段#endif常量表达式是在编译时
10、求值的,因此他只能由事先定义的宏名和常量组成,不能出现变量2、如果常量表达式为真,非零,则程序段 1 被编译,否则编译程序段 2#if 常量表达式 程序段 1#else程序段 2 3、#if 常量表达式 1程序段 1 #elif 常量表达式 2程序段 2 #elif 常量表达式 n程序段 n#else 程序段 n+1#endif 4、如果已经定义了相应的“宏名”,则编译程序段,否则跳过#ifdef 宏名程序段 #endif 5、如果已经定义了相应的“宏名”,则编译程序段 1,否则编译程序段 2 #ifdef 宏名 程序段 1 #else 程序段 2 #endif 176、如果没有定义相应的“宏
11、名”,则编译程序段,否则跳过#ifudef 宏名程序段#endif 7、如果没有定义相应的“宏名”,则编译程序段 1,否则编译程序段 2 #ifudef 宏名 程序段 1 #else 程序段 2 #endif c 语言程序设计听课笔记 :17第七章 数组和指针数组:是按一定格式排列起来的一系列具有同一属性的项目(向量、矩阵、立体矩阵等)1、数组名:表示群体的共性(具有同一种数据类型)2、下标:表示个体的个性(各自占有独立的单元)一、一维数组定义方式:类型说明符 数组名变量表达式1、常量表达式表达元素的个数,即数组长度。例如:int a10;2、组元素的表达形式:数组名 下标ps:下标是整形常量
12、或整形表达式,对于任何数组下标都由 0 开始对一位数组赋值:int a10;getchar();等待用户输入一个字符scanf(“%d“,for(i=0;ii; j-) if(aj t=aj; aj=aj-1; aj-1=t; printf(“the arry is:n“); 19for(i=1;i11;i+) printf(“%dn“,ai); getch(); 可以改进:1、为不再有交换时,程序停止2、可下沉、可上浮输入无序,输出有序 c 语言程序设计听课笔记 :19气泡法是发现后面的比前面的小就交换选择法排序是记住最小的,不交换,比较完后将记忆的最小数放在最前面木瓜未知世界说:“这节很难
13、懂呀!要看例题 100 例!我有了!想要的就留言!呵呵”的确很难啊c 语言程序设计听课笔记 :20二、二维数组1、定义形式:类型说明符 数组名 常量表达式 常量表达式2、二维数组元素的表示形式:数组名 下标 1下标 23、下标 1 称为行下标,下标 2 称为列下标eg:1、二维矩阵的输入和输出#include“stdio.h“ main() int a44; int i,j; for(i=0; i4; i+) for(j=0; j4; j+) scanf(“%d“, for(i=0; i4; i+) for(j=0; j4; j+) 20printf(“%6d“,aij); printf(“n
14、“); getch(); 2、矩阵转置并输出三、多维数组多维数组的定义、数组元素的引用:与二维数组类似,只是需要相应维数的下标。四、数组的储存表示1、同一个数组中的所有元素占有一组连续的储存空间;2、数组的存储分配按行进行;3、数组名字表示该数组的首元素地址。4、对于一维数组而言,各元素按下标依次存放。c 语言程序设计听课笔记 :21对话语言C 语言汇编语言机器语言硬件整型数据整型常量,整型变量 八进制的 10 0100X 开头的数表示 16 进制的数123L 长整型 123 无符号 是错误的c 语言程序设计听课笔记 :22一、字符串变量的表示1、在 C 中,用一维字符数组来表示字符串变量2、
15、为了描述字符串的有效长度,采用0束标志,扫描整个数组,直到碰见字符03、字符串变量中存放的字符个数= 数组长度减一4、可以用字符串变量对字符型数组进行初始化static char c=“I am a boy“;5、能用赋值方式给字符串变量赋值。二、字符串处理函数1、puts(字符串)将给定字符串输出到标准输出设备上。在输出时将字符串结束标志0转换成n.2、gets(字符串)从标准输入设备上读入一个字符串到字符数组中,并且返回一个函数值,该函数值是字符数组的起始地址。3、strlen(字符串)用以测试字符串的长度。函数值是字符串中的字符的个数,不包括0在内。214、strcpy(字符串 1,字符
16、串 2)把字符串 2 拷贝到字符串 1 中去。5、strcat(字符串 1,字符串)连接两个字符,把字符串 2 接到字符串 1 的后面,结果放在字符数组 1 当中。函数调用后得到一个函数值字符数组 1 的地址。对于 strcat(s1,s2),只要串是 s1 的长度允许且 s1 和 s2 两个串不重叠,可以用库函数 strcpy 这样实现:strcpy(s1+strlen(s1),s2)c 语言程序设计听课笔记 :23不同的字符,函数有返回值的啊,字符串,这是需要比较大啊,大于为正,小于为负。长度不相同的,值小于零不许关心字符串。大写转换成消协/他就会得到一个大写的字符。c 语言程序设计听课笔
17、记 :24说明:1、px+等于 px=px+1*px 的类型长度2、指针变量之间可以互相赋值。指针变量在引用的之前要先赋值,否则其指针不定。对未赋值指针变量所指地址中赋值更会产生灾难性的后果。c 语言程序设计听课笔记 :25及任何数组中下标表达式都可以写成指针和位移量构成的表达式形式,反之亦然。c 语言程序设计听课笔记 :26上浮与下沉,二维数组,指针与数组的关系,降维使用,指针的区别要能看出来啊,下一个元素指向谁啦? 地址怎么看啦。有规律的。二级指针变为一级指针,访问地址。指针与多维数组c 语言程序设计听课笔记 :27指针与数组指针数组就是一个数组的元素都是指针类型的数据。指向以为数组的指针变量与指向整型变量的区别。字符串数组是每一个指针指向一个数组,祖父传本身就是字符数组。迁移c 语言程序设计听课笔记 :28对几个字符串进行排序,跟具二级指针,编写一个函数,打印杨辉三角形。22int a【5】【5】;用 i 表示行j 表示列a【i】【 0】=1a【i】【 j】=1a【i】【 j】=a【i-1】【j】+a【i-1】【j-1】