chapter程序的灵魂算法最简单的C程序设计顺序程序设计实用.pptx

上传人:莉*** 文档编号:77751044 上传时间:2023-03-16 格式:PPTX 页数:47 大小:447.18KB
返回 下载 相关 举报
chapter程序的灵魂算法最简单的C程序设计顺序程序设计实用.pptx_第1页
第1页 / 共47页
chapter程序的灵魂算法最简单的C程序设计顺序程序设计实用.pptx_第2页
第2页 / 共47页
点击查看更多>>
资源描述

《chapter程序的灵魂算法最简单的C程序设计顺序程序设计实用.pptx》由会员分享,可在线阅读,更多相关《chapter程序的灵魂算法最简单的C程序设计顺序程序设计实用.pptx(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、3.1 算法 二、算法的特性 1.有穷性 一个算法包含的操作步骤应当是有限的。2.确定性 一个算法的含义应当是唯一的,算法中的每一个 步骤应当是确定的,不应产生“歧义性”。3.有零个或多个输入 4.有一个或多个输出 5.有效性 算法中的每一步都应当能有效地执行,并得到正确的结果。第1页/共47页三、简单算法举例 1.求 12 3 4 5 (即 5!)算法一:步骤1:12 得 2;步骤2:23 得 6;步骤3:64 得 24;步骤4:245 得 120;3.1 算法第2页/共47页算法二:设 p 为被乘数,i 为乘数,采用循环算法。S1:使 p=1;S2:使 i=2;S3:使 p i p S4:

2、使 i+1 i S5:如果 i 不大于5 则返回重新 执行 S3,S4,S5;否则,算法结束。3.1 算法三、简单算法举例 1.求 12 3 4 5 (即 5!)第3页/共47页2.对一个大于或等于3的正整数,判断它是不是 一个素数。算法一:将 n 作为被除数,将 2 到(n 1)各个整数轮流作为除数,如都不能被 整除,则 n 为素数。3.1 算法三、简单算法举例第4页/共47页算法二:将 n 作为被除数,将2到n/2(或者是 2 到 n1/2)各个整数轮流作为除数,如都不能被整除,则n为素数。S1:输入 n 的值 S2:i=2(i 作为除数)S3:n 被 i 除,得余数 r S4:如r=0,

3、则输出“不是素数”,反之执行 S5 S5:i+1 i S6:如果 i n 1,返回 S3;否则输出“是素数”结束。3.1 算法三、简单算法举例第5页/共47页自然语言传统流程图结构化流程图伪代码PDA图。3.1 算法四、算法的表示方法第6页/共47页1.传统流程图 特点:用一些规定的图框表示各种操作。直观形象,易于理解。常用的ANSI规定图形符号如图:起始或结束框输入输出框判断框处理框流程线连接点注释框3.1 算法四、算法的表示方法第7页/共47页 用传统流程图来表示求 5!。开始i 51t2ititi+1i结束N第8页/共47页2.程序的三种基本结构 一个程序只能由三种基本结构(或由它们派生

4、出来的结构)组成,这三种结构为:(1)顺序结构(2)选择结构 (3)循环结构ABABPP1AP2A成立成立不成立顺序结构 选择结构 循环结构第9页/共47页 3.用 N S 流程图表示算法 N S 结构化流程图是根据美国学者 I.Nassi和 B.Shneiderman 1973年提出的算法来描述的,属于无流线的流程图,简称 N S 图。A B C真 P 假 A B当P为真 A A直到P为假顺序结构 选择结构 循环结构第10页/共47页 真 P1 假 当 P2 为真 真 P3 假 A B C一般情况 N S 图的特点:比自然语言描述更直观、形象、易于理解。比传统流程图紧奏易画。图中的上下顺序就

5、是执行时的顺序,符合“自顶向下,逐步细化”的结构化程序设计要求。第11页/共47页求 5!的 N S 流程图1 t2 iti ti+1 i直到 i 5输出第12页/共47页判断素数的 N S 流程图输入 n 0 w2 in/i 的余数 rr=0是否1 wi+1 i直到 i n1/2 或 w 0w=0是否“是素数”“不是素数”第13页/共47页表达式语句:表达式;3.2 C 语句概述C语句包括:控制语句 (9)种 if()else;for();while();do while;continue ;break;switch;goto;return控制语句 1 1函数调用语句 例如:y=cos(0.

6、5);y=sin(cos(0.5);printf(“Hello”);函数调用语句 2 2复合语句格式 语句1;语句 n;复合语句 5 5空语句:;第14页/共47页 3.3 赋值语句 赋值语句由赋值表达式加上分号构成。如:a=b;C语言中将赋值表达式和赋值语句分开来,其目的是增加表达式的种类和使用范围。如:(1)if(x 0)(2)if(a=b)0)t=a;第15页/共47页3.4 字符数据的输入输出 C 程序的输入和输出完全依靠调用标准输入和输出函数来完成。常用的 4个I/O 函数为:scanf()getchar()printf()putchar()第16页/共47页输出单个字符输出转义字符

7、3.4 字符数据的输入输出 一、putchar 函数(字符输出函数)作用:向终端(即系统隐含指定的输出设备,如显示器,打印机)输出一个字符。格式:putchar(ch);其中:ch 代表一个字符型或整型变量,也可以是一个字符常量或整型常量。例 输出转义字符#include main()putchar(101);putchar();putchar(n);输出结果:A 输出单个字符#include /*包含I/O库有关变量定义和宏定义*/main()char a,b,c;a=B;b=O;c=Y ;putchar(a);putchar(b);putchar(c);输出结果:BOY 例如例如输出单个转

8、义字符#include main()putchar(101);putchar();putchar(n);输出结果:A 重点重点例 输出单个字符#include /*包含I/O库有关变量定义和宏定义*/main()char a,b,c;a=B;b=O;c=Y ;putchar(a);putchar(b);putchar(c);输出结果:BOY 第17页/共47页3.4 字符数据的输入输出 二、getchar 函数(字符输入函数)作用:从终端(即系统隐含指定的输入设备 (如键盘),输入一个字符。说明:1.执行时,输入字符并按回车键后,才将其输入到缓冲区,只读取一个字符给变量。2.getchar 函

9、数接收的一个字符,可以赋给char型或 int 型变量,也可不赋给任何变量。3.使用 putchar 和 getchar 函数需用预编译命令#include 将“stdio.h”包括进去。例3.2:从键盘输入一个字符再输出。从键盘输入一个字符再输出。#include “stdio.h”main()char c;c=getchar();putchar(c);若输入:a 则输出:a 实例实例第19页/共47页示例2示例1格式控制 输出表列3.5 格式输入与输出 一、printf 函数(格式化输出函数)1.格式:printf(,);作用:向系统终端(或隐含的输出设备)输出若干 个指定类型的数据。2.

10、格式字符(共 9 种)作用:控制不同类型数据的不同格式输出。(1)d格式符:用于输出十进制整数%d:按整型数的实际长度输出。%md:m为指定的输出数据宽度,若数据位 数 m 时,全部输出。反之则右靠齐,左补 空格或左靠齐,右补空格。%m.ns:规定输出字符串所占列宽,只取 字符串中左端 n个字符。输出右靠齐,左补空 格或左靠齐,右补空格。当 n m 时,则 m 自动取 n 的值以保证 n 个字符正输出。%mc:指定输出数据宽度,右靠齐,左补空格%mc:左靠齐,右补空格。例 3.3 void main()char c=a;int i=97;printf(“%c”,a);printf(“%c,%d

11、n”,c,c);printf(“%c,%dn”,i,i);如:char c=a;printf(“%3c”,c);输出:a 又如:printf(“%3c%3c”,a ,b);输出:a b 例 3.4 void main()printf(“%3s,%7.2s,%.4s,%5.3s n”,“CHINA”“CHINA”,“CHINA”,“CHINA”);输出:CHINA,CH,CHIN,CHI 例 3.3c 格式符用于输出一个字符例 3.3 void main()char c=a;int i=97;printf(“%c”,a);printf(“%c,%dn”,c,c);printf(“%c,%dn”,

12、i,i);重点重点c 格式符域宽控制main()char c=a;printf(“%3cn”,c);printf(“%3c%3c”,a,b);输出:aa b 重点重点s 格式符 输出一个字符串void main()printf(“%3s,%7.2s,%.4s,%5.3s n”,“CHINA”“CHINA”,“CHINA”,“CHINA”);输出:CHINA,CH,CHIN,CHI 示例示例第24页/共47页域宽控制(4)f 格式符:用于输出实数(包括单,双精度)%f系统自动指定宽度,整数部分全部输出 并输出6位小数。但并非全部数字都是有效 数字。一般 单精度实数有效位为7 位。双精度实数为16

13、位。%mf%m.nf 规定输出实数占的列宽,且有n 位小数如果数值长度 m,则输出右靠齐,左补空格 或左靠齐,右补空格。例 3.5 void main()float x,y;x=111111.111;y=222222.22;printf(“%f”,x+y);输出:333333.328125例 3.7 main()float f=123.456;printf(“%f%10fn”,f,f);printf(“%10.2f%.2f%10.2f”,f,f,f);输出:123.55994123.455994123.46123.46123.46 例 3.7 例 3.5 111111.111+222222.2

14、22=?浮点数丢失 精度浮点数丢失 精度 void main()float x,y;x=111111.111;y=222222.22;printf(“%f”,x+y);输出:333333.328125重点重点实型数据域宽控制 main()float f=123.456;printf(“%f%10fn”,f,f);printf(“%10.2f%.2fn”,f,f);printf(%10.2f”,f);输出:123.55994123.455994123.46123.46123.46 重点重点第26页/共47页 例程执行及分析例 3.2 (5)u 格式符:用于按十进制形式输出unsigned 型数据

15、。说明:有符号int 型与unsigned 型数据可以相互赋值,故 int 型可以用%u格式输出;unsigned 型也可以用%d 格式输出。unsigned 型还可以用%o和%x格式输出。例 3.2 void main()unsigned int a=65535;int b=2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x,%un”,b,b,b,b);输出结果:a=1,177777,ffff,65535 b=2,177776,fffe,6553411111111111111101111111111111111a=65535b=2 u

