一章顺序程序设计.ppt

上传人:本田雅阁 文档编号:2840550 上传时间:2019-05-26 格式:PPT 页数:64 大小:669.05KB
返回 下载 相关 举报
一章顺序程序设计.ppt_第1页
第1页 / 共64页
一章顺序程序设计.ppt_第2页
第2页 / 共64页
一章顺序程序设计.ppt_第3页
第3页 / 共64页
一章顺序程序设计.ppt_第4页
第4页 / 共64页
一章顺序程序设计.ppt_第5页
第5页 / 共64页
点击查看更多>>
资源描述

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

1、1,作业: 2.3.求表达式的值 x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (float)(a+b)/2+(int)x%(int)y 设a=3,b=5,x=2.5,y=3.5,答案:2.500000,6.000000,第三章,顺序程序设计,主要内容,3.1 程序的控制结构 3.2 C语句概述 3.3 数据输入输出的概念及在c语言中的实现 3.4 字符数据的输入输出 3.5 格式输出函数printf 3.6 格式输如函数scanf 3.7 顺序结构程序设计举例,4,3.1 程序的控制结构,3.1.1算法的基本概念 程序=算法+数据结构+程序设计方法+语言工具和环

2、境 3.1.2 算法的特性 有穷性:一个算法应包含有限的操作步骤而不能是无限的。 确定性:算法中每一个步骤应当是确定的,而不能是含糊的、模棱两可的。 有零个或多个输入。 有一个或多个输出。 有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。,5,3.1.3 算法的表示,1 用自然语言表示算法 2 用流程图表示算法 图3-1 流程图符号,6,【例3.1】求5!的算法流程图表示。,图3-2 没有打印功能 图3-3 带有打印功能,7,【例3.2】判定闰年的算法用流程图表示。,Y,N,8,三种基本结构和改进的流程图,顺序结构:,选择结构:,循环结构,9,三种基本结构的共同特点:,只有一个入口

3、; 只有一个出口; 结构内的每一部分都有机会被执行到; 结构内不存在“死循环”。,10,3.1.4 用N-S流程图表示算法,1. 顺序结构: 2. 选择结构:,3. 循环结构:,11,3.1.5 用计算机语言表示算法,【例3.3】用C语言求5!。 #include void main() int i,t; t=1; i=2; while(i=5) /循环结构,判断循环条件是否为真 t=t*i; i=i+1; printf(“%d“,t); ,12,3.1.6 结构化程序设计方法,结构化程序设计所遵循的原则: 自顶向下; 逐步细化; 模块化设计; 结构化编码。,13, 3.2 C语句概述 1,1

4、4, 3.2 C语句概述,一个c程序可以有若干个源程序文件组成 一个源文件可以有若干个函数和预处理命令以及全局变量声明部分组成 一个函数有函数首部和函数体组成 函数体由数据声明和执行语句组成 C语句分为,15, 3.2 C语句概述(续),(一)控制语句 完成一定的控制功能 1 if() else 条件语句 6 break 间断语句 2 for()循环语句 7 switch() 开关语句 3 while()循环语句 8 goto 转向语句(不用) 4 do while();循环语句 9 return 返回语句 5 continue 继续语句,括号中是一个“判别条件”,“”表示内嵌的语句。 例如:

5、if(xy)z=x; else z=y;,16, 3.2 C语句概述(续),17, 3.2 C语句概述(续),(三)表达式语句 有一个表达式加一个分号构成一个语句 a = 3 ; 任何表达式都可以加上分号而成为语句。 例如:算术表达式和赋值表达式。,18, 3.2 C语句概述(续),19, 3.2 C语句概述(续),20, 3.3 数据输入输出的概念及在C语言中的实现,(一)所谓输入输出是以计算机主机为主体而言的 输出:从计算机向外部输出设备(显示器,打印机) 输出数据 输入:从输入设备(键盘,鼠标,扫描仪)向计算机 输入数据.,21,在使用语言库函数时,要用预编译命令 #include将有关

