c语言程序设计.docx
- 文档编号:15813111
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:32
- 大小:31.93KB
c语言程序设计.docx
《c语言程序设计.docx》由会员分享,可在线阅读,更多相关《c语言程序设计.docx(32页珍藏版)》请在冰点文库上搜索。
c语言程序设计
《c语言程序设计》听课笔记:
01
演变历史:
CPL-BCPL-B-C
面向机器的高级语言
C语言的特点:
1语言简洁,紧凑,使用灵活2运算符丰富3具有数据类型构造能力4具有很强的流程控制结构5语言生成的代码质量高6可移植性较好(显著的特点)7语言限制不够严格
程序设计语言的构成:
数据,运算,控制结构,存储管理,运算环境
数据:
提供用于加工的各种类型的初等数据项和数据结构
运算:
为数据提供一组有效的数据运算
控制结构:
为一系列被执行的基本运算提供控制运算顺序的机构
存储管理:
动态,静态
运算环境:
内部,外部
程序设计语言的实现:
(1)翻译或编译:
1编译程序:
高级语言源程序-机器语言目标程序2汇编程序:
汇编语言源程序-机器目标语言程序3装配程序:
机器语言源程序-机器语言目标程序
(2)软件模拟:
高级语言源程序-运行结果
字符集:
1数字:
0-92字母:
A-Z,a-z3特殊字符:
-,#,、,(,)等4运算符:
+,-,/,%等
保留字:
1类型说明和定义保留字:
chai,int,short等2存储类说明保留字:
auto,resgister,static,extern3特定字:
用在预处理程序中,define,undef,include.
标示符:
保留字,特定字,一般标示符,
一般标示符:
用来标识变量名,常量名,函数名,数组名,类型名,文件名等的符号名字:
(1)标识符其结构定义:
以字母(包括下划线)开头的字母数字串
注意:
书写标识符时有大小写区别,标示符的长度无统一规定
C语言以左大括号开头以右大括号结束,分号前的语句表示C语言的输出字符
《c语言程序设计》听课笔记:
02
一、整形数据的类型:
a)整型常量:
整型常量即整常数,有十进制、八进制和十六进制整数。
十进制数:
一串连续的数字表示,最高位为非零。
八进制数:
以数字零开头。
十六进制数:
以数字零和字母x开头,a-f不区分大小写。
b)整型变量:
分为有符号和无符号两种,所有整型变量在使用前必须加以说明和定义
有符号的整型变量分为三种:
标准整型(int)、短整型(short)和长整型(long),其值可正可负。
无符号的亦可分为三种:
标准整型(unsignedint)、短整型(unsignedshort)和长整型(unsignedlong),其值不能为负。
•int、short和long区别主要是表示的整数范围不同,用一个机器字来存放一个int型数据。
且int、short和long型整数的字长满足:
short 其中: int占16位,即两个字节。 short占16位,即两个字节。 long占32位,即四个字节。 16位处理的数的范围: -32768~32767 正整数: 以原码形式存放在内存中,16位是正数范围为0~32767 负整数: 以补码方式存放在内存中 补码的求法: 1.原码除符号位其余位均取反+1;2.用模减去绝对值。 补码还原十进制: 除符号位其余位取反后转化成十进制数,将结果-1,还原出十进制数 二、字符型数据 a)字符型常量: 1.由一对单引号引起来的单个字符(可打印) 2.转义序列: 反斜线后跟特定的字符(不可打印),作为一个字符对待,如其后的字符不能和\构成转义序列,则\被忽略。 \n 换行符 \r 回车符,回到此行的开头,并不换行 \t Tab键,一次性输入多个空格 \b 退格符,光标向回走 \f 换页符,到下一页的开始 \\ 输出符号\ \' 输出单引号' \0 空字符,不是空格,ASCII码中=0 \ddd 1~3位8进制数字 \0xff 1~2位16进制数字 PS: ASCII码是2进制7位有效,占8位,所以对于8进制来说需要3位,对于16进制来说需要2位 《c语言程序设计》听课笔记: 03 b)字符型变量: 由保留字char来说明(格式为charc1,c2;)其中c1、c2中只能各存放一个字符 标准输入输出函数stdio.h(putchar: 将键盘输入的字符显示在显示器上、getchar: 用户从键盘输入字符给变量) •字符数据在计算机内部是以一个字节(8位)的二进制形式表示的,所以对要处理的字符通常先进行编码(整数型,但是对于有无符号,没有特别规定),对一个char型变量赋值一个 整型值时,可能是ASCII码 printf中的参数可以有多个,但第一个参数必须是字符串,我们称其为格式串(可显示字符直接显示,\n之类的控制字符则产生相应的动作)。 常用的转换符有: %d输出的是十进制整型%c输出的是字符型%f输出的是浮点型%s输出的是字符串型(C语言中用数组实现) \0是字符串结束的标志。 char型可参与任何整数运算,但是必须转化成ASCII码后进行 数字字符<--->整数值: 基准字符‘0’,任意数字字符‘X’-‘0’=X(数值) 字符量可以参加关系运算(<、>之类),但是必须转化成ASCII码后进行 字符量可以参加逻辑运算(&之类),但是必须转化成ASCII码后进行 c)字符串常量(字符串无变量): 用一对双引号括起来的零个或多个字符的序列。 字符串常量“x”内存中占2个字节(“x”=x/0) 字符串两边的双引号是字符串的分界符,而不是字符串的一部分,双引号的ASCII码值是042,要输出双引号\042 eg: The"a"isanindefart.The\042a\042isanindefart. 字符串中所含的字符个数称字符串的长度(不包含结尾的\0)。 例如: “XYZ”的长度为3,“”的长度为0,称为空串。 但是字符串所占的空间为长度+1(包含结尾的\0) 转义系列也可以出现在字符串中,但只是作为一个字符串来看待。 三、浮点型数据 分为浮点型常量和浮点型变量。 a)浮点型常量: 分为非指数型和指数型两种。 非指数型是不带指数部分的实数型常数 指数型常数是指带有指数部分的实数: e(E)之前必须有数字,之后的指数必须为整数,且不能插入空格。 b)浮点型变量: 通过保留字float来说明(格式为floatx,y,z;) 《c语言程序设计》听课笔记: 04 •十进制含有小数的转化为二进制的方法: 整数部分和小数部分分别转化为二进制,中间用点连接,这种小数表示方法将小数点放置最后(没有小数点),或者最前面 (可忽略小数点),则可剔除小数点的问题 所以任意一个二进制实数N总可以表达成N=S*2P(P次方)(P、S为有符号二进制整数,P称阶码,S称尾数并约定其中没有小数点或可忽略小数点),可假设存储时P占8位 (若指数为负,存储时取其补码,用(8位模)减绝对值即可),S占24位(具体S、P占的位数并无硬性规定) 浮点型数据在内存中一般占4个字节(32位: 24位尾数+8位阶码),7位精度,浮点型输出时,小数点留6位整型数据占两个字节(16位) 四、双精度数据 双精度变量: 双精度一般占8个字节(64位: 48位尾数+16位阶码),17位精度(C中浮点常量通常以双精度存放和表示) 双精度变量通过保留字double来说明(格式为doublea,b;) 复习: 整型数据: inta,b;(内存中占2个字节16位) 字符型数据: chara,b;(内存中占1个字节8位)可参与整数运算 浮点型数据: floata,b;(内存中占4个字节32位,以阶码和尾数表示) 双精度数据: doublea,b;(内存中占8个字节64位) 五、变量的初始化 变形说明完之后到使用之前,要赋初值 六、变量的存储类 变量的两个属性: 存在性: 变量都具有一个数据类型并以一定方式存在在内存中 可见性: 在其作用域(作用域指该变量有定义的程序部分)中是可见的(活动的),出了作用域则不再可见 变量的以上两个属性以四个变量存储类决定: 自动的(auto): 每一次从程序中进入某个函数时,函数中的这个变量的值总会取初始化的值 寄存器(register): 用到计算机的寄存器,硬件变量 静态的(static): 下次进入这个函数时,函数中的这个变量绕过初始化的部分,取上次这个函数结束时的值 外部的(extern): 全局变量 《c语言程序设计》听课笔记: 05 a)自动变量: 由保留字auto说明(auto可省略) 是局部变量,每进入一次函数体,就赋一次指定的初值(在进行编译前必须赋值),作用域局限于所在函数或块 b)寄存器变量: 在变量说明前面加保留字register来完成 是局部变量,用法和作用域同自动变量,变量保留在CPU的寄存器中,占用固定的存储空间,只是对编译程序的一种建议(希望为寄存器变量),不是强制的,一般用于系统开发 寄存器变量无地址,不能进行求地址运算 寄存器变量的说明应尽量靠近使用的地方,用完尽快释放(有限的硬件资源) c)静态变量: 在变量说明前面加保留字static来完成 静态局部变量生存期延长到程序运行结束(不止是函数结束),不一定赋初值,编译时对无值的赋予0,用法和作用域同自动变量 d)外部变量: 函数外部任意位置定义的全局变量(作用域: 从定义位置起到整个源文件结束;生存期: 整个程序的运行期间) 外部变量与局部变量同名时,外部变量被摒弃 每个引用外部变量的函数,都应对外部变量用extern加以说明 第三章运算 一、运算符 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 条件运算符 ? : 逗号运算符 , 指针运算符 *& 求字节数符 sizeof(数据类型) 强制类型 () 成员运算符 -> 其他 二、算术运算符 a)基本算术运算符: C中算术运算符的先后顺序(单步运算优先级高于双步运算): -(负号) * / + -(减号) 运算符优先级从高到低,从左至右 b)模运算符%: 二元运算符,优先级同和结合方向同*/ 两侧操作数为整型数据,n%m结果为n/m的余数,余数符号与被除数一致 c)赋值运算符: 二元运算符,做操作数必须为变量,右操作数可以为常量、变量、表达式 赋值表达式可以出现在其他表达式中,右侧也可为赋值表达式 “=”的结合方式从右至左 算术运算符优先级高于赋值运算符 复合的赋值运算符: += -= *= /= d)++ --运算符(使对象加1或者减1) 单目运算,运算变量可以是整型或者实型变量,不能是常量或表达式 优先级和结合方向: ++--(一元复)从右到左 */%从左至右 +-(二元减)从左至右 构成形式: 前缀(++a,--a)后缀(a++,a--),前缀值是运算之后的,后缀值是运算之前的,但a的值相同 eg: a=3 ++a,表达式的值为4,a=4 a++,表达式的值为3,a=4 《c语言程序设计》听课笔记: 06 eg: i=3 j=i++*++i+i--*--i j=3*4+3*2=18 先同时运行++i和--i e)混合运算中的类型转换 当运算符两边的操作数类型不同时,其中一个要进行类型转换和另一个保持一致后,才能进行运算 转换过程中遵循就高不就低的原则: 即级别低的操作数先转换成和级别高的操作数类型一致,然后再运算,结果的数据类型和级别高的一致(字节多级别高,这样定义不会损失精度) 具体关系: 高 double<------float | long | unsigned 低 int<------char,short 强制类型转换表达式(高级别向低级别转换时使用,低级别向高级别转换由系统自动完成): (类型)(表达式),此表达式只转换离自己最近的数,表达式可不带括号 ps: 使用强制类型转换表达式时,若浮点型向整型转化,小数点后的数直接舍去,不存在四舍五入 类型转换也发生在赋值运算符的两边,且不管赋值运算符右边的表达式的结果类型如何,一律转换为左边变量的类型,然后再赋给左边的变量 类型的提升: 将低级类型转换成高级的(增加二进制位),精度不损失 类型的下降: 将高级类型转换成低级的(截断和舍入二进制位),一般会造成精度的损失 f)逗号表达式 结合方式: 由左至右 优先级最低,从第一个表达式开始计算,一直到最后一个表达式,且逗号表达式的值为最后一个表达式的值,但不能前面的表达式不求而直接求最后一个 eg: (i=3,i++,--i,i+5) i=10 《c语言程序设计》听课笔记: 07 %取余 第四章C语句及控制结构 1、C语句分为四类 1)、空语句: ; 作用: 循环体和转向点 2)、表达式语句 功能: 表达式求值 函数调用语句也属于表达式语句的一个特例,如: ch=getchar();putchar(ch);printf("%d\n",5); 3)块(复合语句) { 语句组 } 4)控制语句: 条件、循环 一、关系运算符 关系表达式 值是逻辑值,1真,0假 二、逻辑运算符 &&优先级高于|| 三、说明 1、将一个量作为逻辑量来判断真假值是,非零真,零假 2、逻辑运算符的操作数,可以是任何类型的数据 3、若&&前的表达式是0,或||前的表达式是1,则不用执行后面的表达式,这种现象称为短路 1。 条件分支语句 1、简单if if()putchar() 语句也可以是块: if(){} if(条件).1.; .2.; 若条件成立,执行1,再执行2;不成立,执行2。 《c语言程序设计》听课笔记: 08 b)块if if(表达式) 语句1 else 语句2 c)if-else-if语句 if(表达式1) 语句1 elseif(表达式2) 语句2 ∶ elseif(表达式n) 语句n else 语句n+1 ps: 嵌套使用if语句时,else只和其前面最接近它的if配对 如果让其和最外层if配对,必须用块来显示地标界 输入函数scanf(“格式串”,&变量名); d)条件运算符? : (三目运算符) 表达式1 ? 表达式2: 表达式3 若表达式1的值非0,则结果为表达式2的值,否则为表达式3的值 常用来构成一个赋值语句 ps: 条件运算符? : 的优先级仅比赋值运算符和逗号运算符高,所以一般应该加括号使用 五、循环 1、while循环 a)while循环 while(表达式)语句 条件满足时执行循环体,不满足时结束循环转去执行下一条语句。 Ctrl+break键可以结束程序中的死循环 ps: while循环是“先判断,后执行”,若一开始表达式就不满足,则语句永远不会被执行 循环条件一定要有不满足的时候,避免死循环 循环体若包含一个语句以上,应组成复合语句{} b)break语句 可中断循环,跳出循环执行下面的语句,常与if语句一起使用 《c语言程序设计》听课笔记: 09 c)continue语句 跳出本次循环体直接进行下一轮循环(个别情况不处理时使用) 2、do-while(直到型循环) do 语句 while(表达式) ps: 先执行,后判断,至少执行一次循环体,break和continue在do-while语句中也起相同的作用 3、for循环 用于定长循环(循环次数确定),也可以用于变长循环,完全可取代while循环。 for(e1;e2;e3)语句 a)e1: 循环变量初始化 b)e2: 循环条件测试(成立执行语句) c)e3: 循环控制变量的增量操作 《c语言程序设计》听课笔记: 10 六、goto语句及语句标号(不提倡使用) goto语句标号; 语句标号是一个标识符(命名规则同变量),只在说明它的函数中是可见的,不能重名。 七、switch语句 swich(整型表达式) { case常量表达式1; 语句组1 ...... casen; 语句组n default: 语句组n+1 } 匹配上后,逐条执行以后语句。 a)switch后边括号内表达式可以为整型或字符型 b)多个case可以执行一个语句 c)加break可实现多分支 d) default可省略 《c语言程序设计》听课笔记: 11 习题课 例1: 打印出1900~2000所有的闰年 四年一闰,百年不闰,四百年再闰 公历闰年的简单计算方法: 设年份year if (year能被4整除and不能被100整除)oryear能被400整除 该年为闰年 否则该年为平年 #include main() { intyear; for(year=1900;year<=2000;year++) if((year%4==0&&year%100! =0)||(year%400==0))printf("%d,",year); getch(); } 若改为打印出平年,则将上述程序划线部分改为以下程序 if(! ((year%4==0&&year%100! =0)||(year%400==0)))printf("%d,",year); 例2: 求最大公因数a=12b=32 1)比大小 a: 小 b: 大 2)设一个数for(i=1,i<=a,i++) 3)(a%i==0)&&(b%i==0),则把i的值赋给一个变量k,将其记忆 #include main() { inta,b,t,i,k; printf("Pleaseinputaandb\n"); scanf("%d%d",&a,&b); if(a>b) { t=a; a=b; b=t; } for(i=1;i<=a;i++) { if((a%i==0)&&(b%i==0))k=i; } printf("%d\n",k); getch(); } 若改求最小公倍 1)比大小a: 小b: 大 2)设一个数for(i=1,i<=a,i++) 3)(b*i)%a==0,则把b*i的值赋给一个变量k,将其记忆 将上述程序的划线部分更换成以下部分即可 for(i=1;i<=a;i++){ if((b*i)%a==0) { k=b*i; break; } } 例3: 三三数之剩二,五五数之剩三,七七数之剩二,x最小? 即: x%3=2 x%5=3 x%7=2 假设x从9开始 #include main() { intx=9; while(! ((x%3==2)&&(x%5==3)&&(x%7==2)))x++; printf("%d\n",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() { inth,c; for(h=1;h<98;h++) { for(c=1;c<98;c++) { if(((0.5*h+3*c+2*(100-c-h))==100)&&((c+h)<100)) { printf("h=%dm=%dc=%d\n",h,100-h-c,c); } } } getch(); } ps: 程序最后的getch();语句是在WIN-TC中需要的,TURBOC不需要 《c语言程序设计》听课笔记: 12 第五章函数 一、函数和C程序结构 1、函数是构成C程序的基本单位。 2、一个程序中含函数的个数没有限制,但必须有main()函数。 3、整个程序从main开始执行,各函数之间的关系是平行的,无主次之分,可返回值,也可不返回。 4、C函数可分为库函数和自编函数。 5、调用C标准库函数时用#include 二、函数的构成及定义 函数构成: 类型 函数名(形参表) 类型指返回值的类型 形参说明 { 内部说明和定义 函数执行部分 } 函数的构成可以概括为: 函数头部+函数体 同一函数的定义在同一程序中只能出现一次,一个函数只能定义一次,但可以说明多次 三、函数的参数和返回值 a)形式参数和实际参数 1、形参: 定义函数时,函数后面圆括号中的参数。 2、实参: 调用函数时,函数后面圆括号中的参数,可以是变量(可以是变量名,但是要有确定的值)、常量、表达式。 3、实参的个数和类型应与形参的个数和类型按定义时的顺序完全一致。 4、实参和形参分别占据不同的存储单位。 5、形实结合采用值传递,即实参的值单向传给形参,实参的值不变。 6、函数名();———函数的调用 b)数的返回值 1、函数的返回值是通过函数中的return语句得到。 2、语法是: return(表达式)或return表达式 3、先求解表达式,然后返回该表达式的值(返回调用处,所以一般在赋值语句的右边); 4、一个函数中可有多个return语句,当执行到该函数的任一条return语句时,都从该函数返回(其他部分不执行)。 5、如果不需要从函数返回值,则函数中可以没有return语句或return语句后不带有任何表达式。 《c语言程序设计》听课笔记: 13 四、函数的调用 1、调用的一般形式: 函数名(实参列表)(函数的定义后面为形参列表) 2、过程调用: 不引用被
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计
![提示](https://static.bingdoc.com/images/bang_tan.gif)
文档标签
- Python语言程序设计3语言程序设计
- C语言程序的设计语言程序设计
- C语言程序设计PAT语言程序设计题目
- C语言程序设计学院语言程序设计
- C语言程序设计语言程序设计教案清华
- C语言程序设计语言程序设计药房管理
- C语言程序设计17语言程序设计在线
- C语言程序设计1253语言程序设计电大
- C语言程序设计语言程序设计考试期末
- C语言程序设计大学语言程序设计试题
- C++语言程序设计C++语言程序设计机械设计
- 语言程序设计
- 语言程序设计医院
- C语言程序设计0008语言程序设计000821
- C语言程序设计计算机程序语言程序设计
- C语言程序的设计课程设计语言程序设计
- C语言程序设计电大语言程序设计形成
- Python语言程序设计
- 二级Python语言程序
- Python设计
- Python程序设计Python程序设计试试
- Python程序设计
- Python语言程序设计
- Python程序的设计Python程序设计
- Python语言程序设计
- Python语言程序设计