16、格式符用于按十进制形式输出unsigned型数据例 3.2 void main()unsigned int a=65535;int b=2;printf(“a=%d,%o,%x,%un”,a,a,a,a);printf(“b=%d,%o,%x,%un”,b,b,b,b);重点重点 例 3.2 输出结果:a=1,177777,ffff,65535 b=2,177776,fffe,65534a=65535b=2重点重点11111111111111101111111111111111第28页/共47页 (6)e 格式符:用于按指数形式输出实数%e 由系统自动指定给出 6 位小数,指数部分占5 位(如

17、 e+002)。例如:float f=123.456 ;printf(“%e%10e%10.2e%.2e 10.2e”,f,f,f,f,f);输出:1.234560e+0021.234560e+002 1.23e+0021.23e+0021.23e+002%m.ne 规定输出实数占的列宽,且有 n 位小数。如果数值长度 m,则输出右靠齐,左补空格或左靠齐,右补空格。例如e 格式符:用于按指数形式输出实数 main()float f=123.456;printf(“%e%10en”,f,f);printf(“%10.2e%.2e%10.2e”,f,f,f);输出:1.234560e+0021.2

18、34560e+0021.23e+0021.23e+0021.23e+002 重点重点第30页/共47页1.输出项与格式符必须按照从左至右的顺序在 类型上一一匹配。2.格式字符要小写。如:%f%F3.如果格式字符的个数少于输出项数时,多余的输出项不予输出。反之若格式字符的个数大于输出项数时,各系统的处理不同。printf函数使用的注意事项:4.注意常规 d e f o x u c s e g 等字符在“%”后面与一般情形的区别。如:print(“c=%c,f=%f,s=%s”,c,f,s);5.可以输出“%”号 例如:printf(“%f%”,1.0/3);输出:0.333333%了解例如:Tu

