[工学]最基础的C语言教程.ppt_第1页
[工学]最基础的C语言教程.ppt_第2页
[工学]最基础的C语言教程.ppt_第3页
[工学]最基础的C语言教程.ppt_第4页
[工学]最基础的C语言教程.ppt_第5页
已阅读5页,还剩197页未读 继续免费阅读

下载本文档

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

文档简介

C语言程序设计 主讲:高照艳 1 第一章 C语言概述 l主要内容: C语言的发展 C语言的特点 简单C程序介绍 算法 结构化程序设计 C程序的执行过程 2 C语言出现的历史背景 (1)C语言的发展源于人们希望用高级语言编写操作系统 。 ALGOL60(高级语言) 60 -CPL(剑桥大学推出 接近硬件 规模大 难实现) 63 -BCPL (剑桥大学 简化CPL) 67 -B 语言 (贝尔实验室用B写了UNIX操作系统) 70 -C 语言 (用C改写了UNIX 90%,即第5版) 72 73 -标准C (K 1. 3简单C程序介绍 9 例1.2 /*求两数之和*/ main( ) int a , b , sum ; /*定义变量*/ a=123 ; b=456 ; sum= a + b ; printf (“Sum is %dn”, sum) ; Sum is 579 10 例1.3 求两数之最大值 main( ) int a , b , c ; scanf (”%d,%d”, c=max(a , b) ; /*调用自定义函数max */ printf (“max=%dn”, c) ; int max(int x , int y) /*自定义函数*/ int z ; if (xy) z=x ; else z=y ; return(z) ; 11 C程序结构 lC程序 由函数构成 必须有,且只能有一个main(主函数 ) 总是从main函数开始执行 l函数 由函数首部和函数体组成 函数首部指定函数名、函数参数、类型 函数体从 开始,到 结束 函数内有语句 12 C程序结构(续) l语句 包括说明性语句、可执行语句 以 ;表示语句结束 l注释 可以出现在程序的任何位置 用 /* 和 */ 括起来,必须成对出现 l书写格式 C语言没有行的概念,书写格式自由。 习惯小写字母,缩进格式。 13 1.4 程序的灵魂算法 l程序包括两方面内容: 1.对数据的描述。数据元素及各元素之间的关 系,即数据结构。 2.对操作的描述。即操作步骤,也就是算法。 程序 = 数据结构 + 算法 程序 =数据结构 + 算法 + 程序设计方法 + 语言工具环境 说明: 高级语言的数据结构是以数据类型来体现的。 14 1.4.1 算法 l什么是算法 为解决某一应用问题而采用的解题步骤 l算法的描述方式 用自然语言描述算法 用流程图描述算法 用N-S结构图描述算法 用计算机语言表示算法(即实现算法) 例如:输出两个数中的最大数例如:输出两个数中的最大数 15 用自然语言描述算法 第一步:输入x和y的值 第二步:比较x和y的值,如果x大于y,则 输出x的值,否则输出y的值。 例如当描述例如当描述“ “输出输出1010个个 数中最大数数中最大数” ”的算法时,的算法时, 会冗长、难于理解会冗长、难于理解 16 图1.5 用流程图描述算法 用流程图描述算法 NY z= y z= x x y ? 开始 输入x和y 结束 输出z 起止框起止框 输入输入/ /输出框输出框 判断框判断框 处理框处理框 流程线流程线 17 用N-S结构图描述算法 输入x、y的值 xy T F z = x z = y 输出z的值 图1.7 用N-S结构图描述的算法 18 第一章 1.1 引言 算法的特性 (1)有穷性。 (2)确定性。 (3)有效性。 (4)输入。 (5)输出。 19 1.4.2结构化程序设计 l程序的三种基本结构 顺序结构程序:按照书写顺序依次执行语句 选择结构程序:按照条件判断选择执行语句 循环结构程序:通过条件控制循环执行语句 三种基本结构的共同点:三种基本结构的共同点: 都是只有一个入口和一个出口;都是只有一个入口和一个出口; 结构内的每一个框都有机会被执行;结构内的每一个框都有机会被执行; 结构内没有死循环。结构内没有死循环。 20 结构化程序设计的三种基本结构: 1) 顺序结构 传统流程图 N-S流程图 A B A B 开始 结束 其中:A、B为操作框,可由一条或多条语句实现 。 21 2) 选择结构(分支结构) 传统流程图 N-S流程图 入口 出口 AB P P AB T F T F 其中:P为分支判断条件; A、B必有一个且只有一个被执行; A、B之一可是空操作,用 表示。 22 3) 循环结构 当型循环先判断后循环,有可能一次也不循环 。 入口 F T P A 当P为真 A 出口 其中:P为循环判断条件; A为要重复执行的操作,称为循环体; 23 直到型循环先循环后判断,至少循环一次。 入口 F T P A A 直到P为真 出口 其中:P为循环判断条件; A为要重复执行的操作,称为循环体; 24 算法举例 例:计算5! (12345) 1t 1i 当i5 tit i+1i 输出 t 1t 1i tit i+1i 直到 i5 输出 t 当型循环 直到型循环 25 结构化程序设计的基本原则: l结构化程序设计的基本原则: 采用自顶向下、逐步细化的方法进行设计; 采用模块化原则和方法进行设计。即将大型 任务从上向下划分为多个功能模块,每个模块 又可以划分为若干子模块,然后分别进行模块 程序的编写; 每个模块都是用结构化程序实现,即都只能 由三种基本结构组成,并通过计算机语言的结 构化语句实现。 26 1.51.5 C C语言的上机操作步骤语言的上机操作步骤 一. 上机过程: 编译 正确 正确 正确 有错误有错误 编辑运行 27 C程序的执行过程 1源程序文件的建立和编辑 编写源程序,形成 .C文件 需用编辑工具:tc.exe、记事本 2编译 编译源程序,形成目标程序 . Obj文件 需用编译工具 :tcc.exe 3连接 连接OBJ文件和调用的库函数,形成运行程 序 .exe 文件 需用连接工具 :tlink.exe 4运行 .exe 文件 28 装载c程序 编辑c程序 运行c程序(ctrl+F9) 正确? 看结果(alt+F5) 运行下一程序? 是 是 否 退出 否 2.上机过 程流程图 : 29 F3(打开源程序) F2(保存当前源程序) F9(编译当前源程序) CTRL+F9(运行当前源程序 ) ALT+F5(查看运行结果) 3.编写、 运行C程序 时常用功 能键 30 三、需要记住的TC中一些常用功能键 F1:帮助。 F2:将当前文件存盘。 F3:装载原有文件或给新文件命名。 F4:程序运行到光标所在行。 F5:放大或缩小活动窗口切换。 F6:开或关活动窗口切换。 F7:单步运行程序,跟踪进入函数内部运行。 F8:单步运行程序,不跟踪进入函数内部。 第一章 1.3 C语言集成开发环境 31 实验报告 实验一 实验目的 实验内容和步骤 1.设计算法,写出程序 2.在TurboC下编辑,得到源程序(.c) 3.编译,得到目标文件(.obj) 4.连接,得到可执行文件(.exe) 5.分析结果 实验体会 32 C程序设计 数据类型、运算符与表达式数据类型、运算符与表达式 33 2.1 2.1 数据类型数据类型 2.2 2.2 常量与变量常量与变量 2.3 2.3 整型数据整型数据 2.4 2.4 实型数据实型数据 2.5 2.5 字符型数据字符型数据 2.6 2.6 变量赋初值变量赋初值 2.7 2.7 混合运算混合运算 2.8 2.8 运算符与表达式运算符与表达式 数据类型、运算符与表达式 CHAPTER 2 34 数据类型、运算符与表达式 的数据类型 v C语言提供的数据结构是以数据类型形式出现的 v 数据在内存中存放的情况有数据类型决定 v 数据的操作要依靠运算符实现,而数据和运算符共同组 成了表达式。 35 数据类型、运算符与表达式 的数据类型 数组类型 数据类型 构造类型 空类型 指针类型 双精度 单精度 实型(浮点型) 字符型 枚举类型 基本类型 整型 结构体类型 共用体类型 36 3.2常量与变量 3.2.1常量和符号常量 1. 常量:在运行过程中,其值不能被改变的量称为常量。 2. 分类:整型 实型 字符 字符串 2. 符号常量,用一个标识符代表的常量。 习惯上,符号常量名用大写,变量用小写,以示区别。 u1,0,123为整型常量 u 4.6, 1.23为实型常量 u a, d 为字符常量 u #define PRICE 255 A=PRICE*A+6 C=PRICE+C/120 PRICE是标识符,符号常量 37 3.2.2 变 量 1. 变量:在程序运行过程中,其值可以改变的量称为变量。 2. 标识符:用来标识变量名、符号常量名、函数名、类型名 、数组名、文件名的有效字符序列称为标识符。 由字母、数字和下划线三种字符组成,且第一个字符 必须为字母或下划线。 u合法的变量名如: average,abd, a, s2, student_name, _init u不合法的变量名:M.D.John, 1a, #33, ab 3. C 语言要求对变量“先定义,后使用”。 38 3.3 整型数据 3.3.1 整型常量 由一系列数字组成。也可带有减号,但不使用加号。 u十进制整数:123,-456,0 u八进制整数:以0开头的数据,如:-011,0123 u十六进制整数:以0x开头的数据,如:0x123 整型常量的分类根据其值的范围而决定其类型, 并可以赋值给类型相匹配的整型变量。 39 3.3.2 整型变量 1.整数数据在内存中的存放形式 数据在内存中是以二进制形式存放的。 例如:3 (0000000000000011)2 要区别:3 和 3 方法是:将符号也数码化 即: 正的符号 用 0 表示 负的符号 用 1 表示 数值是以补码表示的。 正数的补码和其原码的形式相同。 负数的补码:将该数的绝对值的二进制形式,按 位取反再加1 。 3(11111111111111101 )2 40 2.整型变量的分类 整型 int 在内存中以二进制形式存放,每一个整型变量在内存中占2个字节。 短整型 以short int表示或以short表示, 一般与int占有的内存相同。 长整形以long int表示或以long表示,一般占有在内存中字节为int两倍。 无符号型只能存放正整数,它的表示是在上述三种类型之前加上unsigned 类型名称类型符bit取值范围 整型 (短整型) int short int 16 -215215-1 (-3276832767 ) 无符号整型 unsigned int160 216-1 (065535 ) 长整型long int32-231231- 1 无符号长整 型 unsigned long int320 232-1 41 3. 整型变量的定义 对变量的定义一般放在函数的开头部分。 例2.1 main() int a,b,c,d; unsigned u; a = 12; b =24; u =10; c = a+u; d = b+u; printf(“a + u = %d, b + u = % dn”, c, d); a+u = 22, b+u =14 不同类型的数可以直接运算 42 4.整型数据的溢出 main() int a,b; a=32767; b=a+1; printf(“%d,%d”,a,b); 运行结果为 32767,-32768 3.3.3 整型常量的类型 一个整常量,其值在-215215-1内可认为是 int 型,并可赋值 给 int 型和 long int 型变量; 一个整常量,其值在 231 231-1 范围内则认为它是 long int 型,可赋值给一个 long int 型变量; 常量中无 unsigned 型,但一个非负值的整常量可以赋给 unsigned 型整变量; 43 3.4 实型数据 3.4.1 实型常量 1.十进制小数形式(日常记数形式) 1.0 +12.0 -12.0 0.0 2.指数形式(科学记数形式) E(e)。例如3.0 +5等。 3.4.2 实型变量 1类型: 单精度:float,分配4 Byte 双精度:double,分配 8 Byte 2存储: 指数部分指数部分小数部分小数部分 小数的符号位指数的符号位 44 实型数据的类型及规定 类型类型符Byte绝对值 的范 围 有效数字 单精度型 float 4 10-38 1038 67位 双精度型 double810-308 103081516位 u实型常量不分float和double,根据范围赋值给相应的变量。 u如:float a; double b; a=111111.111; b=111111.111 a中实际存储的是111111.1 (7位有效) b中实际存储的是111111.111 (全部有效) 45 3.5 字符型数据 3.5.1字符常量 1. 定义 用一对单引号括起来的单个字符,称为字符常量。 例如,A、等。 2.转义字符 语言还允许使用一种特殊形式的字符常量,就是以反斜杠“ ” 开头的字符序列。 0字符串结束标志 n回车换行 t跳到下一个输出位置 “双引号字符 dd d ddd为1到3位八进制数所代表的字符 xh h hh为1到2位十六进制数所代表的字符 46 3.5.2 字符型变量 字符变量的类型关键字为char,一般占用1字节内存单元。 1.变量值的存储 将一个字符常量存储到一个字符变量中,实际上是将该 字符的ASCII码值(无符号整数)存储到内存单元中。 例如: char ch1, ch2; /*定义两个字符变量:ch1,ch2*/ ch1=a; ch2=b; /*给字符变量赋值*/ a、b的ASCII码为97、98 。 2.特性 1)字符数据在内存中存储的是字符的ASCII码; 2)语言允许字符型数据与整型数据之间通用,可以互相 赋值。 3)字符数据也可以整数形式输出。 47 例1 字符变量的字符形式输出和整数 形式输出。 main() char c1,c2; c1=a; c2=b; printf(“c1=%c,c2=%cn”,c1,c2); printf(“c1=%d,c2=%dn”,c1,c2); 程序运行结果: c1=a,c2=b c1=97,c2=98 48 例2 大小写字母的转换。 main() char c1,c2; c1=a; c2=b; c1=c1-32;c2=c2-32; printf(“%c c2=%cn”,c1,c2); 程序运行结果: A B 49 数据类型、运算符与表达式 字符型数据 3.5.3 字符串常量 u用双引号括起来的字符序列。如: “How do you do”, “CHINA”, “a”, “$ 123.34” 等。 u字符串可以一次输出。如: printf(“How do you do”); uC语言规定:在存储字符串常量时,由系统在字符串的 末尾自动加一个0作为字符串的结束标志。在内存中, 对字符串常量是采用字符数组表示,即用一个字符型数 组来存放一个字符串。 u注意: a是字符常量,“a”是字符串常量,二者不同。 50 综上所述,字符常量A与字符串常量“A“是两回事: (1)定界符不同:字符常量使用单引号,而字符串常 量使用双引号; (2)长度不同:字符常量的长度固定为1,而字符串常 量的长度,可以是某个整数; (3)存储要求不同:字符常量存储的是字符的ASCII码 值,而字符串常量,除了要存储有效的字符外,还要存 储一个结束标志0。 51 3.6 变量赋初值 在变量定义的同时可以为变量赋初值。 如: int a=3; (相当于 int a; a=3;) float f = 3.56; char c = a; int a,b,c = 5 ; 表示只给c赋初值。 (相当于int a,b,c; c = 5;) 52 3.7 各类数值型数据间的混合运算 u不同类型的数据(整型、实型、字符型)可进行混合运算。 如:10 + a + 1.5 8765.1234 * b u必须首先将它们转换成同一类型的数值。 u转换原则是由低向高转换,运算结果为最高级别的类型。 double float long unsigned intchar,short 表示必须要转换 表示由低向高 高 低 53 数据类型、运算符与表达式 混合运算 如:10 +a + i * f - d/e intdouble double double + double 54 例2-5: 已知: float a=2.0; int b =6,c =3; 求解: a*b/c-1.5+ A +abs(-5)=? 12.0/3 4.0 - 1.5 2.5+65(int) 67.5 5 72.5 第二章 2.3 运算符和表达式 55 3.8 算术运算符和算术表达式 1.基本的算术运算: 、*、% % 是模运算,即求余运算,要求整数。 如:7%4的结果是3。 说明: 5/3的结果仍是整数,小数部分被忽略。 5.3/3或5/3.0的结果为double型。 C编译系统将实型常量作为双精度来处理。如果参加、*、/ 运算的两个数中有一个数为实数,则结果是double型。 2.算术表达式:用算术运算符将运算对象按C的语法规则连接起的式子。 例如:a * b/c1.5+a 优先级(算术运算): () * / % + 在同一级别中,采取由左至右的结合方向。 如:a-b+c 相当于 (a-b)+c 56 3.强制类型转换运算符可将一个表达式转换成所需类型。 其一般形式为:(类型名)(表达式) 例如:(double) a (int) (x+y) (float) (5%3) 在强制类型转换时,得到一个所需类型的中间变量,原 来变量的类型未发生变化。 57 练习 main( ) int i; float x; x=3.6; i=(int)x; printf(“ x=%f,i=%dn“,x,i); 58 数据类型、运算符与表达式 运算符和表达式 4.自增、自减运算符 使变量的值加1或减1。 如:i, i 在使用i之前,先使i的值加(减)1 i, i 在使用i之后,再使i的值加(减)1 例如:i的值为3,则 j= + + i; j的值为4,i的值为4 j= i + +; j的值为3,i的值为4 又如: printf(“%d”, +i); 输出结果为4 printf(“%d”,i+); 输出结果为3 单独使用时, i , i 等价 59 第二章 2.3 运算符和表达式 结合性:自右向左 例: i = 2; j = -i+; 分析: (1)+、-、+、-是同级运算符,结合方向:自右向左自右向左。 (2) -i+等价于 -(i+) (3) 对于括号内的自增运算,要先使用i,再使i增加1。 运算结果: i的值为3,j的值为-2。 60 练习 la=1,b=2,c=3,d=4 l下列式子的值分别是多少? la*b/c la*b%c+1 l+a*b-c- 61 3.9 赋值运算符和赋值表达式 1.赋值运算符:“=” 。 2.复合赋值运算:在赋值符号前加上其它运算符号。 +=,-=,*=,/=,%=,=, 等价于a = a + 3; x * = y + 8; 等价于x = x * ( y + 8 ); x % = 3; 等价于x = x % 3; l赋值运算符仅优先于“,” ,且具有右结合性 例如: a= b= b*c 等价于:a= (b=(b*c) ) l赋值号与数学中的等号含义不同 例如:数学中 a=b 等价于 b=a C语言中 a=b 不等价于 b=a 62 3.赋值运算中的类型转换 l l = 小数部分自动补小数部分自动补0 0 l l = 自动舍去实型表达式的小数部分(自动舍去实型表达式的小数部分(注意不进行四舍五入注意不进行四舍五入) l l = l l = 自动截取表达式值的低字节赋值,舍去高字节自动截取表达式值的低字节赋值,舍去高字节 l l = l l = 自动给高字节补自动给高字节补0 0 或或补补1 1 63 数据类型、运算符与表达式 运算符和表达式 4.赋值表达式: 由赋值运算符将一个变量和一个表达式连接 起来的式子。 一般形式为: u例如:int a=12;求下列运算的结果 aaa * a aaa * a=12-12 * 12=-132) a-132aa(-132)=(-132)+(-132)=-264 a=-264 64 练习 lint i=1,j=2,k=3,m=4; l计算下列式子的值 li+=j+k lj*=k=m+5 65 数据类型、运算符与表达式 运算符和表达式 3.10 逗号运算符和逗号表达式 u逗号运算符又称为“顺序求值运算符”,是所有运算符中 级别最低的,它将两个表达式连接起来。 一般形式为: 表达式1,表达式2 u求解过程是:先求解表达式1,再求解表达式2,整个逗 号表达式的值是表达式2的值。 例如: a=3*5, a*4; a的值为15,表达式的值为60 (a=3*5, a*4), a+5; a的值为15, 表达式的值为20 又如: x=(a=3, 6*3); x的值为18 x=a=3, 6*a x的值为3, 表达式的值为18 66 第4章 最简单的C程序设计 顺序程序设计 67 1 C1 C语句概述语句概述 2 2 赋值语句赋值语句 3 3 数据的输入输出数据的输入输出 4 4 字符数据输入输出字符数据输入输出 5 5 格式输入输出格式输入输出 7 7 程序举例程序举例 68 4.1 C语句概述 用C语言编写的程序称为C语言源程序,简称C程序。 C语言一般由一个或若干个函数组成,而这些函数可以保存在一个 或几个源程序中,这些文件都以.C作为文件扩展名。 例 求园的面积 #DEFINE PI=3.1415926 main() float r,s; r = 20; s = r * r * PI; printf (“area=%f ”,s); area=1256.637 C程序 源程序文件1源程序文件i源程序文件n 预编译命令 函数1 函数n 变量申明部分执行部分(语句) 语句是计算 机执行的最 小单位 69 C语句分类 和其他高级语言一样,C语言的语句也是用来向计算机发出操作命令 的。一条语句经过编译后生成若干条机器指令。在C语言中只有可执行 语句,没有非执行语句。 C语句有以下五类: 控制语句,完成一定的控制功能; if( ) else (条件语句) for( ) (循环语句) while( ) (循环语句) do while ( ) (循环语句) continue (结束本次循环语句) break (中止执行switch或循环语句) Switch (多分支选择语句) goto (转向语句) return (从函数返回语句) 70 函数调用语句,由一次函数调用加一个分号构成一个语句, 如:printf (“This is a C statement.”); 表达式语句,由一个表达式构成一个语句, 如: a=3 (是表达式,不是语句) a=3; (是语句) 空语句,只有一个分号,什么也不做; 复合语句,用 把一些语句括起来成为复合语句。相当一条语句, 哪里有语句,哪里就可用复合语句。 if (ab) max=a; min=b; 复合语句最后一个语句中最后的分号不能忽略不写。 71 4.2 赋值语句 u 赋值表达式后面加上分号,构成赋值语句。 u 功能:将数据赋给变量。 如: x=3.1; a=d+ 123 + b/d; u 程序中基本的命令行必须是一个语句,表达式不能单独构成语句。 例如: d+ 123 + b/d 是一个表达式 a =d+ 123 + b/d;是一个赋值语句 特点: C语言中的赋值号“ = ”作为赋值运算符; 作为赋值表达式可以被包括在其他表达式之中; if(ab)0) t=a; 赋值语句可以连接赋值; a=b=c=2; 72 4.3 数据输入输出的概念 1. 所谓输入输出是以计算机主机为主体而言的。主机向外部 设备 “输出” ,外部设备向主机“输入”。 2.C语言本身不提供输入输出语句,输入和输出操作是由函 数实现。 C语言通过调用四个系统函数来实现输入输出。 printf(),scanf(),getchar(), putchar() 3.在使用C语言库函数时,要用到预编译命令“#include”将有 关的“头文件包括到用户源文件中。 在调用标准输入输出库函数时,文件开头应有以下预编译命 令: #include 或 #include”stdio.h” 73 4.4 字符数据的输入输出 1.字符输出函数putchar() 向终端输出一个字符。 如:putchar(c); 输出变量c的值,c可以是字符型变量或整型变量。 例3.1 #include “stdio.h” main() char a,b,c; a= B; b= O;c= Y; putchar(a);putchar(b);putchar(c); BOY 74 也可以输出控制字符,如putchar(n)输出一个换行符。 u 输出其它转义字符 putchar(101); 输出 A; putchar(); 输出单引号 putchar(015); 使输出回车,不换行 例3.2 #include main() char a,b,c; a= B; b=O;c=Y; putchar(a); putchar(n); putchar(b); putchar(n); putchar(c); putchar(n); B O Y 75 2.字符输入函数getchar() 从终端(或系统隐含指定的输入设备)输入一个字符。 一般形式为: getchar(); 函数的值就是从输入设备得到的字符 例 #include “stdio.h” main() char c; c=getchar(); putchar(c); a a 76 例从键盘上输入一个大写字母,分别用大小 写字母形式输出,同时输出它们的ascii码。 #include “stdio.h” main() char c1,c2; c1=getchar(); printf(“%c,%dn”,c1,c1); c2=c1+32; printf(“%c,%dn”,c2,c2); A A ,65 a ,97 77 4.5格式输入与输出函数 1.格式输出函数printf() 按规定格式向终端输出若干个任意类型的数据。 一般格式: printf(控制格式,输出列表) 被输出的数据,可以 是常量、变量、表达式 用双引号括起的转换控制字 符串,它包括两种信息: 格式说明, 由%开始。如:%d,%f,%c 普通字符,要输出的字符 printf(“%d %d”,a,b) 格式说明 输出列表 printf(“ a=%d b=%d”,a,b); 控制格式 输出列表 78 printf()格式字符 格式 字符 说 明 d, i以带符号的十进制形式输出整数 (正数不输出符号) o以8进制无符号形式输出整数(不 输出前导符0) x, X以16进制无符号形式输出整数( 不输出前导符0x) u以无符号10进制形式输出整数 c以字符形式输出,只输出一个字 符 s输出字符串 f以小数形式输出单、双精度数, 隐含输出6位小数 e, E以标准指数形式输出单、双精度 数,数字部分小数位数为6位 g, G选用%f或%e格式中输出宽度较 短的一种格式,不输出无意义的0 79 printf()附加格式说明字符 字符说 明 字母l用于长整型整数,可加在格式符d、o、x、u前 面 m(代表一个正 整数) 数据最小宽度 .n(代表一个正 整数) 对实 数,表示输出n位小数;对字符串,表示 截取的字符个数 -输出的数字或字符在域内向左靠 例如: %ld 输出十进制长整型数 %m.nf 右对齐,m位域宽,n位小数或n个字符 %-m.nf 左对齐 80 例1. main() int x1=123; long x2=123456; printf(“x1=%d,x1=%5d,x1=%-5d,x1=%2dn“, x1,x1,x1,x1); printf(“x2=%ld,x2=%8ld,x2=%5ldn“,x2,x2,x2); 程序运行结果如下: x1=123,x1=123,x1=123,x1=123 x2=123456,x2=123456,x2=123456 81 例例2. 2. main( )main( ) intint m=-1; long n=123456789; m=-1; long n=123456789; printfprintf(“m= %d, %o, %x, %un“,m,m,m,m);(“m= %d, %o, %x, %un“,m,m,m,m); printfprintf(“n=%dn“,n);(“n=%dn“,n); printfprintf(“n=%ldn“,n);(“n=%ldn“,n); 程序输出:程序输出: 1122 a=11, b=22 m= -1, 177777, ffff, 65535 n=-13035 n=123456789 82 例3. main( ) float f=123.456; double d1,d2; d1=1111111111111.111111111; d2=2222222222222.222222222; printf(“%f,%12f,%12.2f,%- 12.2f,%.2fn“,f,f,f,f,f); printf(“d1+d2=%fn“,d1+d2); 程序运行结果如下: 123.456001,123.456001,123.46,123.46 ,123.46 d1+d2=3333333333333.333010 对于实数,也可使用格式符%e,以标准指数 形式输出:尾数中的整数部分占一位,小数点占 一位,尾数中的小数部分占5位;指数部分占4位 (如e-03),共计11位。 也可使用格式符%g,让系统根据数值的大小 ,自动选择%f或%e格式、且不输出无意义的零。 83 最简单的C程序设计 数据输出 在使用printf()函数时要注意: 1. 有些系统要求格式字符必须用小写字母; 2. 格式控制符中,可包含转义字符; 3. 格式说明必须以“ % ”开头; 4. 欲输出字符 % 则应在“格式控制”字符串中用连 续两个 % 表示。 5. 5. 不同的系统在实现格式输出时,输出结果可 能会有一些小的差别。 84 2.格式输入函数scanf() 把从输入设备输入的数值按先后顺序存入在内存的 地址中去。 u 一般格式: scanf(格式控制,地址列表) 例 main() int a,b,c; scanf(“%d%d%d”, printf(“%d,%d,%d”,a ,b ,c); 3 4 5 3,4,5 85 最简单的C程序设计 数据输入 scanf()格式字符 格式字 符 说 明 d, i用来输入十进制整数 o用来输入8进制整数 x, X用来输入16进制整数 c用来输入单个字符 s用来输入字符串,将字符串送到一个字符数组 中,在输入时以非空白字符开始,以第一个空 白字符结束。字符串以串结束标志 0 作为其 最后一个字符。 f用来输入实数,可以用小数形式或指数形式输 入 e, E, g, G 与 f 作用相同,e 和 f、g 可以互相替换 86 最简单的C程序设计 数据输入 scanf()附加格式说明字符 字符说 明 字母l用于输入长整型数据(可 用%ld、%lo、%lx),以 及double型数据(用%lf或 %le) 字母h用于输入短整型数据(可 用%hd、%ho、%hx) 域宽 (为一 正整数 ) 指定输入数据所占宽度( 列数) *表示本输入项在读入后不 赋给 相应的变量 87 在使用scanf()函数时要注意: uScanf()函数中的“格式控制”后面应当是变量地 址; u如果在“格式控制”字符串中除了格式说明以外 还有其他字符,则在输入数据时应输入与这些 字符相同的字符; u在用“%c”格式输入字符时,空格字符和“转义 字符”都作为有效字符输入; u在输入数据时,遇到以下情况时该数据认为结 束: 遇空格,或按回车; 遇指定的宽度结束,如“3d”,只取3列; 遇非法输入 88 例 输入三角形的边长,求三角形的面积。 area = s*(s-a)*(s-b)*(s-c) s = (a+b+c)/ 2 #include “stdio.h“ #include “math.h“ main() float a,b,c,s,area; scanf(“%f,%f,%f“, s = 1.0/2 * (a+b+c); area = sqrt(s*(s-a)*(s-b)*(s-c); printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2fn“, a,c,b,s); printf(“area=%7.2fn“,area); 3,4,6 a= 3.00, b= 4.00, c= 6.00, s= 6.50 area= 5.33 4.6 顺序结构程序设计举例 89 第五章 选择结选择结 构程序设计设计 关系运算符和关系表达式 逻辑运算符和逻辑表达式 If语句三种形式 条件运算符 Switch语句 90 5.1 关系运算符和关系表达式 1.关系运算符 u关系运算实际上是两个量的比较,比较的结果只有两种可能: 真(1)、假(0)。 例如: a 3 ? 当a=5时,比较的结果为真; 当a=1时,结果为假。 uC语言提供6种关系运算符 (大于) = (大于或等于) = 相等 != 不等 91 2.关系表达式 u用关系运算符或者等式运算符将两个表达式连接起来,叫关系表达式。 u合法的关系表达式: ab、 a+bb+c、 (a=3)(b=5)、 (a=3)(b=5)、 ab)(b=0的值为真(在计算机中记为1)。 u例:a=3, b=2, c=1, 则: (1)ab的值为1 (2)(ab)=c的值为真(即1) (3)b+cb中d的值为ab的值,为。 (5)f=abc中f的值为c的值,为。 92 关系、等式和逻辑运算符 关于优先次序 u,=为同一级别, =和!=为同一级别。 u在同一级别中,采取由左至右的结合方向。 u 算术运算符 关系运算符 赋值运算符 高 低 例 ca+b c(a+b) ab!=c (ab)!=c a=bc a = (bc) 等式运算符 93 5.2 逻辑运算符 u逻辑运算:产生真假值的运算。 u逻辑运算符: 98 选择结构程序设计 if语句 if 语句的三种形式 2. if 语句1 else 语句2 条件满足时,执行语句1,然后继续执行if以下的语句。 条件不满足时,执行语句2,然后继续执行if以下的语句。 表达式 语句1语句2 真假 P Y N A B 例如:输出两个数中较大的一个。 if (xy) printf(“%d“,x) ; else printf(“%d“,y); 99 选择结构程序设计 if语句 if 语句的 第三种形式 if 语句1; else if 语句2; else if 语句3; else if 语句4; else 语句5 表达式1 表达式2 表达式3 表达式4 语句1语句2语句3语句4语句5 假 假 假 假 真 真 真 真 10 0 选择结构程序设计 if语句 例如:商场促销,购物500元以上,8折;购物300元以上,85折; 购物100元以上,9折;购物50元以上,95折;购物50元以 下,不打折。根据消费量,计算优惠率。 设:消费量为 money; 折扣为 cost; 实际花费 price if (money500) cost=0.2; else if (money300) cost=0.15; else if (money100) cost=0.1; else if (money50) cost=0.05; else cost=0; price=money-(money*cost); 10 1 选择结构程序设计 if语句 If 语句的嵌套 u嵌套的定义:在if 语句中又包含一个或多个if 语句。 u嵌套的一般形式: If ( ) if ( ) 语句1 else 语句2 Else if ( ) 语句3 else 语句4 (注意! If 与else的配对关系。) 10 2 例 比较两个整数的关系。 #include main( ) int x, y; printf (“Enter integer X and Y:“); scanf (“%d%d“, if ( x != y ) if ( x y ) printf (“XYn“); else printf (“Xb) t=a; a=b; b=t; printf(“%5.2f,%5.2f“,a,b); 输入为 3.6, -3.2 输出为 -3.20, 3.60 10 4 例 输入三个数,按由小到大次序排列并输出。 main() flaot a,b,c,t; scanf(“%f,%f,%f“, if (ab) t=a;a=b;b=t; if (ac) t=a;a=c;c=t; if (bc) t=b;b=c;c=t; printf(“%5.2f,%5.2f,%5.2f“,a,b,c); 输入为: 3,7,1 输出为: 1.00, 3.00, 7.00 10 5 选择结构程序设计 程序举例 例 写一程序判断某一年是否是闰年. main() int year,leap; printf(“输入年份:“); scanf(“%d“, if (year%4=0 else leap=0; if (leap) printf(“%d is leap yearn“,year); else printf(“%d is not leap yearn“,year); 输入年份:2004 2004 is leap year 10 6 选择结构程序设计 if语句 条件运算符 umax=(ab)?a:b; 条件表达式 当(ab)为真时,表达式取a的值 当(ab)为假时,表达式取b的值 u条件运算符是三目运算符 表达式1 ? 表达式2 : 表达式 3 u条件运算符的结合方向为“从右向左“ 例如: ab?a:cd?c:d 相当于 ab?a:(cd?c:d) 如果a=1,b=2,c=3,d=4,则条件表达式的值为4。 10 7 选择结构程序设计 if语句 main() int x, y; scarf(“%d“, if (x=0) y=0; else if (x0) y=1; else y=-1; print(“x=%d, y=%dn“, x, y); 例 -1 (x0) 开始 输出Y 结束 输入X X = A 语句可以是简单的,也可以是复 合的; 循环体中应有使循环趋向于结束 的语句。 表达式 语句 0 非 0 11 8 例 求1+2+3+.+100 。 main() int i=1,sum=0; while (i100 sum=sum+i i+ 输出 sum 12 1 6.5 for 语句 在C语言中用 for 语句构成的循环最为灵活。 u一般形式: for(表达式1;表达式2;表达式3)语句 u执行过程: u例:for (i=1;ib else printf(“%d is not a primen“,m); 或一个数x在2,sqrt(x)范围内没有因子,我们就称其为素数(质数)。 k=sqrt(m); 12 9 例 打印出100到200之间所有的素数。 #include “math.h“ main() int m, i, k,n=0; for (m=101;mk) printf(“%d n“,m); n=n+1; if(n%10=0) printf(“n”); printf(“n”); 13 0 例 用/41-1/3+1/5-1/7+的公式求的近似值,直到最后一项的绝 对值小于10-6为止。 #include “math.h“ main() int s; float n, t, pi; t=1; pi=0; n=1.0; s=1; while (fabs(t)=1e-6) pi=pi+t; n=n+2; s=-s

温馨提示

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

评论

0/150

提交评论