第2章最简单的C程序设计-顺序程序设计.ppt

上传人:本田雅阁 文档编号:2252435 上传时间:2019-03-11 格式:PPT 页数:64 大小:1.07MB
返回 下载 相关 举报
第2章最简单的C程序设计-顺序程序设计.ppt_第1页
第1页 / 共64页
第2章最简单的C程序设计-顺序程序设计.ppt_第2页
第2页 / 共64页
第2章最简单的C程序设计-顺序程序设计.ppt_第3页
第3页 / 共64页
亲,该文档总共64页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第2章最简单的C程序设计-顺序程序设计.ppt》由会员分享,可在线阅读,更多相关《第2章最简单的C程序设计-顺序程序设计.ppt(64页珍藏版)》请在三一文库上搜索。

1、1,C语言的数据类型(Data Type),字符型(char) 整型(short,int,long,unsigned) 基本类型 数值类型 单精度型(float) 实型 双精度型(double) 枚举类型(enum) 数据类型 数组类型( ) 构造类型 结构体类型(struct) 共用体类型(union) 指针类型(*) 空类型(void),2,流程图,流程图是描述算法过程的一种图形方法。直观、形 象、易于理解,美国国家标准化协会规定的流程图 表示的基本图形符号如下:,开始或结束框 输入输出框 条件判断框 处理框 流程线,3,程序的三种基本结构,结构化程序设计的一个基本思想是任何算法和程序都可

2、以归结为三种基本结构: 顺序结构、选择结构、循环结构 以此三种基本结构,可以通过适当的组合、嵌套来 构造出各种复杂的程序,并能保证结构清晰、可读 性强。,4,顺序结构,顺序结构:自上向下,无分支,无转移 顺序结构是最简单、常用结构。算法的每一个操作 都是按从上到下的线性次序来执行的。,顺序结构流程图,A,B,5,选择结构:有分支,需条件判断 选择结构又称为分支结构,根据给出的条件,选择执行一 个分支。因此,在选择结构中,必然包含条件判断,它是 需要过一个条件判断的操作,来选择执行一个分支的算法 结构。,选择结构流程图,条件?,A,B,不成立,成立,选择结构,6,循环结构,循环结构: 有转移,某

3、些语句可重复执行 循环结构又称重复执行结构,它根据给定的条件,判断是否 重复执行某一组操作,有两种循环结构: 1)当循环:先判断条件,若成立再执行循环的语句,再返 回初始判断;若不成立则跳过循环语句。,循环结构流程图,7,循环结构流程图,循环体,T,F,条件?,2)直到循环:首先执行一组要循环的语句,然后再判 断条件是否成立,若成立就返回,重复执行这组循环体 并继续判断条件;若不成立,则跳出此循环语句,向后 执行。,8,C语句概述,简单的C程序结构,#include main(), int num ; num=1; printf(“num is %d n”,num); ,函数头,编译预处理,函

4、数名,函数体,声明语句,赋值语句,函数调用语句,9,C程序结构图,10,C语句分为以下5类:,C语句概述,控制语句 函数调用语句 表达式语句 空语句 复合语句,5类,11,C语句概述,控制语句。完成一定的控制功能。 1 if() else (条件语句,用来实现选择结构) 2 for() (循环语句,用来实现循环结构) 3 while() (循环语句,用来实现循环结构) 4 do while(); (循环语句,用来实现循环结构) 5 continue (结束本次循环) 6 break (终止执行swtich或循环语句) 7 switch() (多分支选择结构) 8 goto 转向语句,现已基本不