6、“头文件”包括到源文件中。 使用标准输入输出库函数时要用到“stdio.h”文件,stdio是standard input and outupt的意思。因此源文件开头应有以下预编译命令:#include或#include “stdio.h”, 3.3 数据输入输出的概念及在C语言中的实现,22, 3.4 字符数据的输入输出,3.4.1 putchar 函数(字符输出函数) putchar 函数是字符输出函数, 其功能是在显示器上输出单个字符。 其一般形式为:,putchar(字符型量),例如: putchar(A); (输出大写字母A) putchar(x); (输出字符变量x的值) putc

7、har(101); (也是输出字符A) putchar(n); (换行),【例3.4】输出单个字符。 #include void main() char a=G,b=o,c=o,d=d; putchar(a);putchar(b);putchar(c); putchar(d); putchar(t); ,23,3.4.2 getchar函数(键盘输入函数),getchar函数的功能是从键盘上输入一个字符。 其一般形式为:,getchar();,【例3.5】输入单个字符。 #include void main() char c; printf(“input a charactern“); c=g

8、etchar(); putchar(c); ,putchar(getchar(); 或 printf(“%c”,getchar();,24,3.5 printf函数(格式输出函数),3.5.1 printf函数调用的一般形式 printf函数是一个标准库函数,它的函数原 型在头文件“stdio.h”中。,printf(“格式控制字符串”,输出表列),格式控制字符串,%标志输出最小宽度.精度长度类型,printf函数调用的一般形式为:,输出最小宽度:用十进制整数来表示输出的最少位数。若实际位数多于定义的宽度,则按实际位数输出,保证不因为输出而使数据发生截断误差。若实际位数少于定义的宽度则按表3-

9、2补以空格或0。 精度:精度格式符以“.”开头,后跟十进制整数。本项的意义是:如果输出数值,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数,则四舍五入截去超过的部分。 长度:长度格式符为h,l两种,h表示按短整型(short)量输出,l表示按长整型(long)量输出。,25,26, 3.5 格式输入与输出,格式符。用来输出十进制整数。几种用法: :按十进制整型数据的实际长度输出。 :为指定的输出字段的宽度。如果数据的 位数小于,则左端补以空格,若大于,则按实 际位数输出。 例: printf(,); 若123,b12345,则输出结果为 123,1234

10、5 l:输出长整型数据。 例: long 135790;/* 定义a为长整型变量*/ printf(l,); 如果用%d输出就会出错。对于长整型数据也可指定字 段宽度。一个int型数据可以用%d或%ld格式输出。,27, 3.5 格式输入与输出,(2) 格式符。以八进制整数形式输出。 输出的数值不带符号,符号位也一起作为八进制数的 一部分输出。 例:int a=-1; printf(“%d,%o“,a,a); 在内存单元中的存放形式(以补码形式存放) 如下:11 111 111 111 111 111 111 111 111 111 111 输出为: ,37777777777 不会输出带负号的

11、八进制整数。对长整数(long型) 可以用“lo”格式输出。还可以指定字段宽度, 例:printf(“13“,); 输出为: 37777777777 (数字前有2个空格),28, 3.5 格式输入与输出,(3)格式符。以十六进制数形式输出整数。同样不会 出现负的十六进制数。 例: int ; printf(,); 在内存单元中的存放形式(以补码形式存放) 如下:1111 1111 1111 1111 1111 1111 1111 1111 输出结果为: ffffffff,37777777777, 可以用“l”输出长整型数,也可以指定输出字段 的宽度。 例: “12” 输出为 ffff ffff

12、,29, 3.5 格式输入与输出,(4)格式符,用来输出unsigned型数据. 一个有符号整数(int型)也可以用格式 输出; 一个unsigned型数据也可以用格式输出。 unsigned型数据也可用或格式输出。,30,【例3.6】输出整数 #include void main() int a=88,b=89; printf(“%4d %4on“,a,b); printf(“%+4ld,%-4dn“,a,b); printf(“%+04d,%-04dn“,a,b); printf(“a=%d,b=%dn“,a,b); ,31, 3.5 格式输入与输出,(5)格式符,用来输出一个字符。 如:

13、char d; printf(,d); 输出字符. 一个整数,只要它的值在范围内,可以用 “”使之按字符形式输出,在输出前,系统会将该 整数作为ASCII码转换成相应的字符;一个字符数据 也可以用整数形式输出。,32, 3.5 格式输入与输出,字符数据的输出。 #include void main() char c=a; int i=97; printf(“%c,%dn”,c,c); printf(“%c,%dn”,i,i); ,运行结果: a,97 a,97,33, 3.5 格式输入与输出,(6)s格式符 用来输出一个字符串. 。例如: printf(,) 输出字符串“”(不包括双引号)。

14、%ms,输出的字符串占m列,若串长大于m,则全部 输出,若串长小于m,则左补空格。 %-ms,若串长小于m,字符串向左靠,右补空格。 %m. ns,输出占m列,只取字符串中左端n个字符, 输出在m列的右侧,左补空格。 %-m.ns,n个字符输出在m列的左侧,右补空格, 若nm,m自动取n值,既保证n个字符正常输出。,34, 3.5 格式输入与输出,字符串的输出。 #include void main() printf(“%3s,%7.2s,%.4s,%-5.3sn”, “CHINA”, “CHINA”, “CHINA”, “CHINA”); ,35, 3.5 格式输入与输出,(7)格式符。用来

15、以小数形式输出实数(包括单双精度) 有以下几种用法: 。不指定字段宽度,由系统自动指定字段宽度, 使整数部分全部输出,并输出位小数。应当注意, 在输出的数字中并非全部数字都是有效数字。单精度 实数的有效位数一般为位。 .。指定输出的数据共占列,其中有位 小数。如果数值长度小于,则左端补空格。 .与.基本相同,只是使输出的数 值向左端靠,右端补空格。,36, 3.5 格式输入与输出,输出实数时的有效位数。 #include void () float ,; 111111.111;222222.222; printf(,); ,运行结果: 333333.328125,37, 3.5 格式输入与输出

16、,输出双精度数时的有效位数。 #include void main() double ,; x=1111111111111.111111111; y=2222222222222.222222222; printf(“%f”,x+y); ,运行结果: 3333333333333.333010,38, 3.5 格式输入与输出,输出实数时指定小数位数。 #include void main() float f=123.456; printf(“%f %10f %10.2f %.2f %-10.2fn”,f,f,f,f,f); ,运行结果: 123.456001123.456001123.46 123

17、.46123.46,39, 3.5 格式输入与输出,(8)格式符,以指数形式输出实数。 可用以下形式: 。不指定输出数据所占的宽度和数字部 分的小数位数. 例:printf(,); 输出: 6列 5列 所输出的实数共占列宽度。(注:不同系统 的规定略有不同),40, 3.5 格式输入与输出, m.ne和-m.ne。 、和“”字符的含义与前 相同。此处指拟输出的数据的小数部分(又称尾数) 的小数位数。 若,则: printf(“%e %10e %10.2e %.2e %-10.2e”, f,f,f,f,f); 输出如下: 1.234560e+002 1.234560e+002 1.23e+002

18、 1.23e+002 13列 13列 10列 9列 1.23e+002 10列,说明:未指定,自动使. 超过给定的列,乃突破列的限制,按实际长度输出。 第3个数据共占列,小数部分占列。 只指定,未指定,自动使等于数据应占的长度。 第5个数据应占列,数值只有列,由于是“10.2”, 数值向左靠,右补一个空格。 (注:有的C系统的输出格式与此略有不同),41, 3.5 格式输入与输出,(9)格式符,用来输出实数. 它根据数值的大小,自动选格式或格式(选择 输出时占宽度较小的一种),且不输出无意义的零。 例:若,则 ( ,f,f,f); 输出如下: 123.468000 1.234680e+002

19、123.468 10列 13列 10列,说明: 用格式输出占列,用格式输出占列,用 格式时,自动从上面两种格式中选择短者(今以格式为短) 故占列,并按格式用小数形式输出,最后3个小数位为 无意义的,不输出,因此输出123.468,然后右补3个空格。 格式用得较少。,42,【例3.7】 按格式控制字符串要求输出浮点型小数和字符型数据 #include void main() int a=15; float b=123.1234567f; double c=12345678.1234567; char d=p; printf(“a=%d,%5d,%o,%Xn“,a,a,a,a); printf(“

20、b=%f,%lf,%5.4lf,%en“,b,b,b,b); printf(“c=%lf,%f,%8.4lfn“,c,c,c); printf(“d=%c,%8cn“,d,d); ,43,3.5 使用printf函数注意事项,(1)如果想输出,则应该在“格式控制”字符串中用连续两个表示。 (2) 输出最小宽度.精度仅用于输出浮点型小数和字符串时的格式控制。 输出浮点型小数:形如,%-m.nf,f是一个浮点型变量,当按此格式输出时,包括小数点共m列宽(按照对齐方式补齐)、取n位小数;当f的实际宽度大于m时,则按实际宽度输出。 输出字符串:形如,%-m.ns,s是一个字符串,当按此格式输出时,按照

21、对齐方式用空格补齐m列、取n个字符;当s的实际宽度大于m时,则按实际宽度输出。 (3)printf()函数格式控制字符串可以包含转移字符。,44,printf函数总结:,%d,%o,%x格式符可在d,o,x前加上m,l修饰符。 %u表示无符号型数据输出。 %c按字符型数据输出,只能输出一个字符。 %s格式符在s前可加m,-m,m.n,-m.n修饰符。 %f,%e格式符在f,e前可加m.n,-m,n修饰符。 %g不常用。(找%f和%e中占位较短的) 注意:m.n修饰符只用于%s,%f,(%e)中。,45, 3.6 格式输入函数scanf,(一).格式输入函数 函数作用:按照变量在内存的地址将变量

22、值存进去。 一般格式:scanf(格式控制,地址表列),同printf函数,是由若干个地址组成的表列,可以是变量的 地址,或字符串的首地址,46,【例3.8】scanf函数的使用 #include void main() int a,b,c; printf(“input a,b,cn“); scanf(“%d%d%d“, 在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔,因此在输入时要用一个或一个以上的空格、回车键、Tab键作为每两个输入数之间的间隔。 2,a在内存中的地址 &是地址运算符, 3.6 格式输入函数scanf,47,格式字符串,%*输入数据宽度长度

23、类型,类型:表示输入数据的类型,其格式符和意义如下表,(2)“*”:抑制符,用以表示输入的数据不赋值给相应的变量,即跳过该输入值。 如: scanf(“%d %*d %d“, 当输入为:1 2 3时,把1赋予a,2被跳过,3赋予b。 (3)宽度:用十进制整数指定输入的宽度(即字符数),遇空格或不可转换字符则结束。 (4)长度:长度格式符为l和h ,l表示输入长整型数据(如%ld) 和双精度浮点数(如%lf)。h表示输入短整型数据。,48,使用scanf函数还必须注意以下几点:,(1)scanf函数中没有精度控制, 如:scanf(“%5.2f”,才是合法的。 (3)在输入多个数值数据时,若格式

24、控制串中没有非 格式字符作输入数据之间的间隔则可用空格、TAB或 回车符作间隔。C编译在碰到空格、TAB、回车或非 法数据(如对“%d”输入“12A”时,A即为非法数据)时 即认为该数据结束。 (4)在输入字符数据时,特别需要注意空格符、回车 符均作为有效字符使用。若格式控制串中无非格式 字符,则认为所有输入的字符均为有效字符。 2,49,练习题: 1.找出下列程序中的错误。 #include void main() int a,b; float c; scanf( %d%d%7.5f ,a,b,c); printf(“%d,%d,%7.5fn”,a,b,c); ,错误,scanf(“%d%d

25、%f”,输入方式哪种是正确的? (1)345.2 (2)3 4 5.2 (3)3:4:5.2 (4)3 4 5.2 (5)3(tab)4 5.2 (6)3,4,5.2 (7)3 4 5.2 ,50,2.找出下列程序中正确的输入结果。 #include void main() char a,b,c; scanf( “%c%c%c ”, ,(1)abc (2)a b c (3)a:b:c (4)a b c (5)a(tab)b c (6)a,b,c ,51,练习题:,1以下程序段的输出结果是( )。 int a=12345; printf(”%2dn”, a); A12 B34 C12345 D提

26、示出错、无结果 2若x和y均定义为int 型,z定义为double型,以下不合法的scanf()函数调用语句为( )。 Ascanf(”%d%lx,%le”,,C,D,52,3有如下程序段: int x1,x2; char y1,y2; scanf(”%d%c%d%c”, 若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是( )。(注:代表空格) A10A20B B10A20B C10 A20 B D10A20B,A,53,【例3.6】数据的格式化输入输出。输入一学生的学号(8位数字)、生日(年-月-日)、性别(M:男,F:女)及三门功课(语文、数学、英语)的成绩,现要

27、求计算该学生的总分和平均分,并将该学生的全部信息输出(包括总分、平均分)。,#include void main() unsigned long no; /学号 unsigned int year,month,day; /生日 unsigned char sex; /性别 float chinese,math,english; float total,average; printf(“input the students NO:“); scanf(“%8ld“, ,54, 3.7 顺序结构程序设计举例,例3.10 输入三角形的三边 长,求三角形面积。 假设:三个边长a,b,c能 构成三角形。

28、已知面积公式: area= s=(a+b+c)*0.5,55, 3.7 顺序结构程序设计举例(续),#include #include void main() float a,b,c,s,area; scanf(“%f,%f,%f”,数学函数库 因为要用到其中的sqrt函数,56, 3.7 顺序结构程序设计举例(续),例3.11 求x2方程的根。 a,b,c由键盘输入,设 。 众所周知,一元二次方程式的根为 x1= x2= 可以将上面的分式分为两项: p= , q= x1=p+q, x2=p-q,57, 3.7 顺序结构程序设计举例(续),#include #include void main

29、 ( ) float a,b,c,disc,x1,x2,p,q; scanf(“a=%f,b=%f,c=%f“, ,运行情况: , ,58, 3.7 顺序结构程序设计举例(续),例3.12 从键盘输入一个大写字母,要求改用小写字母输出。 include void main () char ,; getchar(); printf(,); ; printf(,); ,运行情况: , ,,59,练习题: 1.编写一个程序,输入两个非零整数,输出相加、相减、相乘、相除和求模运算的结果。 2.编写一个程序,输入一个3位正整数,要求逆序输出相应的数,如输入123,则输出321。 3.编写一个程序解鸡兔同

30、笼问题:已知鸡兔总数为a,鸡兔腿总数为b,计算鸡兔各有多少只。,60,#include void main ( ) int x,y; printf(“输入x,y:”); scanf(“%d%d“, ,int x,y,sum,p,q,n; float m; printf(“输入x,y:”); scanf(“%d%d“,61,#include void main ( ) int n,i,j,k,m; printf(“输入一个三位正整数:”); scanf(“%d“, ,62,#include void main ( ) int a,b,x,y; printf(“鸡兔总数,鸡兔腿总数 :”); scanf(“%d%d“, ,63,作业题: P603.7,64,希望大家能学出好成绩,我们一起努力! 谢谢大家!,

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

当前位置:首页 > 其他


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