二级C语言讲义_第1页
二级C语言讲义_第2页
二级C语言讲义_第3页
二级C语言讲义_第4页
二级C语言讲义_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

二级C语言讲义 第1章 C程序设计基本概念1.1 程序和程序设计考点01:C语言概述C语言的原型是ALGOL 60语言,由B语言演变而来,1978年正式发表。C语言是一种面向过程的语言。早期的C语言主要是用于UNIX系统,现在在各类大、中、小和微型计算机上得到了广泛的使用。考点02:C语言的特点1C语言的主要特点u 简洁紧凑、灵活方便u 共有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。u 运算符丰富u 运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。u 数据结构丰富u 整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等,能用来实现各种复杂的数据类型的运算。引入了指针概念,使程序效率更高。u C语言是结构式语言u 用函数作为程序模块,每个函数完成独立的功能来实现程序的模块化。u 语法限制不太严格、程序设计自由度大。u 一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误,而C语言允许程序编写者有较大的自由度。 u C语言允许直接访问物理地址,可以直接对硬件进行操作,属于中级语言u 能够像汇编语言一样对位、字节和地址进行操作, 而这三者是C语言最基本的工作单元,因此既具有高级语言的功能,又具有低级语言的许多功能,可以用来编写系统软件。u C语言程序生成代码质量高,程序执行效率高。u C语言适用范围大,可移植性好。2版本:Microsoft C、Turbo C、C#、C+、Visual C+等。C是C+的基础,它们是兼容的。考点03:程序设计的内容1基本步骤确定数据结构、确定算法、编码(编程)、在计算机上运行程序、整理并写出文档资料。2C语言的基本结构#include /*文件包含命令行*/main() /*主函数*/ int x,y,sum; /*定义变量*/ x=46;y=100; /*变量初始化*/ sum=x+y; /*求两数之和*/ printf(sum is %d !n,sum); /*输出两数之和*/1) 程序一般用小写字母书写,严格区分大小写。书写格式自由,一行可以写几个语句,一个语句可以写在几行上。*2) 一个C语言源程序可以由一个或多个源文件组成,一个源程序不论由多少文件组成,都有且只能有一个main( ),称主函数。注意:C程序是由函数(function)构成的,函数是C程序的基本单位。函数分为:系统提供的库函数,用户定义的函数。*3) C程序的执行总是先从主函数开始,而不论主函数在整个程序中的位置。4) 函数体必须在 之间,函数前面部分为声明(定义)部分,后面为执行部分。5) 每个语句的结尾必须要有 ;作为终止符。6) 可以在语句旁边用/*/进行注释,但/与*之间不能空格,且/*与*/之间不能再插入/*/。注释内容可以是英文或中文。*7) C语言本身没有输入输出语句,有关操作都是通过调用库函数scanf和printf来完成。8) 低一层次的语句或说明可比高一层次的缩进若干格书写。1.2 算法考点04:算法及其特征 开 始1概念:任何解决问题的过程都是由一定的步骤组成的,所以把解决问题确定的方法和有限的步骤称作为算法。程序数据结构+算法 0=s2简单算法示例【例1-2】求1+2+3+100? 1=i假 S1:s=0 S2:i=1 S3:s=s+i S4:i=i+1 S5:如果i不大于100,则重复执行步骤3,否则算法结束。 is int i,s=0; for(i=1;iis=s+i; printf(%dn,s); 输出s运行结果为: 5050 结 束*3特点:有穷性、确定性、可行性(有效性)、有零个或多个输入、有一个或多个输出。4表示方法(1) 流程图: 开始或终止框、 输入输出框、 判断框、 处理框、 流程线、 连接点、 注释框。(2) 伪代码(3) 计算机语言C语言考点05:算法的类型1基本类型1) 数值算法:常用于科学计算,如求方程的根等。2) 非数值算法:广泛用于各种数据的数据处理,如事务管理、图书检索、人事管理等。2基本构成1) 结构:顺序结构、选择(分支)结构、循环(重复)结构。2) 原操作:输入、输出、表达式求值、变量赋值等。1.3 结构化程序设计和模块化结构考点06:结构化程序1顺序结构顺序结构是由一组顺序执行的程序块所组成的。2选择结构选择结构是根据分支条件的取值来决定程序执行的走向。条件语句真假3循环结构循环结构是一种对某一处理块反复执行指定次数的结构。考点07:模块化结构C语言是一种结构化程序设计语言,它提供了三种基本结构的语句;提供了定义“函数”的功能,在C语言中没有子程序的概念,它提供的函数可以完成子程序的所以功能;C语言允许对函数单独进行编译,从而可以实现模块化。C语言的工作界面及上机操作启动TC 2.0:双击快捷方式或启动MS-DOS,键入cdtctc或单击开始菜单运行c: tctc.exe。1菜单栏F10Flie(文件):Load(加载文件)、Pick(选择文件)、New(新建文件)、Save(保存文件)、Write to(另存为)、Directory(选择指定目录下的文件)、Chang dir(改变默认打开的文件目录)、OS shell(暂时回到DOS)、Quit(退出)。Edit(编辑):Alt+E(F6) 从信息窗口回到编辑窗口。可清除错误白线提示。Run(运行):Run(运行)、Program reset(程序重启)、Go to cursor(运行到光标处)、Tace into(跟踪)、Step over(单步执行)、User screen(用户屏幕)。Complie(编译):生成目标文件、可执行文件等。Project(项目):由多个文件生成一个可执行文件。Options(选项):设置工作环境。Debug(调试):。Evalute在调试过程中采用给某些变量赋新值来寻找错误。Break/watch(断点及监视表达式):。Add watch增加监视的变量,观察语句执行过程中变量值的变化。注意:TC默认在C盘根目录下,需要设置其他目录只需将其拷贝至该目录下,保留C盘的TC。2状态栏目:光标位置、文件名等。3信息窗口:显示提示信息。4功能键提示信息F1:帮助 F2:保存文件 F3:打开文件 F4:运行到光标处F5:隐藏信息窗口 F6:转换编辑与信息窗口 F7:单步跟踪程序执行F8:单步跟踪程序执行但不进入被调用的子函数中F9:生成目标文件但不运行F10:打开菜单栏。Alt+F3:选择文件、Alt+F5:显示运行结果、Ctrl+F7: 增加监视的表达式、Ctrl+F9:运行程序。注意:新建文件可在进入TC 2.0时直接Alt+E或按两次Esc,新建文件不要在原有文件上修改,此时运行结果可能发生错误。 除了运行显示图形的程序,其他均需要通过Alt+F5来显示运行结果。5C程序的生成过程:编辑编译连接运行。连接目标程序*.OBJ编译源程序*.C可执行程序*.EXE C编译程序 Link程序第2章 C程序设计的初步认识2.1 标识符、常量和变量考点01:标识符1. 概念:用于标识变量、函数、数组、文件等的一串字符称为标识符。2. 规定a) 必须由英文字母、数字或下划线组成,且首字符只能是英文字母或下划线。b) C程序中区别大、小写字母。c) 禁止使用关键字作为标识符。3. 关键字:又称保留字,是编译系统预先定义的一些具有特定含义的标识符,共32个(数据类型12个、控制语句12个、存储类型4个、其它4个)。预定义标识符虽然不属于关键字,但为了避免混乱,建议不使用它们作标识符。注意:C程序允许32个字符的标识符,但建议不超过8个字符。二、基本数据类型1算法处理的对象是数据,而数据是以某种特定的形式出现,在C语言中,数据有常量、变量,一般它们都有一定的数据类型。整型(int)基本类型字符型(char)实型(float、double)枚举型(enum)数据类型 数组类型 构造类型 结构体类型(struct)共用(联合)体类型(union)指针类型 空类型(void)2常量与变量a) 常量:在程序运行过程中其值不能改变的量称为常量。符号常量是在程序中指定用一个符号代表一个常量。注意:符号常量必须由#define宏定义命令来定义,符号常量修改方便、不易出错。 习惯上符号常量名用大写,变量名用小写。b) 变量:在程序运行过程中其值能改变的量称为变量。一个变量在内存中占据一定的存储单元,在存储单元中存放该变量的值。c) 变量说明与变量赋值(变量初始化):变量说明格式为:类型说明符 变量表列 变量赋值格式为:变量名表达式注意:表达式可以是:常量、变量、算术表达式、赋值表达式。允许在一个类型标识符后说明多个相同类型的变量,各变量名之间用逗号间隔。但不能使用 变量变量表达式;,如int x=y=7;,只能是int x=7,y=7;或int x,y;x=y=7;。变量说明必须放在变量使用之前,一般在函数体的开头部分;变量必须先定义后使用。“”左侧必须是变量,如x=y+7=9是错误的。3. 整型数据(1) 整型常量按进制分类:l 十进制整数:非0开头(除0),如123、-123、8、0、-5、30000等。l 八进制整数:0开头,数字串只能含有07,如056、-0111等。05658168046。l 十六进制整数:0x或0X开头,数字串只能含有09及a、b、c、d、e、f(A、B、C、D、E、F)。如0x123 、0X3A、-0x2e等。0X3A31611016058。(2) 整型变量类型说明符 所占位数(存储字节) 数的范围 基本型int 16(2) -32768(-215)32767(215-1) 短整型 short (int) 16(2) -32768(-215)32767(215-1)长整型 long (int) 32(4) -(-231)(231-1)无符号型 unsigned int 16(2) 065535(216-1) unsigned short 16(2) 065535(216-1) unsigned long 32(4)0(232-1) 注意:所占位数(存储字节)是由机器(CPU)的字长决定的,16位机字长为8。(3) 存放方式整型数据在内存中以二进制方式存放,最高位为符号位,0为正、1为负,并以补码表示。l 对于正数,其补码与原码相同。l 对于负数,其补码是将该数的绝对值的二进制形式按位取反再加1。如10的补码:10的原码 0000 0000 0000 1010 取反 1111 1111 1111 0101 加1 1111 1111 1111 0110-10的补码l 二进制转换成十进制的负整数:取反转换成十进制整数取负值再减1。如1111 1111 1111 1110:取反 0000 0000 0000 00011-1减1十进制负整数-2。l 十进制转换成八进制:十进制每3位对应于八进制1位。如-4即1 111 111 111 111 1001 7 7 7 7 4;负整数(int)加65536再转换成八进制即可。l 十进制转换成十六进制:十进制每4位对应于十六进制1位。如-40xfffc即1111 1111 1111 1100f f f c;负整数(int)加65536再转换成十六进制即可。(4) 数据溢出当向变量赋的值超出该整型变量的范围即溢出,溢出后会给出错误的结果。【例2-1】:main() int a,b; a=32767; ( a=-32768; ) b=a+1; ( b=a-1; ) printf(%d,%dn,a,b); 运行结果为:32767,-32768 (-32768,32767 )注意:如果需要输出正确的结果,可以使用长整型来接收超过基本(短)整型变量范围的数值。当基本(短)整型变量数值32767,则该数值减65536直到在-3276832767为止;当基本(短)整型变量数值-32767,则该数值加65536直到在-3276832767为止。4. 实型数据(浮点数)(1) 实型常量l 十进制小数形式:由数字加小数点组成(必须有小数点),如100.5、-123.、.123、0.0。l 指数形式:如123e3、1.23E5,字母e(E)之前必须有数字,后面必须为整数。(2) 实型变量类型说明符 所占位数(存储字节)数的范围 单精度 float 32(4) 10371038双精度 double 64(8) 1030710308长双精度 long double 128(16) 104931注意:不论单精度、双精度均输出小数点后6位,不足补0。指数形式为X.XXXXXe(E)XXX。(3) 舍入误差由于实型变量是用有限的存储单元存储的,因此能提供的有效数字总是有限的,在有效数位以外的数字将被舍去,由此可能产生误差。单精度有效位是7位,双精度有效位是16位。【例2-2】:main() float a=.111; ( double a=111.1111; )printf(%fn,a); ( printf(%en,a); ) 运行结果为:.(1.11111e+05) ( 111.(1.11111e+13) )(4) 数据溢出当向变量赋的值超出该实型变量的范围即溢出,溢出后会给出错误的提示。【例2-3】:main() float a=1.E40; printf(%En,a); 运行结果为:+INF5. 字符型数据(1) 字符(串)常量:l 字符:用 括起来的一个字符,如A、a等。注意:字符常量只能且必须包含一个字符,空格也可以,但必须写成 。【例2-4】:main() char c1,c2,c3; c1=a;c2=97;c3=c1-32; printf(%c,%c,%cn%d,%d,%d,c1,c2,c3,c1,c2,c3); 运行结果为:a,a,A97,97,65l 字符串:用 括起来的一串字符,如A、Very Good、 (空串)等。注意:字符串常量结尾系统自动加一个结束标志0, 字符串常量所占字节数为字符数加1。(2) 转义字符常量:又称反斜线字符,总是以一个跟一个特定的字符来代表某一特定的ASCII字符,这些字符也必须括在 内,如n代表换行、101、x41均代表A。注意:每个转义字符只能看作一个字符。 转义字符ddd表示1-3位八进制数、xhh表示1-2位十六进制数。例:已知字母A的ASCII码为十进制数65,且c为字符型,则执行语句c=A+6-3;后,c中的值为 。 A)D B)67 C)不确定的值 D)C【例2-5】:main() printf(ctderatYb=n); /*表示空格*/ printf(376); 运行结果为:a=de说明:在第一行输出c,t横向跳格至第9格,输出de,r使输出位置移至本行首,输出a,t横向跳格至第9列(c清除),输出Y,b退一格(Y清除),输出,n换行,输出。(3) 字符变量:类型说明符 所占字节 数的范围 char 1 -128127 注意:字符变量在内存中占1个字节,存放的是字符的ASCII代码值,可以作为整型来处理,如A的值为65、a的值为97、空格字符的值为32,所以可以进行算术运算。三、运算符与表达式表达式:由常量、变量、函数等运算对象和运算符组成的式子。运算符:运算符有优先级,高的先执行,同级的由结合规则决定。从左到右结合:运算对象与左边运算符相结合,如5+x-10。从右到左结合:运算对象与右边运算符相结合,如x=y=7。1. 算术运算符与算术表达式(从左到右)(1) 单目(表示符号):正号“+”、负号“”。(2) 双目:+、*、/、%(模)。例:若有代数式,则不正确的C语言表达式为 。A)a/b/c*e*3 B)3*a*e/b/c C)3*a*e/b*c D)a*e/c/b*3注意:整型/整型时,小数点后的数一律舍去,如13/5为2、5/13为0、7/3*3的结果为6。 模运算是整除取余数,运算符两侧必须都是整型,计算结果的符号与第一个数的符号相同,如-5%3为-2、-5%-3为-2、5%-3为2。2. 自增自减运算符(单目) (优先级高于算术,右结合)(常用于循环结构)(1) 自增:+i先加1再使用,相当于先执行i=i+1;再执行运算;i+先使用再加1,相当于先执行运算再执行i=i+1;。(2) 自减:i先减1再使用,相当于先执行i=i1;再执行运算;i先使用再减1,相当于先执行运算再执行i=i-1;。注意:自增自减运算符只能用于变量(整型、实型、字符型、指针型),不能用于常量或表达式。i+等价于(i+)。【例2-6】:main() int i=3,k; k=(i+)+(i+)+(i+); ( k=(+i)+(+i)+(+i); ) ( k=(+i)+(i+)+(i+); ) printf(i=%d,k=%dn ,i,k); 运行结果为:i=6,k=9 ( i=6,k=18 ) ( i=6,k=15 )3. 赋值运算符与赋值表达式(优先级低于算术,右结合)(1) 赋值运算符:“”是将“”右侧的数值赋值给左侧的变量。(2) 赋值表达式:变量名表达式注意:赋值运算符两侧数据类型不一致,则运算结果以“”左侧的数据类型为准。 赋值表达式后面加上“;”便构成了赋值语句。(3) 复合赋值运算符(双目)l +=加赋值、=减赋值、*=乘赋值、/=除赋值、%=模赋值。l &=按位与赋值、|=按位或赋值、=按位异或赋值、=位右移赋值。【例2-7】:main() int a=6; a+=a-=a*a; printf(a=%dn ,a); 运行结果为:a=-604. 关系运算符与关系表达式(优先级低于算术,左结合,高于赋值)(用于选择或循环结构)(1) 关系运算符:小于、大于、=大于或等于、=等于、!=不等于。(2) 关系表达式:l 格式:表达式 关系运算符 表达式。l 结果:逻辑值1(关系式成立)或0(关系式不成立)。例:若希望当A为奇数时,表达式值为“真”,偶数时为“假”,则不满足要求的表达式是( )。A)A%2=1 B)! (A%2=0) C)! (A%2) D)A%25. 逻辑运算符与逻辑表达式(优先级低于关系,左结合,!除外)(用于选择或循环结构)(1) 逻辑运算符:!非(单目)、&与 (双目) 、| |或(双目)。(2) 逻辑表达式:l 格式:表达式 逻辑运算符 表达式。l 结果:逻辑值1(真)或0(假)。例:判断char类型数据c1是否为大写字母的正确表达式是( )。A)A=c1=A)&(c1=Z) C)( A=c1) D)(c1=A)&(c1b)&(n=cd);printf(a=%d,b=%d,c=%d,d=%d,m=%d,n=%d,x=%dn ,a,b,c,d,m,n,x); 运行结果为:a=1,b=2,c=3,d=4,m=0,n=2,x=0注意:!取相反值,非0表达式值为0、0值为1,&两侧表达式均为非0值才为1、否则为0,| |只要有一个表达式值为非0值就为1,否则为0。 求值短路:当&左侧表达式为0则不继续计算右侧表达式直接给结果0,当| |左侧表达式为非0则不继续计算右侧表达式直接给结果1。6. 逗号运算符与逗号表达式(优先级最低,左结合)(1) 格式:表达式1,表达式2,表达式n。(2) 结果:依次计算各表达式的值,最后一个表达式的值为整个表达式的值。注意:与间隔符区分开,如printf(%d,%d,%d,(a,b,c),d,e);语句%d,%d,%d中的,是间隔符。例:设x,y均为int类型,则表达式y=6, y+1,x=y,x+1的值是( )。A)8 B)6 C)7 D)不确定7. 条件运算符与条件表达式(三目)(优先级低于逻辑,左结合,高于赋值)(用于选择结构)(1) 格式:表达式1?表达式2:表达式3。(2) 结果:求解表达式1,非0(为真),求解表达式2,其值即为整个表达式的值;0(为假),求解表达式3,其值即为整个表达式的值。如ab?a:cd?c:d等价于a b ? a : (c d ?c :d)。例:若给定条件表达式(M)?(a+):(a-),则其中表达式(M) 。A. 和(M=0)等价 B. 和(M=1)等价 C. 和(M!=0)等价 D. 和(M!=1)等价8. 长度运算符(优先级高于算术,右结合)(1) 格式:sizeof(类型说明符或变量)。(2) 结果:测试数据类型所占用的字节数,如sizeof(int)值为2。9. 位运算符(双目) (运算对象整型或字符型)(1) 按位取反(单目):将运算对象的内容按位取反,如3276732768,即0111 1111 1111 11111000 0000 0000 0000 。(2) &按位与:把两个运算数按对应的二进制进行“与”运算,相应位都是1,该位结果为1,否则为0;如12&108,即 0000 1100& 0000 10100000 1000。(3) |按位或:两个运算数相应位只要有一个为1,该位结果为1,两个都是0结果才为0;如83|1295,即0101 0011| 0000 11000101 1111。(4) 按位异或:两个运算数相应位数字相同该位结果为0,不同结果为1;如51195240,即0011 0011| 1100 00111111 0000。(5) 左移:运算对象整型表达式,移位后低位补0,高位移出的舍弃;如6224,即0000 0110右移:运算对象整型表达式,移位后低位移出的舍弃,高位补0(负整数补1);如2426,即0001 100020000 0110。如果右端移出的部分不含1,则相当于移位对象除以4。10. 常用数学函数(#include )l abs与fabs:abs(x)求整数x的绝对值,fabs(x)求x的绝对值;两者区别为前者参数及返回值均为基本整型,后者参数及返回值均为双精度。l exp:exp(x)求ex的值,参数及返回值均为双精度(下同)。l log与log10:log(x)求lnx的值、log10(x)求log10x的值。l pow:pow(x,y)求xy的值。l sqrt:sqrt(x)求 的值。例:代数式 对应的C语言表达式是:sqrt(fabs(pow(y,x)+log10(y)。 代数式 对应的C语言表达式是:fabs(pow(x,3.0)+log10(x)。11. 优先级:括号逻辑非、自增自减、求正负算术运算符关系运算符逻辑与逻辑或条件运算符赋值运算符逗号运算符(最好多用括号,使表达式更明了)四、类型转换 高 double float1. 隐式转换 纵向箭头表示当运算对象为不同类型时的转换方向, long横向箭头表示必定转换。 unsigned低 int char,shorta) 将int转换为long时要进行符号扩展。正值高16位补0,数值不变,如1010 0000 0000 0000 10100000 0000 0000 0000 0000 0000 0000 1010;负值高16位补1,数值不变,如1010 1111 1111 1111 01101111 1111 1111 1111 1111 1111 1111 0110。b) 将long转换为int时要进行数位截取。将long int的低16位给int。数据可能溢出。c) 将unsigned转换为long时要进行数位扩展。高16位补0,数值不变。d) 将unsigned转换为相同位数的整型变量时,只需原封不动传递。数据可能溢出。e) 将非unsigned转换为相同位数的unsigned时,只需原封不动传递。数据可能溢出。注意:超过4位的16进制整型变量转换为无符号16进制变量时只需保留后4位。当负值基本(短)整型变量转换为无符号整型变量时加65536直到=0为止。【例2-9】:main() int a,b,c,d; long x,y; unsigned u; a=53; b=-3; c=65533; d=0xABCDE; (=要减11*65536=1010 1011 1100 1101 1110) u=-2; x=a; printf(a=%d,a=%un,a,a); /* %d,以带符号十进制形式输出整数*/ printf(b=%d,b=%un,b,b); /* %u,以无符号十进制形式输出整数*/ printf(c=%d,c=%un,c,c); printf(d=%d,d=%xn,d,d); /* %x,以无符号十六进制形式输出整数*/ printf(u=%d,u=%un,u,u); printf(x=%ld,x=%lxn,x,x); /* %ld,以带符号十进制形式输出长整型*/ 运行结果为:a=53,a=53b=-3,b=65533c=-3,c=65533d=-17186,d=bcdeu=-2,u=65534x=53,x=352. 显式转换:(类型说明符) 表达式,如(int)2.50000=2。第3章 顺序结构程序设计教学目的:1. 掌握各种输入输出语句的要点和使用方法。2. 掌握printf()和scanf()函数中各种格式符号的作用和使用方法。3. 能够灵活地运用各种顺序语句进行综合程序设计。一、C语句分类1. 控制语句:条件语句if()else、循环语句for()、while()、dowhile()、结束本次循环语句continue、中止执行switch或循环语句break、多分支选择语句switch、转向语句goto、从函数返回语句return。如if(xy) z=x; else z=y;。2. 函数调用语句:由一次函数调用加分号构成。如printf(This is a C program.);。3. 表达式语句:由一个表达式加分号构成,最典型的赋值语句。如a=3;。4. 空语句:只有“;”构成的语句,它什么也不做,有时用来作被转向点。5. 复合语句:用 把一些语句括起来成为复合语句,又称分程序。如 z=x+y;t=z/10;。二、基本输入输出语句C本身没有输入输出语句,有关操作是通过调用库函数scanf、getchar和printf、putchar来完成。在程序中调用这些函数时,要用编译预处理命令:#include ,scanf、printf可省略。1. 字符数据的输入输出(1) putchar函数:用于向终端输出一个字符,格式为putchar(c),c可以是字符型变量或整型变量。如输出China:putchar(C);putchar(h);putchar(i);putchar(n);putchar(a);。(2) getchar函数:用于从输入设备输入一个字符,格式为getchar()。如输入一个字符并显示:int ch;chgetchar();putchar(ch);。2. 格式输入输出(1) printf函数:用于向终端输出若干个任意类型的数据。格式为printf(格式控制,输出表列)。格式控制包括格式说明、普通字符(指需要原样输出的字符)。l 格式说明由%和格式字符组成,如%d,%f等。若%d则直接输出%d,格式字符无效。l 在格式说明中,在%和格式字符间可以插入修饰符。a) l,用于长整型数,可加在格式符d、o、x(X)、u前面;h,用于短整型或无符号短整型数。b) m(正整数),控制数据最小宽度。c) 正整数m.正整数n,对实数,表示输出n位小数;对字符串,表示截取的字符个数。d) ,输出的数字或字符左对齐。e) +,使输出的数字总是带有+号或号。f) 0,指定宽度的同时,在数据前面的多余空格处填以数字0。g) #,在%与o、x(X)之间,输出前导符0、0x(X)。注意:格式说明与输出项从左到右在类型上必须一一对应匹配,如不匹配将导致数据不能正确输出。 格式说明与输出项的个数应该相同,如果格式说明个数少于输出项的个数,多余的输出项不予输出;反之,则多余的格式将输出不定值(或0值)。 除了X、E、G外,其他格式字符必须用小写字母,如%d不能写成%D。 可在格式控制字符串内包含转义字符,如“n”、“t”等。【例3-1】:main() int x=0177; float y=123.456; char z=a;printf(x=%d,x=%-6d,x=$%-06d,x=$%06d,x=%06d,x=%#o,x=%#xn,x,x,x,x,x,x,x);printf(y=%f,y=*%9.2f,y=%-9.2f,y=014.5f,y=%gn,y,y,y,y,y);printf(z=%s,z=%3s,z=%7.2s,z=%-5.3sn,string,string,string,string); 运行结果为:x=127,x=127 ,x=$127 ,x=$,x=%06d,x=0177,x=0x7fy=123.,y=* 123.46,y=123.46 ,y=.45600,y=123.456z=string,z=string,z= st,z=str(2) scanf函数:用于从输入设备获取数据。格式为scanf(格式控制,地址表列)。l 输入整型、实型变量:数据之间用间隔符(空格、Tab键、回车)隔开,间隔符数量不限。如scanf(%d%d%d,&a,&b,&c);输入形式为:102030。l 指定输入数据所占宽度:数据之间不用间隔符,系统自动按宽度截取数据。如scanf(%4d%f,&a,&b); 输入形式为:.9.3得到a=1234,f=5678.93。l 跳过输入数据:在%和格式字符之间加*号。如scanf (%d%*d%d%d ,&a,&b,&c); 输入形式为:10203040得到a=10,b=30,c=40。l 输入字符型或混合变量:字符之间不用间隔符,字符与数据之间不用间隔符。如scanf(%d%d%c%3d,&a,&b,&c,&d); 输入形式为:1011A12345得到a=10,b=11,c=A,d=123。l 输入数据少于scanf函数要求输入的数据:系统将等待输入,直到满足要求为止或遇非法输入。l 输入数据多于scanf函数要求输入的数据:多余的数据将留在缓冲区作为下一次输入操作的输入数据。l 在格式控制字符串中插入其他字符:输入时要求按一一对应的位置原样输入这些字符,通常是逗号或空格;如scanf(%d,%d,%d,&a,&b,&c); 输入形式为:10,20,30或10,20, 30。l 输入数据的结束:遇空格、Tab键、回车,按指定的宽度结束,遇非法输入(不正确的数据类型等)。注意:格式控制后面应当是变量地址&,而不是变量名。 输入数据时不能规定精度,如scanf(%10.2f,&f);是不合法的。三、顺序结构程序设计示例【例3-2】从键盘输入一个大写字母,要求改用小写字母输出。 开始#include main()输入c1 char c1,c2; c1+32=c2 c1=getchar(); c2=c1+32; 输出c2 printf(%c,c2); 结束运行结果为:Aa 【例3-3】求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b24ac0。 p=,q=,x1=p+q,x2=p-q#include main() float a,b,c,disc,x1,x2,p,q; scanf(a=%f,b=%f,c=%f,&a,&b,&c); disc=b*b-4*a*c;p=-b/(2*a);q=sqrt(disc)/(2*a); x1=p+q;x2=p-q; printf(x1=%5.2fnx2=%5.2fn,x1,x2); 运行结果为:a=1,b=3,c=2x1=1.00x2=2.00第4章 选择结构程序设计教学目的:1. 掌握关系运算符、逻辑运算符、条件运算符在选择结构中的使用方法及技巧。2. 掌握if语句的使用方法及构成的各种选择结构的程序设计。3. 掌握switch语句的使用方法及break在switch语句中的使用方法。一、关系、逻辑、条件运算与选择结构1. 选择结构是判断表达式的真假来选择要执行的语句。2. 关系、逻辑表达式也是判断表达式的真假,所以选择结构的判断表达式常用关系、逻辑表达式。例:判断年份是否为闰年条件是被4整除但不能被100整除能被400整除;可以表示为(year%4=0) & (year%100!=0) | | (year%400=0) 或 ! ( (year%4!=0) & (year%100=0) | | (year%400!=0) 或 ( (year%4=0) & (year%100!=0) | | (year%400=0) ) ? 1 :0 。3. 条件表达式可直接代替if语句。例:将a,b中较大的数赋值给x,可表示为if (ab) x=a; else x=b; 或 x=(ab) ? a :b。二、if语句及用if语句构成的选择结构1. if语句的3种形式(1) 单分支if语句(不含else子句)l 形式:if (表达式) 语句

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论