5、使用 9 return (从函数返回语句),12,C语句概述,函数调用语句。由一个函数调用加一个分号构 成一个语句。 printf(“This is a C statement.“); scanf(“%d%d“,13,C语句概述,表达式语句。由一个表达式加一个分号构成。 C语言中有使用价值的表达式语句主要有3种: (1)赋值语句。 例如: sum=a+b; (2)自动增1、减1运算符构成的表达式语句。例如: i+; i=i+1 (是表达式,不是语句) i=i+1 ;(是语句) (3)逗号表达式语句。例: x=1,y=2;,14,C语句概述,空语句。只有一个分号的语句 (什么也不做)。 一般和后

6、面章节所讲循环语句结合使用起到延时作用。,;,15,C语句概述,复合语句。用一对 括起来的语句。 例: z=x+y; t=z/100; printf(“%f”,t); ,16,赋值表达式和赋值语句,赋值表达式 赋值语句是由赋值表达式加上一个分号构成。 例:a=100 赋值表达式 a=100; 赋值语句 1.赋值运算符 “”是赋值运算符 作用是将一个数据赋给一个变量 也可以将一个表达式的值赋给一个变量。 例如:sum=a+b,17,赋值表达式和赋值语句,2.复合的赋值运算符 在赋值符“”之前加上其他运算符,可以构成复合的运算符 a+=3 等价于 a=a+3 x*=y+8 等价于 x=x*(y+8

7、) x%=3 等价于 x=x%3 x%=y+3 等价于 ?,凡是二元运算符都可以与赋值符一起组合成复合赋值运算符(+=、-=、*=、/=、%=等) 。,18,3.赋值表达式的写法 赋值表达式:将一个变量和一个表达式连接起来的式子。 例:a=5 赋值表达式求解的过程是:先求赋值运算符右侧的表达式的 值,然后赋给赋值符左侧的变量。 例如: 赋值表达式“a=3*5”的值为15,执行表达式后,变量a 的值也是15。 注意:一个表达式应该有一个值。,赋值表达式和赋值语句,19,注意: 左值 (lvalue) : 赋值运算符左侧的标识符。 右值 (rvalue) :出现在赋值运算符右侧的表达式 。 变量可

8、以作为左值 而表达式就不能作为左值(如a+b) 常量也不能作为左值,赋值表达式和赋值语句,a=b a=5 a=b+c,20,3.赋值表达式的写法 赋值表达式中的“表达式”,又可以是一个赋值表达式。 例如: a=(b=5) 分析: 括弧内的b=5是一个赋值表达式,它的值等于5。 执行表达式a=(b=5)相当于执行: b=5和ab两个赋值表达式。,赋值表达式和赋值语句,a=b=c=5 a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2),自右向左,21,3.赋值表达式的写法 赋值表达式可以包含复合的赋值运算符。 例如:若a=12, a+=a-=a*a 结果是? 另外,赋值表

9、达式还可以出现在输出语句中, printf(“%d”,a=b); 若b=3时,结果?,赋值表达式和赋值语句,22,变量赋初值 定义变量后,对变量初始化。 int a=3; /*定义a为整型变量,初值为3*/ float f=3.56 /*定义f为浮点型变量,初值为3.56*/ char c=a /*定义c为字符变量,初值为a */ int a,b,c=5; /*但只对c初始化为5 */ int a=3,b=3,c=3; int a=3,b=3,c; int a=3; /相当于 int a; a=3;,赋值表达式和赋值语句,23,(1) 所谓输入输出是以计算机主机为主体而言的 从计算机向输出设备

10、(如显示器、打印机等)输出数据称为输出。 从输入设备(如键盘、磁盘、光盘、扫描仪等)向计算机输入数据称为输入。 (2) C语言本身不提供输入输出语句 输入和输出操作是由C标准函数库中的函数来实现的。 常用库函数: printf 格式输出函数 scanf 格式输入函数 putchar 输出字符函数 getchar 输入字符函数 puts 输出字符串函数 gets 输入字符串函数,数据输入输出的概念及在C语言中的实现,24,(3)在使用系统库函数时,要用预编译命令“#include”将有关 的“头文件”包括到用户源文件中。 例如:在调用标准输入输出库函数时,文件开头应该有: #include “s

11、tdio.h” 或: #include ,数据输入输出的概念及在C语言中的实现,头文件,stdio是standard input & output的缩写,25,字符输出函数 putchar ( c) 向显示器输出一个字符c的值,c可以是字符变量或整型变量 字符输入函数 getchar ( ) 无参数 向计算机输入一个字符,函数值为从输入设备接收的字符,字符数据的输入输出,26,用putchar函数输出一个字符 例 先后输出BOY三个单字符。 解题思路: 定义3个字符变量,分别赋以初值B、O、Y 用putchar函数输出这3个字符变量的值,字符数据的输入输出,27,#include void m

