




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C语言程序设计基础,2,为什么学习c语言?,C语言是目前实际程序设计工作中使用最广泛的语言之一 目前有许多软件系统是用C编写的,或基本上是用C编写的 C语言是一种很灵活的语言 很多新型的语言都是衍生自C语言 程序设计是计算机领域的基础课程,3,什么是C语言?,1973年由美国贝尔实验室设计发布的 目前是计算机程序设计语言的主流语种 是世界上最为广泛使用的语言之一 C语言的流行归功于两个主要因素 使用正确的C语言指令几乎可以完成任何任务 是可移植的C编译系统的广泛采用 C语言是一种能够让软件工程师与计算机进行有效对话的介于汇编语言和高级语言之间的编程语言,C语言的主要特点,C语言主要特点: 运算
2、符丰富。 有34种运算符 把括号、赋值、强制类型转换等都作为运算符处理 表达式类型多样化 数据类型丰富。 包括:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型 C99又扩充了复数浮点类型、超长整型(long long)、布尔类型(bool) 指针类型数据,能用来实现各种复杂的数据结构(如链表、树、栈等)的运算。,具有结构化的控制语句 如ifelse语句、while语句、dowhile语句、switch语句、for语句 用函数作为程序的模块单位,便于实现程序的模块化 C语言是完全模块化和结构化的语言 语法限制不太严格,程序设计自由度大。 对数组下标越界不做检查 对变量的类型使用
3、比较灵活,例如,整型量与字符型数据可以通用 C语言允许程序编写者有较大的自由度,因此放宽了语法检查,C语言的主要特点,C语言的主要特点,允许直接访问物理地址,能进行位操作,可以直接对硬件进行操作 C语言具有高级语言的功能和低级语言的许多功能,可用来编写系统软件 这种双重性,使它既是成功的系统描述语言,又是通用的程序设计语言 用C语言编写的程序可移植性好。 C的编译系统简洁,很容易移植到新系统 在新系统上运行时,可直接编译“标准链接库”中的大部分功能,不需要修改源代码 几乎所有计算机系统都可以使用C语言 生成目标代码质量高,程序执行效率高。,7,本课程的组织,算法概念、编程原理、编程风格、 基本
4、数据类型定义、算术运算符及 表达式,顺序结构、选择结构、循环结构、 数组的定义及应用、程序设计过程,函数、变量的存储类别、指针、结 构体与共用体、文件,8,程序设计,什么是程序设计? 使用某种程序语言编写程序的过程,就是用计算机语言对所要解决的问题中的数据以及处理问题的方法和步骤所做的完整而准确的描述的过程 怎样进行程序设计? 分析问题 确定算法 编制程序 调试程序,9,程序设计,一个程序主要包括以下两方面的信息: (1) 对数据的描述。在程序中要指定用到哪些数据以及这些数据的类型和数据的组织形式 这就是数据结构(data structure) (2) 对操作的描述。即要求计算机进行操作的步骤
5、 也就是算法(algorithm) 程序=数据结构+算法,10,算法,什么是算法(Algorithm)? 就是为了解决一个特定的问题而采取的确定的、有限的、按照一定次序进行的、缺一不可的执行步骤 注意 为了有效地利用计算机解决实际问题,在设计算法时不仅要保证计算机执行算法的正确性,还要考虑算法的质量,选择适合于具体问题的算法,11,算法,通常计算机算法分为两大类:数值运算算法和非数值运算算法 数值运算是指对问题求数值解 有确定的数学模型 非数值运算是指事务处理过程 种类繁多,很难提供统一规范的算法 更多的是需要用户设计其算法的,12,算法,算法的特性 有穷性:一个算法应包含有限的操作步骤,而不
6、能是无限的。 确定性: 算法中的每一个步骤都应当是确定的,而不应当是 含糊的、模棱两可的。 有0个或多个输入: 所谓输入是指在执行算法时需要从外界取得必要的信息。 有1个或多个输出: 算法的目的是为了求解,“解” 就是输出。 没有输出的算法是没有意义的。 有效性: 算法中的每一个步骤都应当能有效地执行,并得到确定的结果。,13,算法的表示,常用的方法有: 自然语言 传统流程图 结构化流程图 伪代码 ,14,用自然语言表示算法,用自然语言表示通俗易懂,但文字冗长,容易出现歧义性 用自然语言描述包含分支和循环的算法,不很方便 除了很简单的问题外,一般不用自然语言,用流程图表示算法,流程图是用一些图
7、框来表示各种操作 用图形表示算法,直观形象,易于理解,起止框,输入输出框,处理框,判断框,流程线,连接点,注释框,x0,Y,N,一个入口,两个出口,2.4.2用流程图表示算法,流程图是用一些图框来表示各种操作 用图形表示算法,直观形象,易于理解,起止框,输入输出框,处理框,判断框,流程线,连接点,注释框,位置不够,防止交叉,通过以上几个例子可以看出流程图是表示算法的较好的工具 一个流程图包括以下几部分: (1) 表示相应操作的框 (2) 带箭头的流程线 (3) 框内外必要的文字说明 流程线不要忘记画箭头,否则难以判定各框的执行次序,18,结构化的程序设计方法,程序的三种基本结构 问题的提出 结
8、构化程序设计必须采用的结构 顺序结构、选择结构和循环结构 被称为程序设计的三种基本结构 算法的实现过程是由一系列操作组成的,这些操作之间的执行次序就是程序的控制结构 总体结构流程都是自上而下顺序执行的。,19,结构化的程序设计方法,程序的三种基本结构 顺序结构,顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的,选择结构,表示程序的处理出现了分支,它需要根据某一特定的条件选择其中的一个分支执行,A,B,Y,N,A,Y,N,循环结构,循环结构 循环结构,程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环 当型循环结构,A,Y,N,Y,N,0 x,x+1x,输出0,1,2,3
9、,4,循环结构, 直到型循环结构,A,Y,N,Y,N,0 x,x+1x,输出1,2,3,4,5,以上三种基本结构,有以下共同特点: (1) 只有一个入口 (2) 只有一个出口 一个判断框有两个出口 一个选择结构只有一个出口 (3) 结构内的每一部分都有机会被执行到。也就是说,对每一个框来说,都应当有一条从入口到出口的路径通过它 (4) 结构内不存在“死循环”,用N-S流程图表示算法,N-S流程图用以下的流程图符号:,顺序结构,选择结构,循环结构 (当型),循环结构(直到型),用伪代码表示算法,伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法 用伪代码写算法并无固定的、严格的语法规则
10、,可以用英文,也可以中英文混用,例2.16 求5!。 begin (算法开始) 1 t 2 i while i5 t*i t i+1 i print t end (算法结束),用计算机语言表示算法,要完成一项工作,包括设计算法和实现算法两个部分。 设计算法的目的是为了实现算法。 不仅要考虑如何设计一个算法,也要考虑如何实现一个算法。,最简单的C语言程序举例,例1.1 要求在屏幕上输出以下一行信息。 This is a C program.,解题思路: 在主函数中用printf函数原样输出以上文字。,最简单的C语言程序举例,#include int main( ) printf (”This i
11、s a C program.n”); return 0; ,函数的名字,表示主函数,C程序必须有一个 main 函数,最简单的C语言程序举例,#include int main( ) printf (”This is a C program.n”); return 0; ,主函数类型,最简单的C语言程序举例,#include int main( ) printf (”This is a C program.n”); return 0; ,函数体,最简单的C语言程序举例,#include int main( ) printf (”This is a C program.n”); return 0
12、; ,输出函数,输出语句,最简单的C语言程序举例,#include int main( ) printf (”This is a C program.n”); return 0; ,输出语句,最简单的C语言程序举例,#include int main( ) printf (”This is a C program.n”); return 0; ,换行符,最简单的C语言程序举例,#include int main( ) printf (”This is a C program.n”); return 0; ,当main函数执行结束前 将整数0作为函数值,最简单的C语言程序举例,#include
13、int main( ) printf (This is a C program.n); return 0; ,表示语句结束,用到函数库中的输入输出函数时,最简单的C语言程序举例,C语言允许用两种注释方式: /:单行注释 可单独占一行 可出现在一行中其他内容的右侧 /*/:块式注释 可包含多行,#include int main( ) int i,t; t=1; i=2; while(i=5) t=t*i; i=i+1; printf(%dn,t); return 0; ,例(求5!)用C语言表示。,39,C语言词汇,标识符 每种程序语言都规定了在程序里描述名字的规则 这些名字包括:变量名、常数
14、名、数组名、函数名、文件名、类型名等,被统称为标识符 C语言标识符 C语言的标识符是满足如下条件的字符序列 只能由英文字母、数字和下划线组成 必须以英文字母或下划线开头 注意 C语言对大、小写字母严格区分 标识符不要与关键字同名,40,合法的标识符: 如sum,average, _total, Class, day, BASIC, li_ling 不合法的标识符: M.D.John,¥123,33,3D64,ab,41,C语言词汇,关键字 具有特定含义的,用作专用的标识符 语言中关键字绝大多数是由小写字母构成的字符序列 注意: 这些特定的关键字不允许用户作为自定义的标识符使用,42,C语言词汇
15、,运算符 分隔符 常量 注释符,43,C语言的数据类型,数据类型,空类型,指针类型,构造类型,基本类型,指针类型 用于存放地址(指针),用来解决动态数据的建立、删除和使用 空类型 用于数据类型的转换,基本类型 构造简单,已由系统定义好 构造类型 由其它数据类型按一定规则构造而成。,44,C语言的数据类型,数据类型的体现 常量和变量是在计算机中数据类型的表现形式 常量是一成不变的 变量则可以不断改变 数据类型的长度 在计算机中,由于软硬件的各种原因,数据类型必须有一个长度的限制 溢出处理 不同的数据类型规定了不同的机内表示长度,也决定了对应数据量的变化范围,当某一数据超出该数据类型所规定的范围时
16、,计算机会拒绝接受,而将之转换成范围内的另外某个数,这种情况称之为溢出处理。,45,常量,在程序运行过程中其值不能被改变的量值,语言提供的常量 数值常量 整型 如1000,12345,0,-345 长整型常量,在常数之后加上字母或 实型 十进制小数形式:如0.34 -56.79 0.0 指数形式:如12.34e3 (代表12.34103) 字符常量 字符常量 如? 字符串常量 如 “boy” 特殊形式常量 符号常量 #define PI 3.1416,46,常量,实型常量 有效位数 单精度有效数字位数为十进制数的67位 双精度有效数字位数为十进制数的1516位 长双精度型有效数字位数为十进制数
17、的1819位 两种形式 小数形式 由正负符号、整数部分、小数点及小数部分组成 例:3.0,5.123,-120.1,0.0 指数形式 由尾数、字母e或E及指数部分组成 例: 123.0E-1,-1.23e3 标准的指数形式是:小数点的左侧只有一位数字,47,常量,字符常量 包括可以全部在计算机上显示的符号 ASCII码表上的全部字符 一个字符的存储占用一个字节 表示方法 用单引号 括起来的一个字符 A,1 用单引号 括起来的以 字符开始的字符 n,t,48,常量,字符常量 C语言中字符型数据和整型数据可以通用 字符型数据在计算机中存储的是字符的ASCII码 ASCII码形式上就是0 到255之
18、间的整数 例如 字符A的ASCII码值用是65 A+32; /*执行结果65+32=97,是a的ASCII码值*/,49,常量,字符串常量 是用一对双引号括起来的字符序列 双引号仅做定界符使用,本身不算入字符串常量 例如 “ABC”,“ ”(有空格),“a”, “Happy new Year”, “abcn” ,“”(无空格)等 C语言规定字符串的最后必须以空字符0结尾 编译程序总是自动地在字符串的结尾加上一个转义字符0 ASCII码是0,所对应的字符是空 空字符并不计算在字符串的长度里,但是存储时, 空字符将会额外的占用一个字节空间,50,常量,字符串常量 字符串常量与字符常量的区别 形式
19、字符常量是用单引号括起的单个字符 字符串常量是用双引号括起的一串字符 存储方式 字符常量在内存中占一个字节 字符串常量除了每个字符各占一个字节外,其字符串结束符0也要占一个字节 例如 字符常量a占一个字节 字符串常量a 占2个字节,a ,“a” ,97,97,0,51,常量,符号常量 在C语言中允许程序中的常量定义为一个标识符,这个标识符称为符号常量 带有名字的常量 定义格式 #define 例如: #define AGE 35 #define M 1.9734067e9 提示 简化书写格式、减少出错率 定义符号常量可以提高程序的可读性,便于程序的调试和修改 符号常量不同于变量,在其作用域内不
20、能被改变和重新赋值 习惯上人们把符号常量名用大写字母表示,52,变量,变量 在程序运行过程中其值发生改变(可以被改变)的量值 C语言规定所有用到的变量都必须在程序中指定其数据类型,必须“先定义后使用” 一个变量应该有一个名字(标识符) 定义变量时要给其命名 一个变量应该有一种数据类型 编译系统根据定义变量的数据类型为其分配存储单元并在该存储单元中存放变量的值,53,变量,变量的命名 每个变量都由一个变量名来标识 在C语言中,变量名作为变量的标识,其命名规则符合标识符的所有规定 标识符只能由字母、数字和下划线组成且第一个 字符必须是字母或下划线 提示 大、小写字母被认为是不同的变量名 例:Sun
21、、sun、SUN是三个不同的变量 尽量取与变量含义接近的名称,54,变量,变量的定义 变量定义的目的 定义变量名 定义变量的数据类型 变量的类型决定变量的存贮结构,使C语言的编译程序为所定义的变量分配存储空间 变量的定义说明了变量叫什么以及用来做什么 定义一个变量的过程,实际上就是向内存申请一个变量的数据类型大小的空间的过程 变量实质上就是内存某一单元的标识符号,对这个符号的引用就是对相应的内存单元的存取操作,55,变量,变量的定义 用类型说明语句对变量进行定义 例 int a,b23,C_123; float sum; char max_ch; 变量的基本数据类型 整型、实型、字符型,56,
22、变量,整型变量 不同类型的差别在于占用不同的存储空间 采用不同位数的二进制编码方式 计算机内部总是采用二进制补码形式表示一个数值型数据 例如: 整型的最高位为符号位:“1”表示负数,“0”表示正数,其余15位表示数值 无符号整型数全部16位表示数值,57,变量,整型变量 整型类型的基本标志是int 基本型(int) 短整型(short int 、short) 长整型(long int 、long ) 无符号整型(unsigned int、unsigned long 、unsigned short) 例 int a;long b; unsigned int c; 提示 使用某种类型的变量时,一定
23、要注意该类型变量的取值范围,58,变量,实型变量 存储实型数据 ANSI C允许的定义三种实型变量 float 单精度型 Double 双精度型 long double 长双精度型 例 float a,b; double x; long double y;,59,变量,字符变量 用来存放一个字符常量 即一个字节存放一个字符 标示:char 例:char c1,a2; 提示 不能将一个字符串常量赋给一个字符变量 例:char c1,c2; c1=a ; c2=b ;合法 c1=“a” ; c2=“b”;非法,60,变量,变量赋值 初始化赋值方式(声明语句) C语言允许在定义一个变量的同时对变量进
24、行初始化 例: int i=0;/*表示定义一个整型变量i的同时将i赋值为0*/ int i,j,k=10;/*表示i,j,k为整型,只有k被赋值为10 */ 提示 如果对几个变量同时赋一个初始值,则可以写成 float a=3.0,b=3.0,c=3.0;表示a、b、c的初始值均为3.0,但并不表示整个程序中三个变量值一直不变或一直相等,61,变量,变量在使用中应注意的问题 变量要先定义后使用 常量与变量的类型要匹配 变量的数值存储范围,62,运算符,C语言用于描述对数据进行运算的特殊符号 语言具有丰富而繁多的运算符 由运算符构成了各种表达式 分类 语言的运算符按其在表达式中与运算对象的关系
25、 单目运算 一个运算符连接一个运算对象 双目运算 一个运算符连接两个运算对象 三目运算 一个运算符连接三个运算对象,63,运算符,分类 算术(自增/自减)运算符:(+,*,/,%、+、-) 关系运算符:(,=,、|、 float b=4.5;表达式 2*a+b 的结果为8.5 优先给与结合性 提示 两个整数相除其结果仍为整数(即舍去小数部分) 例如:13/10的结果为1 “%”为求余运算符,参与运算的两个数均为整数 例如:10%31 -10%3-1 除以0在计算机系统中是没有意义的 用括号可以改变表达式的运算顺序,69,算术表达式,算术表达式 例1: 设 int b=7;float a=2.5
26、,c=4.7; 表达式a+(b/3*(int)(a+c)/2)%4的值?,70,自增/自减,“+”与“-”的作用是使变量的值增1或减1 C语言提供两种形式的 +/-运算符 +a,-a(前缀运算:先进行增量运算后使用) a+, a-(后缀运算:先使用后进行增量运算) 提示: 增和自减只能作用于变量,不允许对常量、表达式或其它进行操作 当自增/自减变量值本身就单独构成一条语句时,前缀和后缀的效果是一样的 对于“+”和“-”的使用要避免二义性,71,自增/自减,计算过程 例1:设x=5 y=+x; /*先计算x=x+1,再执行y=x,结果x=6,y=6*/ y=x+; /*先执行y=x,再计算x=x
27、+1,结果y=5,x=6*/ 问题:如何理解A+B ? C规定:自左向右取尽可能多的符号组成运算符,72,自增/自减,例2:设x=5 y=x+*x+; /*先取x的值进行“*”运算,再进行两次 x+。 y=25,x=7*/ y=+x*+x; /*先进行两次x自增,使x的值为7,再进行相乘运算。y=49,x=7*/,73,赋值表达式,由赋值运算符“=”连接表达式(右侧)和变量(左侧) 形式:变量名表达式 赋值运算符完成两类操作 计算 赋值 例 int a=2,float b=5.2,c; c=a*b; 赋值运算符具有右结合性 例如:a=b=3*5;/*先计算3*5,后将15赋给b,再将b的值15
28、赋给a*/,74,赋值表达式,组合赋值表达式 组合赋值运算符将一个变量和一个表达式连接起来的式子称为组合赋值表达式 形式:变量名 表达式 例: x%=y/3;/*x=x%(y/3)*/ a*=b+c /* a=a*(b+c)*/ 注意:“a*=b+c”与“a=a*b+c”是不等价的 提示 “=”不是数学中的“等号”,它表示一个动作,右侧的值送与左侧的变量中(左侧只允许是变量,不能是表达式或其他) 赋值运算符两侧的类型要求一致,否则要进行类型转换 赋值运算符=,相等运算符= =,和一般习惯有所不同,75,关系表达式,关系运算符中的“关系”二字的含义是指一个值与另一个值之间的关系 关系由关系运算符
29、(,=, OP 表达式可以是常量、变量和表达式 结果为整型值 0:逻辑假 1:逻辑真 优先级:(,=,=)高于(!=,=) 结合方向:自左向右,76,关系表达式,例: int a=2; float b=3.4; ab、a+bb,abb的结果分别是多少? (0、1、0) 提示 进行关系运算时,先计算表达式的值,然后再进行关系比较运算 例如:int a=1,b=2,c=3; (1)a+b3*c 结果为0 /*39关系不成立*/ (2)(a+=b)(b*=11%c) 结果值为1 /*34关系成立 */,77,逻辑表达式,“逻辑”是指连接关系的方式 由逻辑运算符( int a,b,c; a=(-x=y
30、+)? -x:-y; b=x+; c=y; 执行上述程序段后a,b,c的结果是?,分别为8,8,10,83,逗号表达式,由逗号连接符(,)与表达式构成 形式:, ,可以是任何类型 逗号表达式的结果为最后一个表达式的结果值 执行过程 先求解表达式1的值,再求解表达式2的值,最后求解表达式n的值,并将表达式n的值作为整个表达式的结果值,84,逗号表达式,优先级 级别最低(最后进行逗号运算) 结合方向 自左向右 例题 设int x,a; 表达式x=(a=4,6*2)的x值? 表达式x=a=4,6*2的x值?,x为12,x为4,85,运算符与表达式,混合运算 指在一个表达式中参与运算的对象不是相同的数
31、据类型 例如: 设:int a=3;float b=3.0;char c=3; 则表达式(a*c+b)/4+(int)b%2的结果? 进行混合运算的首要的问题是对参与运算的数据进行类型转换 类型转换 由一种数据类型到另一种数据类型的转换被称为类型转换,86,“隐式的”自动类型转换,如果同一个表达式中含有不同类型的常量和变量,C语言则在计算该表达式时会自动转换为同一种数据类型以便进行运算 转换原则 运算中将所有char型数据转换成int型,float型转换成double型 “类型提升” :低类型向高类型转换 例如:1.5+2*a-1.2345678 /*运算次序为: 2*a:先将a转换成整型数9
32、7,得乘积194 1.5+194:1.5和194都转换成double型,和为195.5 195.5-1.2345678:1.2345678本身应是double型的,所以最后结果也为double型 */,87,int,char,short,unsigned,long,double,float,低,高,“类型提升” 示意图,“隐式的”自动类型转换,88,简单表达式的运算,【例1】执行下面程序段后, int a=1,b=1,c=1; a=a+b+c+; printf(“%d,%d,%d”,a,+b,c+); 输出结果为: A.4,3,2;B.3,3,2;C.3,3,3;D.3,2,2;,【例2】若定
33、义x,y为double型, 则表达式x=1,y=x+3/2的值是?,2.0,【例3】若变量已经定义并赋值,下面符合C语言语法的表达式是: A)a:=b+1 B)a=b=c+2 C)int 18.5%3 D)a=a+7=c+b,【例4】若a为int类型,且值为3,则执行完表达式a+=a-=a*a后,a的值是多少? A)-3 B)9 C)-12 D)6,a+=a-=a*a;复合赋值表达式,从右到左运行,可以分拆成:a-=a*a;a+=a;a的原值为3a-=a*a;相当于a=a-a*a=3-3*3=-6;再运行a+=a;自然就成了-12,89,输入/输出,在C语言中,没有专门的输入输出语句,所有的输
34、入/输出操作都是通过对标准的I/O库函数的调用实现,【例】计算给定了底和高的三角形面积 #include main( ) int height=5; /*the height of the triangle */ int width=4; /* the width of the triangle int area; /* area of the triangle(computed) */ area=(width*height)/2; ,90,输入/输出,输入/输出函数 输入是指从键盘接受用户输入数据,输出是指在屏幕上显示结果数据 在C的标准函数库中提供了多种输入/输出函数 例如:printf函
35、数和scanf函数 这些函数定义在头文件stdio.h中 提示 在调用标准输入/输出库函数时,在程序的开始处应有预编译命令: #include 或 #include “stdio.h”,91,数据输入,getchar函数 功能 从标准输入设备上(键盘)输入一个且只能是一个字符,并将该字符返回为函数的值 格式:getchar(); 提示 只有在按“回车”键后输入的字 符才有效 此函数只接受一个字符,而非一串字符 若输入 abcde,该 函数也只接受第一个字符 a getchar函数得到的字符可以赋 给一个字符变量或整型变量,也可以不赋给任何变量而是作为表达式的一部分,例: #include ma
36、in() int i; i=getchar() printf(“%c:%dn”,i,i); 执行本程序时,按键A时 显示结果如下:A:65,92,数据输入,scanf函数 功能 该函数从标准输入设备(键盘)上将数据读到地址参数所指定的位置上 格式: scanf(格式控制,地址表列);,93,数据输入,【例】 int a; scanf(“%d” , 错 scanf( %f%f%f , 1 3 2 错 a=1,b=3,c=2 对 a=1 b=3 c=2 错,3.使用scanf函数时应注意的问题 对于scanf( %c%c%c , 若输入 1234a123o.26,3.使用scanf函数时应注意的问
37、题 对于scanf(”%c%c%c”, 若输入 1234a123o.26,3.使用scanf函数时应注意的问题 对于scanf(”%c%c%c”, 若输入 1234a123o.26,102,数据输出,putchar函数 功能 将指定表达式的值所对应的字符输出到标准设备(终端/显示器),每次只能输出一个字符 格式 putchar(输出表达式); 表达式可以是字符型或整型的变量或常量或表达式 提示 putchar()必须带输出项,只能是单个字符而不能是字符串,例: #include“stdio.h” main() char o=O,k=K ; putchar(o); putchar(k); ,例3
38、.8 先后输出BOY三个字符。 解题思路: 定义3个字符变量,分别赋以初值B、O、Y 用putchar函数输出这3个字符变量的值 ,#include int main ( ) char a=B,b=O,c=Y; putchar(a); putchar(b); putchar(c); putchar (n); return 0; ,#include int main ( ) char a=B,b=O,c=Y; putchar(a); putchar(b); putchar(c); putchar (n); return 0; ,改为int a=66,b=79,c=89;,用printf函数输出数
39、据,1.printf函数的一般格式 printf(格式控制,输出表列) 例如: printf(”i=%d,c=%cn”,i,c);,格式声明,用printf函数输出数据,1.printf函数的一般格式 printf(格式控制,输出表列) 例如: printf(”i=%d,c=%cn”,i,c);,普通字符,用printf函数输出数据,1.printf函数的一般格式 printf(格式控制,输出表列) 例如: printf(”i=%d,c=%cn”,i,c);,可以是常量、变量或表达式,109,数据输出,printf函数 输出方法 形式1: printf(字符串); 功能: 按原样输出字符串 例
40、: printf(hello c programming.n); 形式2: printf(格式字符串,输出项表); 功能: 按格式字符串中的格式依次输出输出项表中的各输出项 printf( %s, CHINA); ,输出字符串:CHINA,110,格式符 %d: 按整型数据的实际长度输出。 %md:m为指定的输出字段宽度。如果数据的位数小于m,则左端补以空格,若大于m,则按实际位数输出。 例:printf(”%5d%5dn”,12,123456); 12,123456 %ld输出long型数据,111,数据输出,f格式符。用来输出实数 不指定数据宽度和小数位数,用%f 例3.6 用%f输出实数
41、,只能得到位小数。 double a=1.0; printf( %fn ,a/3); 指定数据宽度和小数位数。 %m.nf:以宽度m输出实型小数,小数位为n位 printf(%20.15fn,1/3); printf(%.0fn ,10000/3.0);,112, 输出的数据向左对齐,用%-m.nf 例: printf(“%7.2fn,1/3); 0.33 ,113,e格式符。指定以指数形式输出实数 %e,VC+给出小数位数为位 , 指数部分占5列 小数点前必须有而且只有1位非零数字 printf( %e ,123.456); 输出:1.234560 e+002 %m.ne printf(”%
42、13.2e”,123.456); 输出: 1.23e+002 (前面有4个空格),114,数据输出,printf函数 格式字符串:% 例如 int i=123, float j=12.34567; printf(“%4d+%5.2f”,i,j);/* 123+12.35 */ printf(“%2d+%2.1f”,i,j); /*123+12.3*/ printf(“%4d%10.4f”,i,j); /* 123 12.3457*/ printf(“%-4d%10.4f”,i,a);/* 123 12.3457 */ printf(“%4d%-10.4f”,i,a); /* 12312.345
43、7*/,115,例题,【例】若a1,a2,a3,a4均为char类型变量,则执行以下程序段后的输 出结果是: a1=1;a2=2; a3=3;a4=4; printf(“%1cn”,a1); printf(“%2cn”,a2); printf(“%3cn”,a3); printf(“%4cn”,a4);,a)1 2 3 4,b) 1 2 3 4,c)1 02 003 0004,d)输出格式 的描述符 不正确,【例】若执行程序时的输入是:1234567, 则程序的输出结果是: #include main() int x,y; scanf(“%2d%*2d%1d”, float b,c; scan
44、f(“%2d%3f%4f”, ,若运行时从键盘输入9876543210, 则上面程序的输出结果是: A)a=98,b=765,c=4321 B)a=10,b=432,c=8765 C)a=98,b=765.000000,c=4321.000000 D)a=98,b=765.0,c=4321.0,【例】读程序,写出运行结果。 #include main() int a,b,c; a=(b=(c=3)*5)*2-3; printf(“a=%d,b=%d,c=%dn”,a,b,c); ,a=27,b=15,c=3,例题,小测试:,若运行以下程序时,从键盘输入 25,13,10,则输出结果为 main() int a1,a2,a3; scanf(“%d%d%d”, printf(“a1+a2+a3=%dn”,a1+a2+a3) A. a1+a2+a3=48 B. a+a2+a3=25 C. a1+a2+a3=10 D. 不确定值,若a,b,c均为int型变量,则执行 以下程序后的输出结果是 b=(a=10,a+5,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年K12辅导行业教育培训行业商业模式创新研究报告
- 2025年工业互联网软件定义网络SDN在智能物流追踪优化报告
- 会计半年工作总结
- 吊车定置管理办法
- 后勤工程管理办法
- 员工丧葬管理办法
- 哈密供热管理办法
- 商业创新管理办法
- 商务定价管理办法
- 商场温度管理办法
- 肾肿瘤考试题库及答案
- 2025年中小学教师信息技术应用能力提升培训测试题库及答案
- 肾结石健康科普指南
- 中小学美术教师招聘考试题及答案(5套)
- 二零二五年度农村自建房买卖合同A3版(含土地使用)
- 村子绿化设计方案(3篇)
- 2025浙能集团甘肃有限公司新能源项目招聘22人笔试历年参考题库附带答案详解
- GB/T 45805-2025信控服务机构分类及编码规范
- DB3309-T 112-2024 嵊泗贻贝苗种包装运输通.用技术条件
- 2025年中国辐射监测及检测仪器行业投资潜力分析及行业发展趋势报告
- 2024年山东省东营市广饶县小升初英语试卷
评论
0/150
提交评论