19、rbo C中对于缺少项输出不定值,而VAX C则输出 0 值。例如:printf(“%d,%f,%un”,x,y,z,t);printf(“%d,%f,%u,%e n”,x,y,z);格式字符的个数少于输出项数例如:Turbo C中对于缺少项输出不定值,而VAX C则输出 0 值。例如:printf(“%d,%f,%un”,x,y,z,t);printf(“%d,%f,%u,%en”,x,y,z);请自行编程验证!了解了解第32页/共47页二、scanf 函数(格式化输入函数)作用:用于输入任何类型的多个数据 1.格式:scanf(格式控制,地址表列);格式控制同 printf 函数的格式控制

20、含义一样。地址表列由多个输入项的地址构成。可以是变 量的地址或字符串的首地址或数组元素的地址等。例 3.9 void main()int a,b,c;scanf(“%d%d%d”,&a,&b,&c);/*/printf(“%d,%d,%d n”,a,b,c);输入:输出:3,4,5 345 关于&注意:2.在输入数据时,两个数据之间可以用一个或 多个 空格,也可用回车键或跳格键(Tab)。例如:345 345 3(Tab键)45 均合法。而3,4,5 不合法。如果将 scanf(“%d%d%d”,&a,&b,&c);改成:scanf(“%d,%d,%d”,&a,&b,&c);则输入数据时只有

21、3,4,5 合法。注意:3.在输入数据时,并非输入完一个数据就被读入并 送给一个变量,而是在键入一行字符并按回车键 后才将该行字符输入缓冲区,然后scanf 函数从缓 冲区按规定格式要求从缓冲区读取数据。scanf函数注意(1)“&”是地址运算符,&a表示a在内存中的地址。初学者常犯的典型错误:void main()int a,b,c;scanf(“%d%d%d”,a,b,c);printf(“%d,%d,%d n”,a,b,c);重点重点scanf函数注意(2)在输入数据时,两个数据之间可以用一个或多个 空格,也可用回车键或跳格键 例如:scanf(“%d%d%d”,&a,&b,&c);对应

22、的合法输入 345 345 3(Tab键)45 对应的典型输入错误:3,4,5 若语句改为:scanf(“%d,%d,%d”,&a,&b,&c);则输入数据时只有 3,4,5 合法。重点重点scanf函数注意(3)回车确认输入 在输入数据时,并非输入完一个数据就被读入并送给一个变量,而是在键入一行字符并按回车键后才将该行字符输入缓冲区,然后scanf 函数从缓冲区按规定格式要求从缓冲区读取数据。重点重点注意(1)“&”是地址运算符,&a表示a在内存中的地址。初学者常犯的典型错误:void main()int a,b,c;scanf(“%d%d%d”,a,b,c);printf(“%d,%d,%

23、d n”,a,b,c);第34页/共47页程序找错抑制字符 指定输入数据宽度 关于%u的说明 2.格式说明 (1)标准C中scanf 函数不使用%u格式,Turbo C中可用。(2)可以指定整型变量输入数据宽度。(3)可以使用抑制字符%*(4)不能规定输入数据的精度(与 printf 函数不同)(4)不能规定输入数据的精度(与 printf 函数不同)如:scanf(“%7.2f ”,&a);(不合法)即不能输入 1234567 来使 a=12345.67。2.格式说明(1)标准C中scanf 函数不使用%u格式。对 unsigned型数据以%d 或%o,%x 格式输入。而 Turbo C中可

24、以使用%u 格式来输入无符号数。(2)可以指定输入数据宽度。如:scanf(“%3d%3d”,&a,&b);输入:123456 则:a 是 123,b 是 456 同样:scanf(“%3c”,&ch);输入:abc 则:ch 得到字符 a2.格式说明 (3)可以使用抑制字符%*如:scanf(“%2d%*3d%2d”,&a,&b);输入:1234567 则 a 是 12,b 是 67scanf 函数格式说明 标准C中scanf 函数不使用%u格式。对 unsigned型数据以%d 或%o,%x 格式输入。而 Turbo C中可以使用%u 格式来输入无符号数。极宽框1内容。1 1scanf 函

25、数指定输入数据宽度 main()int a,b;scanf(“%3d%3d”,&a,&b);printf(“%d,%d”,a,b);输入:123456 则:a 是 123,b 是 456若有:scanf(“%3c”,&ch);输入:abc 则ch得到字符a2 2scanf 函数使用抑制字符%*如:scanf(“%2d%*3d%2d”,&a,&b);输入:1234567 则 a 是 12 b 是 673 3scanf 函数不能规定输入数据的精度(与 printf 函数不同)程序找错main()float x;double y;scanf(“%7.2f”,&x);(不合法)scanf(“%f”,&

26、y);(类型 不匹配)不能输入 1234567 来使 x=2345.67;不能输入 123456789使 y=123456789 4 4 第36页/共47页(5)注意包含头文件(4)在输入数据时,遇到以下情况该数据认为结束。空格或回车或“Tab”键 数据宽度结束 如:%3d 只取3列。非法输入(3)使用%c 格式时,空格字符,转义字符,回车 等都是有效字符。3.注意的问题:(1)scanf函数用变量的地址作参数。(2)格式字符中可以有其它字符但此时输入数据应将这些字符原样输入。示例示例输入输入2输入1示例2 示例1错例 (4)在输入数据时,遇到以下情况该数据认为结束。空格或回车或“Tab”键

27、数据宽度结束 如:%3d 只取3列。非法输入 如:scanf(“%d%c%f”,&a,&b,&c);若输入:1234a123o.36 则:a=1234 b=a c=1233.注意的问题:(1)注意变量的地址。如:scanf(“%d%d”,a,b);3.注意的问题:(2)格式字符中可以有其它字符但此时输入数据应将这些字符原样输入。全例main()scanf(“%d,%d”,&a,&b);3.注意的问题:(2)格式字符中可以有其它字符但此时输入数据应将这些字符原样输入。全例main()scanf(“a=%d,b=%d”,&a,&b);输入应为:3,4 而此时输入 34 或 3(Tab)4 都不合法

28、。则输入应为:a=12,b=13 (3)使用%c 格式时,空格字符,转义字符,回车等都是有效字符。全例main()scanf(“%c%c%c”,&c1,&c2,&c3);若输入:abc 则 c1=a,c2=,c3=b 应输入:abcscanf函数参数注意变量地址的作用典型错误main()int a,b;scanf(“%d%d”,a,b);printf(“sum=%d”,a+b);1 1scanf函数参数注意的问题(2)格式字符中可以有其它字符,但此时输入数据应将这些字符原样输入。main()int a,b;scanf(“%d,%d”,&a,&b);printf(“%d”,a+b);2 2sca

29、nf函数参数注意的问题(2)格式字符中可以有其它字符,但此时输入数据应将这些字符原样输入。main()int a,b;scanf(“a=%d,b=%d”,&a,&b);printf(“%d”,a+b);2 2scanf函数参数注意的问题(3)使用%c 格式时,空格字符,转义字符,回车等都是有效字符。main()char c1,c2,c3;scanf(“%c%c%c”,&c1,&c2,&c3);printf(“%c%c%c”,c1,c2,c3);重点重点注意的问题(2)输入应为:3,4 若:输入 34 或:3(Tab)4 都不合法!重点重点注意的问题(2)则输入应为:a=12,b=13 重点重点

30、若输入:abc 则:c1=a,c2=,c3=b应输入:abc重点重点注意:在使用上述四个函数时,getchar 和 putchar函数需用预编译命令#include 将“stdio.h”包括进去。而printf 和scanf 函数则不需要。注意 在使用上述四个函数时,getchar 和 putchar函数需用预编译命令#include 将“stdio.h”包括进去。而printf 和scanf 函数则不需要。重点重点scanf函数参数注意的问题(4)在输入数据时,遇到以下情况该数据认为结束。空格或回车或“Tab”键 数据宽度结束 如:%3d 只取3列。非法输入如:scanf(“%d%c%f”,

31、&a,&b,&c);若输入:1234a123o.36 则:a=1234 b=a c=123重点重点第38页/共47页注意:在使用上述四个函数时,getchar 和 putchar函数需用预编译命令#include 将“stdio.h”包括进去。而printf 和scanf 函数则不需要。第40页/共47页3.6 程序举例例3.10 已知三角形的三条边长,计算三角形的面积。数学公式:面积=(s*(sa)*(sb)*(sc)1/2 其中:s=1/2*(a+b+c)main()1.定义相关的变量 3.计算s和面积 4.输出三边长和面积 2.输入三角形三边长float a,b,c,s,area;sca

32、nf(“%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(sa)*(sb)*(sc);printf(“”,a,b,c,area);第41页/共47页例3.10#include main()float a,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&c);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.2f n”,a,b,c,s);printf(“area=%7.2f n”,area);第42页/共47页例

33、3.11#include void main()char c1,c2;c1=getchar();printf(“%c,%d n”,c1,c1);c2=c1+32;printf(“%c,%d n”,c2,c2);输出结果:A A,65 a ,97第43页/共47页例3.12#include “math.h”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(“nnx1=%5.2f nx2

34、=%5.2f n”,x1,x2);结果:a=1,b=3,c=2 x1=1.00 x2=2.0 0 第44页/共47页 补充例子:1.#include“stdio.h”void main()char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2)输入:A)ab B)ab C)ab D)a(Tab)b 答案:C第45页/共47页2.下列输入是否合法.main()int a,b,c,d,e,f;scanf(“%d%d”,&a,&b);scanf(“%d%d”,&c,&d);scanf(“%d”,&e);scanf(“%d”,&f);作业:p84 86 4.4,4.5,4.10输入:13579 1011第46页/共47页感谢您的欣赏!第47页/共47页

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > PPT文档

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