12、ain ( ) char a=B,b=O,c=Y; putchar(a); putchar(b); putchar(c); putchar (n); ,/向显示器输出字符B,/向显示器输出换行符,putchar(a);putchar(n); putchar(b);putchar(n); putchar(c);putchar(n);,/向显示器输出字符O,/向显示器输出字符Y,28,用getchar()函数输入一个字符 例 输入单个字符。 #include void main() char c; c=getchar(); /* 从键盘输入一个字符,送入字符变量c */ putchar(c); p

13、utchar(n); /* 换行*/ ,字符数据的输入输出,运行程序: 从键盘输入字符a ,按Enter键,字符才送入内存,屏幕上将显示输出的字符a,29,用printf函数输出数据 用scanf函数输入数据,简单的格式输入与输出,30,用printf函数输出数据,简单的格式输入与输出,1.printf函数的一般格式 printf(格式控制,输出表列) 例如: printf(”i=%d,c=%cn”,i,c);,31,用printf函数输出数据,简单的格式输入与输出,例如: printf(”i=%d,c=%cn”,i,c);,“格式控制”是用双撇号括起来的字符串,也称“转换控制字符串”,它包括

14、两种信息:格式说明和普通字符。 1、格式说明:由“%”和格式字符组成,如%d,%f等。作用是将输出的数据转换为指定的格式输出。 2、普通字符:需要原样输出的字符。 例如前面printf函数中双撇号内的字母、逗号、空格和换行符。,32,用printf函数输出数据,简单的格式输入与输出,例如: printf(”i=%d,c=%cn”,i,c);,“输出表列”是需要输出的一些数据,可以是常量、变量或表达式。,可以是常量、变量或表达式,33,用printf函数输出数据 2.基本的格式字符 (1) d格式符%d :输出一个有符号的十进制整数。 (2) i (integer)格式符%i:作用与d格式符相同

15、。 (3) c (character)格式符%c:输出一个字符。 例: char ch=a; printf(“%c”,ch); 注意: 一个在0255范围内的整数,也可以用“%c”使之按字符形式 输出;反之,一个字符数据也可以用整数形式输出。,简单的格式输入与输出,34,用printf函数输出数据 例 字符数据的输出 #include void main() char c=a; int i=97; printf(“%c,%dn”,c,c); printf(“%c,%dn”,i,i); ,简单的格式输入与输出,35,用printf函数输出数据 (4) s格式符%s:输出一个字符串。 例如:pri

16、ntf(“%s”, “CHINA”); (5) f格式符%f:以小数形式输出实数(包括单双精度),不 指定字段宽度,整数部分全部输出,并输出6位小数。 举例: printf(“%f”, 59.320); 输出结果: 59.320000,简单的格式输入与输出,36,用printf函数输出数据 例 输出实数时的有效位数 #include void main() float x,y; x=111111.111;y=222222.222 printf(“%fn”,x+y); ,简单的格式输入与输出,37,用printf函数输出数据 例 输出双精度时的有效位数 #include void main()

17、double x,y; x=11111111.11111111; y=22222222.22222222; printf(“%fn”,x+y); ,简单的格式输入与输出,38,用printf函数输出数据 (6) e格式符。指定以指数形式输出实数。 %e,VC+给出小数位数为6位,指数部分占5列 小数点前必须有而且只有1位非零数字。 例如: printf(”%e”,123.456); 输出:1.234560e+002,简单的格式输入与输出,39,用scanf函数输入数据 1. scanf 函数的一般形式 scanf(格式控制 ,地址表列),简单的格式输入与输出,40,用scanf函数输入数据 例

