《C程序设计-李峰-复旦大学出版社.ppt》由会员分享,可在线阅读,更多相关《C程序设计-李峰-复旦大学出版社.ppt(325页珍藏版)》请在三一文库上搜索。
1、C语言程序设计(复旦版),约法五章,一. 衣帽不整不进课堂 二. 坐姿端正不打瞌睡 三. 关掉一切通讯工具 四. 认真听课做好笔记 五. 完成作业绝不拖欠,第1章 引言 1.1 概述 1.2 C语言的开发周期 1.3 使用Visual C+开发C语言程序的步骤,【内容摘要】 (1)知识点:程序的概念;程序设计语言发展过程;C程序的基本框架;C程序的开发周期;Visual C+开发C程序的步骤。 (2)难点:熟练掌握C程序的开发环境,1.1 概 述 1.1.1 理解程序 程序:用计算机命令实现某种算法的过程 【 例1.1】一个学生上课的行为描述 查课表准备上课工具去教室听课下课 这是一个:顺序的
2、执行过程 【例1.2】图书馆借书 去图书馆上机索引需要图书有则选之、无则另选或干脆不借办理借阅手续离开图书馆 这是一个:条件执行过程,【例1.3】一个简单的C语言程序:求两个给定整数的和,#include main() int a,b,sum; a=2; b=3; sum=a+b; printf(“then sum of %d+%d is %dn” ;a,b,sum); return 0; ,/头文件 /函数开头语句,函数体,变量说明语句,执行语句,退出语句,C语言程序的基本格式规定: 1. 程序由函数组成,函数是具有特定功能的模块。 每个C程序都必须有一个且仅有一个起始函数main()。 2
3、.函数由函数头和函数体组成。 main() /*函数头*/ 变量说明; 语句; 3. 语句以“;”结束 4. 注释:/*/ 或:/ 5.预处理命令:#include包含有关头文件的信息 6.严格区分大小写,1.1.2 程序设计与程序设计语言 程序与程序设计 1. 冯.诺依曼计算机的特点 1)二进制; 2)存储程序和程序控制。 (1)指令(Instruction):能被计算机直接识别并执行的指示计算机进行某种操作的命令。 (2)程序(Program):为使计算机解决某个问题而写出的一系列指令的序列。 (A)程序设计(编程)(Programming):编写程序的过程 (B)程序设计语言(Progr
4、am Language):编写程序是所采用的语言,二.程序设计语言的发展阶段 1.机器语言: 采用计算机指令格式并以二进制编码表达各种操作的语言。 特点:无二异性、代码质量高、执行速度快、占存储空间少 缺点:难写难读难记难改交流;与机器相关不通用; 2. 汇编语言:用符号表达机器指令功能的语言 特点:具有机器语言的特点;易写易读易记易改易交流 缺点:与机器相关不通用;必须翻译 3.高级语言:接近于人类自然语言和数学表达式的编程语言 表达能力更强,易于处理更为复杂的问题 独立于机器,方便通用、易于推广 分类:面向过程、面向对象 4. 第四带语言4GL(the 4th Generation Lan
5、guage)非过程化语言。如数据库查询语言SQL等,特点:一条语句一般可编译成3050条及其指令,编程效率高,适用于管理信息系统编码,程序更容易理解、维护。 1.1.3 C语言的发展历史 1.2 C语言程序的开发过程 1. 分析问题,确定解决方案(算法) 2. 用程序语言描述算法使用编辑器编写源代码。扩展名:.c 3. 使用编译器编译源程序,生成目标码.obj 4.使用连接器连接目标码生成可执行文件.exe 5.调试运行。 周而复始,分析问题,编写源程序,调试运行,连接程序,编译程序,结束,1.3 使用Visual C+语言开发C程序步骤 1. 3.1 VC+6.0的集成开发环境简介,1.3.
6、2 创建一个C程序步骤 1. 启动VC+ 2. 输入和编辑源程序 (1)创建新程序 S1:打开“新建”对话框:“文件”“新建” 或【Ctrl+N】 S2:“文件”“C+ Source File” S3: 设置源文件保存路径:在“位置”的文本框: 使用缺省路径:不用改变文本框内容; 使用指定路径:改变; 选择已有路径:使用【】 S4:设置文件名:使用“文件名”的文本框 注意事项: 文件名后一定要带扩展名:.c;缺省扩展名:.cpp,(2)打开老程序 S1:打开“打开”对话框:“文件”“打开” 或【Ctrl+O】; 或使用工具栏的【打开】 S2:打开文件 双击选定的源程序文件; 或单击源文件进行选
7、定,【打开】 (3)文件存盘 保存在原处:“文件”“保存” 或【Ctrl+S】; 或使用工具栏的【保存】 保存在别处:“文件”“另存为” 3. 编译源程序 方法1:“组建”“编译XXX.c项” 方法2:工具栏:【Compile】或【Ctrl+F7】,4. 连接目标程序 方法1:“组建”“组建XXX.exe” 方法2:工具栏:【Build】或【F7】 5. 执行程序 方法1:“组建”“执行XXX.exe” 方法2:工具栏:【BuildExecution】或【Ctrl+F5】 【例】课本【例1.3】的运行结果:,第2章 数据类型与表达式 2.1从数学上的“数”过渡到计算机中的“数” 2.2 数据类
8、型概述 2.3 常量和变量 2.4 整数类型 2.5 实数类型 2.6 字符类型 2.7 不同类型间的转换 2.8运算符与表达式 2.9 本章小结,【内容摘要】 (1)知识点:C的基本设计类型;数据类型与变量、常量的关系;常量的性质和定义;运算符的功能和特点;类型转换规则。 (2)难点:数据类型、常量定义、运算符和表达式,2.1 从数学上的“数”过渡到计算机中的“数” 一、用计算机编程需要解决好的问题:数据的存储 二、数学中的数与计算机中的数的区别 1.数学中的数:抽象、无类型、精确 2.计算机中的数:具体,有类型、精度有限 (1)类型不同,取值范围不同; (2)类型不同,表示形式不同; (3
9、)合理选取数据类型:节约内存,存下数据,提高速度。 3.计算机中的数的二进制存储 (1)内存按字节编号; (2)C语言中数据的八、十六进制表示 八进制:0+数码:07; 十六进制:0X+数码:09、AF。 (2)二十;二八;二十六进制的相互转化,4. DR进制的相互转换 (1)数的表示 (2)D转R进制 A、转换原则 整小两部分别转, 整部除以基取余, 小部乘以基取整, 整前小后点隔开。 B、转换技巧 以八进制作桥梁; D转B:D转O展B D转H:D转O展B收H,位权,基数,C、注意事项: 八展开二进制:一个八进制位展为3个二进制位; 二收缩为八(十六)进制: 以小数点为界,向前向后3(4)位
10、一节分开; 整数部分最前一节不足3(4)个二进制位不理睬;小数部分最后一节不足3(4)个二进制位时用0补齐 (3)RD A、使用数的表示形式 B、使用转换桥梁,2.2 数据类型概述 C语言的数据类型,数据类型,基本类型,字符型(char),数值型,整型(short、int、long、unsigned),实型,单精度(float),双精度(double),枚举型(enum),构造类型,共用体类型(union),结构体类型(struct),数组类型(),指针类型(*),空类型(void),本章主要介绍基本数据类型,2.3.1 标识符和关键字 一.标识符 1.标识符的概念:用来标识对象名字的有效字符
11、序列 2.C语言标识符的命名规则 (1)由字母或下划线开头,由字母、数字字符或下划线组成 (2)不能与关键字同名 3.几点说明 (1)关键字不能做普通的标识符使用; (2)标识符应言简意赅、名副其实; (3)关键字:组成编程语言本身的一些标识符,也称保留字 C中的保留字有32个,2.3 常量和变量 2.3.1 常量 1.常量的概念:直接书写在程序中,不能被修改的、固定不变的量。 2.常量书写形式分类:字面常量、符号常量 3.常量数据类型:数值常量、字符常量 3.符号常量:用#define语句预先定义的常量 (1)#define语句的格式 #define 常量标识符 常量数据 【例】#defin
12、e PI 3.14159 (2)符号常量的释放语句格式 #undef 常量标识符 【例】 #undef PI,2.3.2 变量 1.变量的概念:用合法的标识符给出的在程序运行中可被修改的量。 2.变量的声明格式 =, =; 另一种写法: 类型说明符 变量1 =初值1,变量2 =初值2; 4.变量可声明时为变量赋初值 例: int i=1; float a,b,c=9.54;,2.3.3 变量的命名规则 一.变量的命名规则 1、变量的命名必须满足标识符命名的规则及注意事项; 2、C语言中,变量区分大小写; 二.变量的类型分类: 整型:short、int 、long、unsignel 实型:flo
13、at、double 字符型:char 布尔型(C无)。 2.3.4 变量的定义 一.C语言中变量必须贯彻“先声明,后使用”的原则 二.声明作用 1.为变量申请存储地址 2.可为变量赋初值 3.声明时未赋初值,对于自动变量其初值为一个随机数,【例】 int a,b,c; int d=3,e=4;f=5; /请改书上的变量名 float g=6.9; char h=A,i; 三.变量强制声明的目的 1. 申请存储空间; 2. 进行运算合法检查。 【例】下面的程序段 float a=4.5,b=8.9; float c; c=a%b; X,2.4 整型类型 2.4.1 整型常量 1.整型常量的概念:
14、不带小数的数值。 2.整数常量的三种书写形式 (1)十进制:不以0开头的由09的数字组成的数据 (2)八进制:以0开头的由07的数字组成的数据 (3)十六进制:以0X开头的由09的数字和AF的字符组成的数据 3.整型常量取值范围有限, 与进制无关 【例】 十进制 八进制 十六进制 0 00 0x0 78 0116 0x4e -123 -0173 -0x7B,2.4.2 整型变量 一.计算机数据存储的三种基本码: 1.原码:正数输的原码是本身,负数的原码是正数的原码符号位取反。 【例】以16位机为例 5原码= 0000000000000101 -5原码=1000000000000101 2. 反
15、码:正数输的反码是本身,负数的反码是正数的反码逐位取反。 5反码= 0000000000000101 -5反码=1111111111111010 3. 补码:正数输的补码是本身,负数的补码是其反码末位加1。 5补码= 0000000000000101 -5补码=1111111111111011,二.C中整型变量的4种类型及取值范围 有符号整型:补码存储:-2n-1 2n-1-1 无符号: 0 2n-1 1. int类型(基本型) 1)VC+:4字节存储 2)取值范围: 最大正数 231-1 :01111111111111111111111111111111 最小负数- 231 :1000000
16、0000000000000000000000000 2. short类型 1)VC+:2字节存储 2)取值范围: -215 215-1 3.long类型 1)VC+:4字节存储 2)取值范围: 最大正数 231-1 最小负数 231 4. unsigned,整型数的的取值范围列表,2.5 实数类型 2.5.1 实型常量 1.实型常量的概念:带小数的数据。 2.C语言中实型常量的两种书写形式 (1)十进制形式 (2)科学计数形式带E指数的形式 十进制小数+E(e)+阶符+指数 例: 0.0, 78.3, -123.475 0.345e-5 , 1.457E10 3.浮点数的机内存储形式:规范化的
17、表示形式 【例】987.654的机内存储形式 0.987654e3,2.5.2 实型变量 1.实型变量的2种形式 1)float型: 7位有效数字; 4字节存储: 符号位1位,阶符阶码8位,尾数23位 2)double型:15位有效数字; 8字节存储: 符号位1位,阶符阶码11位,尾数52位,2.注意事项 1)浮点数无无符号属性unsigned; 2)VC+中,浮点常量一律按double型处理; 【例】float a=3.14; truncation from const double to float,2.6 字符类型 2.6.1 字符型常量 1.字符常量的概念:由一对单引号括起来的单个字符
18、 2.字符常量的分类: 1)一般字符常量:C语言中计算机可打印输出的字符 2)转义字符常量:在C语言中的以“”开头的字符常量 3.标准ASCII字符: 单字节存储,查看附录B 0:空字符(Null); 131:各种控制字符; 32:空格,第一个可打印字符; 4857:09; 6590:AZ; 97122:az; 3347、5864、123126:其它字符 127:DEL(Delete键),常用转义字符列表,【例】 “105 :(105)oASCII Char E “012 :(012)oControl Char LF “000 :(0)oBlank Char Null “0xd :(d)hCo
19、ntrol Char r 4.注意事项 1)字符常量区分大小写; 2)高位置1为扩展ASCII字符,256个; 3)一个汉字两个字节,双扩展; 4)0、0、0含义不同 0:字符0,ASCII码:48,机内二进制:0000110; 0:数值0,补码存储:机内二进制:32个0 0:空字符,ASCII码0,机内二进制:8个0,【例】体会下面两个输出语句: printf(“%c”,0+0); printf(“%d”,0+0);,为什么第一句的输出是一个单引号(ASCII码96)? 【例2.1】转义符的输出 #include void main() char ch; ch=141; printf(“%c
20、n%cn“,ch,ch-32); 运行,2.6.2 字符型变量 1. 字符型变量:用char类型标识符声明的变量 2.取值范围:一个字节,0255 2.6.3 字符型数据在内存中的存储形式及其使用 ASCII码机内存储;一定条件下,字符型与整型数据通用 【例2.2】字符数据的定义、赋值及存取 #include void main() char a,b; int i,j; a=A; i=66; b=i; j=a; printf(“i=%d,j=%d,i=%c,j=%cn“,i,j,i,j); printf(“a=%d,b=%d,a=%c,b=%cn“,a,b,a,b); ,2.7 不同数据类型间
21、的转换 混合运算的原则:先类型转换,再同类数据运算 2.7.1 C自动类型转换 1.转换法则:由低级向高级转换 2.数据级别次序:charintlongfloatdouble 3. 具体转换 1)整型转实型:其值不变,按实型格式存储 【例 】 55.0浮点存储 2)实型转整型:先取整,再按整型存储 【例】5.85补码存储 3)double转float:只取前7位有效数字,再按4字节存储 4)float转double:有效数字扩展为15位,再按8字节存储 5)将整型数赋给字符型数:高位丢失,仅拷贝低8位二进制 6)将字符型数据赋给整型数:将最低8位的ASCII值拷贝,【例】 char ch=A;
22、 int i=28; float x=2.36; double y=6.258e6; 问表达式: i+ch+x*y的结果 步骤1:转换:double(28+asc(A)+(double(2.36)*6.258e6) 步骤2:运算:93.0+2.36*6.258e6 结果:double型,2.7.2 C强制类型转换 (1)适应范围:高级转低级 (2)转换格式:(类型)变量 【例】 若有:float x=2.36; double y=6.642; int I; i=(int)(x+y); 【例2.3】数据转换的例子(e2_3.c) #include void main() float x=3.5;
23、 int i; i=(int)x; printf(“x=%fn“,x); printf(“i=%dn“,i); 运行,2.8 运算符与表达式 2.7.1 算术运算符与算术表达式 1.适应范围:算术运算 2.操作数:数值型或字符型 3.算术运算符,4.说明: 1)+、-、*:同于数学运算; 2)/: (1)整型数相除:整型算子 (2 )实型数相除:实型算子 3)%取模:求余数,两操作数必须同为整型数 4)自增减运算符:仅用于整型变量 +a(-a):a先自增(减)1再引用; a+(a-):先引用a,在自增(减)1 【例】下面程序段中各变量的值 a=5; b=+a; c=a-;,5.算术表达式:利用
24、算数运算符将常量、变量、函数连在一起的式子,结果一定是数值型 6.算术运算符的优先级 数符,+、-,*、/、%,+、- 7.算术运算符的结合性:左结合性操作数先与左边的运算符优先结合 【例】a*b-1.5/c (a*b)-(1.5/c) 【例】:a*b/c-1.5+a+fabs(-5) S1: a*b/c-1.5+97.0+5.0 S2:作(a*b)/cv1 S3:v1-1.5+97.0+5.0,2.8.2 赋值运算符与赋值表达式 1.普通赋值运算符:= 2.赋值表达式格式:变量=表达式 3.复合赋值运算符,【例】 a=b=c=9 a=18+(c=27) (a*b)=c=9 X,a+=a-=a
25、*a 设a初值为5 S1:a=a-a*a=-20 S2: a=a+(-20)=-20-20=-40,2.8.3 关系运算符与关系表达式 1.适用范围:两个操作数比较大小 2.结果:1或0 1为true;0为false 3.关系运算符,4.关系运算符的优先级 (1)关系运算符:、=、=:同级,高于 =、!= (2)关系运算符低于算术运算符、高于赋值运算符和逗号运算符,【例2.4】关系表达式的运用(e2_4.c) #include void main() char ch=w; int a=2,b=3,c=1,d,x=10; printf(“%d“,ab=c); printf(“%d“,d=ab);
26、 printf(“%d“,cha+1); printf(“%d“,d=a+bc); printf(“%d“, b-1=a!=c); printf(“%dn“,3=x=5); 运行:001111 分析表达式:3=x=5的弊病 3=x=5 =(3=x)=5 因不管x为何值,3=x始终非0即1,而0或0肯定小于5,所以此表达式达不到判断目的,2.8.4 逻辑运算符与逻辑表达式 1.适用范围:对关系表达式进行运算 2.结果:布尔逻辑值1或0 1为true;0为false 3.逻辑运算符(由低到高),4.逻辑运算真值表,5.逻辑运算符的优先级: (1)!&| (2)!:高于算术运算符;&、|低于关系运算
27、符,【例】 (1)a|b /为1 运行:0101,2.8.5 条件运算符与条件表达式 1.适用范围:两路分支的条件 2.格式:表达式1?表达式2:表达式3 3.返回值:表达式1为真时返回表达式2的值; 假时返回表达式3的值。 【例】max=(ab)?a:b 4.条件运算符的优先级:仅高于赋值运算符 【例】 1)(ab)? a:a+1 ab? a : (b+1) 2)ab?a:cd?d:c ab?a:(cd?d:c),2.8.6 逗号运算符与逗号表达式 1.适用范围:多个表达式相连 2.格式:表达式1,表达式2,表达式3,表达式n 3.作用:依次求解每个表达式的值,返回表达式n的值。 【例】x=
28、(y=6,y*3) 返回:18 4.一个逗号表达式可与另一个逗号表达式组成新的逗号表达式 【例】(a=3*5,a*4),a+5 括号的值:60; 表达式返回值20。 4.优先级:最低 5.结合方向:从左向右,2.9 运算符与表达式的综合练习 2.9.1 正确的C语言表达式书写 【例2.6】判断某年(int year)是否为闰年,写出其正确表达式 条件:能被4除但不能被100整除或能被400整除的年份属于闰年 year%4=0 ,2.9 运算符与表达式的综合练习 2.9.1 正确的C语言表达式书写 【例2.6】判断某年(int year)是否为闰年,写出其正确表达式 条件:能被4除但不能被100
29、整除或能被400整除的年份属于闰年 year%4=0 ,【例2.7】判断输入的字符(char ch)是否为英文字母的表达式 ch=65 ,【例2.8】求3个数中的最大数 /求3个数中的最大数e2_8.c #include void main() int a=2,b=200,c=-8; int max; max=(ab)?a:b; max=(maxc)?max:c; printf(“max=%dn“,max); ,【例2.9】将下列的条件转换为C语言的表达式 1) 2) 3),2.9.2 复杂表达式的分析 1.C程序书写的原则 1)尽量少用过于长的表达式; 2)多用(); 3)尽量一句写一行;
30、2.C语言的计算次序 1)()优先; 2)无()处,按运算符优先级次序确定; 3)运算符同级时,按规定的结合方向进行。 【例2.10】分析下面独立的4个表达式的值及变量的值 (初值:i=1,j=4,k=5) i=j=k-2 分析:运算符的优先级:-,-,= 分解:i=j=5-2;k=k-1; / j:3 ,i:3,k:4,(2) i=+j,j=+k 分析:运算符的优先级:+,= 分解:j=j+1;i=j , k=k+1;j=k /i:5 j:6 k:6 表达式:j=6 (3) !i1 | (k=100) 分析:优先级: ! , , & , |, = 分解:!i1 | (k=100 ) 表达式
31、结果 !i1 41 1 !i1 1&1 1 结果:肯定为真1,因此系统无需再作:(k=100),故k值仍为5,4) !i1 & (k=100) 分析:优先级: ! , , & , |, =, 分解:!i1 | j1 &(k=100 ) 表达式 结果 !11 01 &(k=100 ) 因此:j、k仍保持原值不变 写成程序验证:e2_10.c,/复杂表达式结果分析 e2_10.c #include void main() int i=1,j=4,k=5,l; printf(“%c %c %c %cn“,l,i,j,k); /wt1: i=j=k-2; printf(“ %d %d %dn“,i,j
32、,k); /wt2: i=1,j=4,k=5; i=+j,j=+k; printf(“ %d %d %dn“,i,j,k); /wt3: i=1,j=4,k=5; l=!i1|(k=100); printf(“%d %d %d %dn“,l,i,j,k); /wt4: i=1,j=4,k=5; l=!i1 ,1.数据一定有类型,数据类型决定了数据的取值范围、存储形式、允许的操作。 2.标识符是是用来标识对象的有效字符序列。变量名必须符合标识符命名规则,且不得与关键字同名。 3.程序中的数据分为常量和变量两类。常量分为字面常量和符号常量两种形式。字符常量是一个字符串,用来代替一个预先定义的常量。
33、 4. 在TC2.0中和VC+6.0中,除int型数据长度分别是16、32位外,其余类型均相同 5.注意运算符的优先级和结合规则,第3章 C语言程序的控制结构 3.1 算法 3.2 C语句的分类 3.3 输入输出语句 3.4 顺序程序控制结构 3.5 选择程序控制结构 3.6 循环语句控制结构 3.7 控制转移语句 3.8 程序设计风格,【内容摘要】 (1)知识点: 算法描述方法; 数据输入输出函数的调用格式; if和switch语言; 3种循环结构、breack、continue、goto 语言。 常用算方法:递推法、穷举法等。 程序设计风格、程序设计的错误、调试。 (2)难点: 输入输出数
34、据的格式控制; 累加和累乘问题的算法设计即寻找其构成规律; 3种循环的区别于联系; 基本结构的嵌套; breack、continue 语言的区别,3.1 算法 3.1.1 算法的概念 1. 计算机科学家N.沃思(Niklaus Wirth)对程序下的定义: 数据结构+算法=程序 数据结构:对数据的描述和组织形式; 算法:对造作或行为的描述,即操作步骤。 2.算法: 1)广义的算法概念:做某件事的方法和步骤; 2)数学中的算法概念:主要研究计算机能实现的算法,即按照某种机械程序步骤一定可以得到结构的解决问题的程序。 3)计算机解题的算法分类:数值运算、非数值运算 3. 算法特性的衡量标准: (1
35、)有穷性。步骤有限、每步时间有限 (2)确定性。每步有明确定义,不存在多义性,(3)有效性。每步操作均可有效执行 (4)没有输入或有多个输入 (5)至少一个输出,3.1.2 算法的表示方法 1. 自然语言 2.使用传统流程图 3. 使用N-S结构化流程图 【例】分别使用传统流程图和N-S图描述1+2+3+6 4.使用伪代码(pseudocode):用介于自然语言和计算机语言见得符号和文字描述算法 【例】 begin 1=i, 0=s while i6, s+i=s, i+1=I print s end,3.2 C 语句的分类 1. 控制语句 1)作用:实现对程序流程的选择、循环、转向、返回等操
36、作 2)控制语句的类型 (1)选择语句:ifelse、switch(含:case、default); (2)循环语句:for、while、dowhile; (3)转向语句:continue、break、goto; (4)返回语句:return。 2.函数调用语句的格式: 函数名(实参表); 3.表达式语句的格式: 表达式;,4 .复合语句(语句块) (1)组成:由一对把两个或多个表达式语句括起来组成的语句。 (2)功能:在语法上作为一个整体对待,相当于一个语句。 (3)格式: 语句1;语句2;语句n; 【例】z=x+y;z+;u=z/100;printf(“%fn”,u); (4)使用场合:循
37、环体、if、switch分支中的语句块 (5)语句块中可进行块内变量的类型声明 5.空语句:仅含“;”的语句 (1)功能 对于未完成的程序暂放上“;”,待以后细化补全 实现空循环 作为跳转目标点,【例】对于未完成的程序暂放上“;”,待以后细化补全 int max(int a,int b) ; 【例】只要从键盘输入的字符不是回车键就从新在输入(使用空循环) while(getch()!=n); 【例】求从0开始的自然数的和,和不得大于100.(使用作为跳转目标点) int i=0;sum=0; ex: ; sum+=i+; if(sum100) goto ex; ,3.3 C 输入输出语句 1.
38、 输入输出通过调用标准库函数本来实现 1)标准库函数在附录D中给出 2)标准库函数通过#include命令将有关的头文件包含到用户原程序中才能使用 【例】对于调用标准输入输出函数,文件开头要有预编译命令: #include 2.函数调用语句格式: 函数名(实参表); 3.常用的输入输出函数: 1)字符输入/输出函数:getchar、putchar; 2)格式化输入/输出函数:scanf、printf; 3)字符串输入/输出函数:gets、puts,3.3.1 字符的输入和输出 1.getchar函数 1)函数格式:getchar() 2)功能:从键盘上输入一个字符,返回该字符的ASC码值 3)
39、字符输入语句:变量=getchar(); 将getchar()的返回值赋给字符变量或整型变量,并自动将击键结果回显在屏幕上 2.putchar()函数 1)调用格式:putchar(字符变量); 2)功能:将字符变量的内容写到屏幕上 3)字符变量:可打印字符或转义符 【例】 putchar(x42); /输出字母B putchar(0x42); /直接用ASCII码值输出字母B,【例3.1】演示getchar、putchar 函数的应用(e3_1.c) #include void main() char c; c=getchar(); putchar(c); printf(“n“); ,3.3
40、.2 格式化输入和输出 1. 格式化输入 【例3.2】从屏幕上输出一个整数(L3_2.c) #include void main() int a=10;b=20; printf(“输出变量a和b 的值:”); printf(“a=%d ,b=%d n”,a,b); 1)printf()函数 (1)格式:printf(格式控制字符串,输出列表); (2)格式控制字符串所包含的数据 A、普通字符串:原样输出; B、格式转换说明符:以%开头,以一个格式字符结束的特殊字符串。 是输出表达式安所规定的格式输出。 【例】: printf(“a=%d ,b=%d n”,a,b);,printf()的格式转换
41、说明符,(3)说明 A、输出列表可输出的数据:常量、变量、表达式,数据间以“,”隔开; B、格式说明符与输出项格式最好相同。 说明符大于输出项数:多余的项数会输出不定值; 说明符小于输出项数:多余的项不输出。 C、输出数据的数据类型与格式转换符必须匹配,否则引起错误。例:printf(“%d,%fn”,3.89,6);,【例3.3】判断下面程序运行的结果 #include void main() int a=666,b=888; printf(“%dn”,a,b); 运行结果: A)错误信息 B)666 C)888 D)666,888,(4)格式转换符的完整形式 % - 0 # m.n l或h
42、 格式字符 l:修饰d、u、o、x,输出long int 型; 修饰f、e、g,输出 double型. h:修饰d、u、o、x,输出short 型; m:最小输出域宽度。数据m,右对齐、前加空格;否则按实际宽度输出 .n:显示精度(小数位数) 对于实数:四舍五入; 对于字符串:从字符串左侧开始截取n个字符的子串 -:左对齐; +:有符号数前加上”+“号 0:对于数值型数据,前面空格以0填充 #:对于八、十六进制数,前面显示先导符:0、0x,【例3.4】printf()格式修饰符的使用实例(L3_4) #include void main() int a=123; float y=456.78;
43、 char ch=A; char s=“programing“; printf(“%7d,%-4d,%04dn“,a,a,a); printf(“%f,%8f,%8.1f,%.2f,%.2en“,y,y,y,y,y); printf(“%3cn“,ch); printf(“%sn%12sn%8.5sn%2.5sn%.3sn“,s,s,s,s,s); 运行,注意:对于float型数据输出时,系统先自动将其转换为double型,再输出,因此用%f即可输出float型、也可输出double型,不必要使用lf型,但lf并不是错误。,2)scanf()函数 (1)格式:scanf(格式控制字符串,地址列
44、表); (2)功能:从标准输入设备数日若干指定类型的数据 【例】 scanf(“%d,%f”, (3)格式控制字符串的组成:格式转换符、分隔符 (4)格式转换符的完整形式、格式转换符基本同于printf中的 (5)修饰符: l、h、m:同于printf *:忽略输入修饰符。拟制符。读入的数据不赋给对应的变量。,(6)分隔符 A、分隔符一般使用:空格、Tab符 、 回车键 B、在变量间以其它字符做分隔符时,应输入该字符 【例3.5】格式输入输出的使用 #include void main() int a,b,k; float s,f; char c1,c2,m10; scanf(“%d,%d,%
45、f,%s“, 运行,(7)注意的事项 A、最好输入数据的个数与变量个数相同。如不同,按以下原则处理 输入数据个数变量数:多余数据放入缓冲区供下次读操作使用 B、输入数据的结束情况 遇到空格、回车键(Tab键) 按指定的宽度输完 遇到非法输入,3.4 顺序程序控制结构 1.顺序结构的概念:最简单的结构,特点是完全按照语句出现的先后次序依次执行 【例3.6】将任意的小写字母转换为大写字母后输出 #include void main() char c; c=getchar(); c=c-32; putchar(c); printf(“n“); ,【例3.7】将由键盘上输入的两个数交换后输出 #inc
46、lude void main() int x,y,temp; printf(“请输入两个数x,y:“); scanf(“%d,%d“, ,【例3.8】将由键盘上输入一个三位数,然后将该数逆序输出 #include void main() int x,y,b0,b1,b2; printf(“请从键盘上输入一个整型数:“); scanf(“%d“, ,3.5 选择程序控制结构 概念:依照一定的条件,选择执行的路径。 3.5.1 if语句 1.单分支结构 1)格式:if (表达式) 语句; 表达式:合法的关系或逻辑表达式; 语句:单语句或复合语句 2)流程图:传统、N-S 【例3.9】写出下面程序执
47、行的结果(L3_9.c) #include void main() int a=4;b=3;c=5,t=0; if(ab)t=a; a=b; b=t; if(ac)t=a; a=c; c=t; printf(“%d, %d, %dn”,a,b,c); ,【例3.10】计算并输出一个整数的绝对值 #include void main() int x,y; printf(“请输入一个整数:”); scanf(“%d”, 2.双分支结构 1)格式: if (表达式) 语句1; else 语句2; 2)流程图,【例】用双路分支计算并输出一个整数的绝对值 #include void main() int x,y; printf(“请输入一个整数:”); scanf(“%d”, ,【例3.11】从键盘上输入一个英文字符,如大写输入则小写输出,反之亦然(L3_11.c)。 #include void main() char ch; printf(“请输入一个英文字符:”); ch=getchar(); if(ch=a ,3.多分支结构 1)格式: if (表达式1) 语句1; else if
链接地址:https://www.31doc.com/p-2102342.html