18、 scanf函数输入数据 #include void main() int a,b,c; scanf(“%d%d%d”, ,简单的格式输入与输出,3 4 5 (输入a、b、c的值,用一个空格间隔) 3,4,5 错 a=3 b=4 c=5 错,41,用scanf函数输入数据 scanf(“%d%d%d”, %d%d%d表示按十进制整数形式输入3个数据。输入数据时,在两 个数据之间以一个或多个空格间隔,也可以用Enter键、Tab键间隔。 下面的输入均合法: 3(空格)4 (空格) (空格) 5 3 4 5 3(按Tab键)4 5 说明: &是取地址运算符, &a指变量a在内存中的地址 作用:按地

19、址存入a、b、c的值。,简单的格式输入与输出,42,用scanf函数输入数据 2.格式说明 (1)scanf函数中的“格式控制”后面应当是变量地址,而不应 是变量名。 scanf(”%d%d%d”,a,b,c); 错 scanf(”%d%d%d”, 对,简单的格式输入与输出,43,用scanf函数输入数据 2.格式说明 (2)如果在“格式控制”字符串中除了格式说明以外还有其他字 符,则在输入数据时在对应位置输入与这些字符相同的字符。 scanf(“a=%d,b=%d,c=%d“, 1 3 2 a=1 b=3 c=2 a=1,b=3,c=2,简单的格式输入与输出,对,错,错,44,用scanf函

20、数输入数据 2.格式说明 (3) 用%c 格式输入字符,空格字符和转义字符都作为有效输 入。例如: scanf(”%c%c%c”, abc a b c,简单的格式输入与输出,对,错,45,用scanf函数输入数据 2.格式说明 (4) 在输入数值数据时,若遇到空格、回车、Tab键或非法输 入,认为该数据结束。例如: scanf(”%d%c%f”, 若输入 1234a123o.26 (5) unsigned型变量所需的数据,可以用%u或%d格式输入。,简单的格式输入与输出,46,输出数据格式控制 (1) %md。m为输出数据的宽度。如果数据位数小于m,左端补以空格;如果实际长度大于m,则按实际长

21、度输出,同%d一样。 例: printf(“%4d,%4d” , a , b); 若a= 123,b=12345,则输出结果: (空格) 123,12345 (2) %ld,输出长整数类型(long型)。 %mld,以指定宽度,输出长整数类型(long型)。 举例:printf(“data=%8ld”, 12345); 输出结果: data=(空格)(空格)(空格)12345,较复杂的输入与输出格式控制,47,输出数据格式控制 (3) %o。以八进制整数形式输出。输出的数值不带符号,符 号位也一起作为八进制数的一部分输出。 例:int a= -1; printf(“%d,%o“,a,a); -

22、1在内存单元中的存放形式(以补码形式存放)如下: 1111111111111111 输出为: -1,177777 不会输出带负号的八进制整数。,较复杂的输入与输出格式控制,48,输出数据格式控制 (4) %x。以十六进制数形式输出整数。同样不会出现负的十 六进制数。 例: int a= -1; printf(“%x,%o,%d”,a,a,a); 输出结果为: ffff,177777,-1 可以用“%lx”输出长整型数,也可以指定输出字段的宽度。 例: “%12x”,较复杂的输入与输出格式控制,49,输出数据格式控制 (5) %u。用来输出unsigned型数据,以十进制整数形式输出。 一个有符

23、号整数(int型)也可以用%u格式输出; 一个unsigned型数据也可以用%d格式输出; unsigned型数据也可用%o或%x格式输出。 (6) %mc:用来指定输出字符数据的宽度。 例如:c=a; printf(“%3c”,c);,较复杂的输入与输出格式控制,50,输出数据格式控制 (7) %ms,m为输出数据的宽度。如果字符串有效长度小于 m,左端补以空格;如果长度大于m,则字符串全部输出, 同%s一样。 %-ms,m为输出数据的宽度。如果字符串有效长度小于 m,右端补以空格;如果长度大于m,则字符串全部输出, 同%s 一样。 %m.ns:输出共占m列,但只取字符串左端n个字符。 这n

24、个字符输出在m列的右侧,左端补空格。,较复杂的输入与输出格式控制,51,输出数据格式控制 例 字符串的输出 #include void main ( ) printf(“%3s,%7.2s,%.4s,%-5.3sn“,“CHINA“,“CHINA“, “CHINA“,“CHINA“); ,较复杂的输入与输出格式控制,52,输出数据格式控制 (8) %m.nf。指定输出的数据共占m列,其中有n位小数。如 果数值长度小于m,则左端补空格。 %-m.nf与%m.nf基本相同,只是使输出的数值向左端靠 齐,右端补空格。,较复杂的输入与输出格式控制,53,输出数据格式控制 例 输出实数时,指定小数位数。

25、 #include void main() float f=123.456; printf(“%f_ _%10f_%10.2f_ _%.2f_ _%-10.2f n“ , f,f,f,f,f); ,较复杂的输入与输出格式控制,54,输出数据格式控制 例 求3个圆的周长,输出结果时上下按小数点对齐,取2位 小数。 #include #define PI 3.1415926 void main ( ) double r1=1.53,r2=21.83,r3=123.71,s1,s2,s3; s1=2.0*PI*r1; s2=2.0*PI*r2; s3=2.0*PI*r3; printf(“r1=%1

26、0.2fnr2=%10.2fnr3=%10.2fn“, r1,r2,r3); ,较复杂的输入与输出格式控制,定义变量同时赋予初值,55,输出数据格式控制 (9) %m.ne和%-m.ne。m、n和“-”字符的含义与前相同。 此处n指拟输出的数据的小数部分(又称尾数)的小数位数。 若f=123.456,则: printf(“%e_ _%10e_ _%10.2e _ _%.2e _ _%-10.2e“,f,f,f,f,f); 输出如下: 1.234560e+002 _ _1.234560e+002 _ _ _1.23e+002 _ _ 13列 13列 10列 1.23e+002 _ _1.23e+

27、002_ 9列 10列,较复杂的输入与输出格式控制,56,输出数据格式控制 (10) %g。用来输出实数。它根据数值的大小,自动选f格 式或e格式(选择输出时占宽度较小的一种),且不输出 无意义的零。 例: 若f=123.468,则 printf(“%f_ _%e_ _%g”,f,f,f); 输出如下: 123.468000 _ _1.234680e+002 _ _123.468 10列 13列 10列,较复杂的输入与输出格式控制,57,输出数据格式控制 printf函数的说明: 除了X,E,G外,其他各式字符必须用小写。 可以在printf函数中的“格式控制”字符串中包含转义字符。 一个格式

28、说明必须以“%”开头,以d,o,x,u,c,s,f,e,g格式字符之一为结束,中间可以插入附加格式字符。 想输出%,则应该在格式控制字符串中用连续两个%表示 printf(“%f%”,1.0/3); 输出:0.333333%,较复杂的输入与输出格式控制,58,顺序结构程序设计举例,例 输入三角形的三边长,求三角形面积。 假设: 三个边长a,b,c能构成三角形。 已知面积公式: area= s=(a+b+c)*0.5,59,开始,输入数据,计算s,计算面积,输出结果,结束,float a,b,c,s,area,scanf(“%f,%f,%f”,s=(a+b+c)/2.0,area=sqrt(s*

29、(s-a)*(s-b)*(s-c),printf,60,#include #include void main() float a,b,c,s,area; scanf(“%f,%f,%f”, ,运行情况: 3,4,6,数学函数库 因为要用到其中的sqrt函数,61,例 从键盘输入一个大写字母,要求改用小写字母输出。,#include void main() char c1,c2; c1=getchar(); printf(“%c,%dn“,c1,c1); c2=c1+32; printf(“%c,%dn“,c2,c2); ,顺序结构程序设计举例,62,顺序结构程序设计举例,例 求ax2+bx+

30、c=0方程的根。 a,b,c由键盘输入,设 0。 众所周知,一元二次方程式的根为: x1= , x2= 可以将上面的分式分为两项:,x1=p+q, x2=p-q,63,#include #include void main ( ) float a,b,c,disc,x1,x2,p,q; scanf(“a=%f,b=%f,c=%f“, ,64,课后习题,用下面的scanf函数输入数据,使a=3,b=7, x=8.5, y=71.82, c1=A, c2=a。问在键盘上如何输入?,#include void main() int a,b; float x,y; char c1,c2; scanf(“a=%d b=%d“, ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1