算法、简单的C程序设计.ppt
《算法、简单的C程序设计.ppt》由会员分享,可在线阅读,更多相关《算法、简单的C程序设计.ppt(48页珍藏版)》请在三一办公上搜索。
1、第二章 算法和最简单的 C 程序设计,本章要点:掌握了解算法的基本概念与特征 掌握熟悉结构化程序设计的基本概念 掌握算法的表示方法,2.1 算法一、算法的概念 Nikiklaus Wirth 公式 程序=数据结构+算法 数据结构:对数据的描述,在程序中指定数据的 类型和数据的组成形式。算法:对操作的描述,即解决问题的方法和步骤。程序=数据结构+算法+程序设计方法+语言工具+环境,2.1 算法 二、算法的特性 1.有穷性 一个算法包含的操作步骤应当是有限的。2.确定性 一个算法的含义应当是唯一的,算法中的每一个 步骤应当是确定的,不应产生“歧义性”。3.有零个或多个输入 4.有一个或多个输出 5
2、.有效性 算法中的每一步都应当能有效地执行,并得到正确的结果。,三、简单算法举例 1.求 12 3 4 5(即 5!)算法一:步骤1:12 得 2;步骤2:23 得 6;步骤3:64 得 24;步骤4:245 得 120;,2.1 算法,算法二:设 p 为被乘数,i 为乘数,采用循环算法。S1:使 p=1;S2:使 i=2;S3:使 p i p S4:使 i+1 i S5:如果 i 不大于5 则返回重新 执行 S3,S4,S5;否则,算法结束。,2.1 算法,三、简单算法举例 1.求 12 3 4 5(即 5!),2.对一个大于或等于3的正整数,判断它是不是 一个素数。算法一:将 n 作为被除
3、数,将 2 到(n 1)各个整数轮流作为除数,如都不能被 整除,则 n 为素数。,2.1 算法,三、简单算法举例,算法二:将 n 作为被除数,将2到n/2(或者是 2 到 n1/2)各个整数轮流作为除数,如都不能被整除,则n为素数。S1:输入 n 的值 S2:i=2(i 作为除数)S3:n 被 i 除,得余数 r S4:如r=0,则输出“不是素数”,反之执行 S5 S5:i+1 i S6:如果 i n 1,返回 S3;否则输出“是素数”结束。,2.1 算法,三、简单算法举例,自然语言传统流程图结构化流程图伪代码PDA图。,2.1 算法,四、算法的表示方法,1.传统流程图 特点:用一些规定的图框
4、表示各种操作。直观形象,易于理解。常用的ANSI规定图形符号如图:,起始或结束框,输入输出框,判断框,处理框,流程线,连接点,注释框,2.1 算法,四、算法的表示方法,用传统流程图来表示求 5!。,2.程序的三种基本结构 一个程序只能由三种基本结构(或由它们派生出来的结构)组成,这三种结构为:(1)顺序结构(2)选择结构(3)循环结构,A,顺序结构 选择结构 循环结构,3.用 N S 流程图表示算法 N S 结构化流程图是根据美国学者 I.Nassi和 B.Shneiderman 1973年提出的算法来描述的,属于无流线的流程图,简称 N S 图。,真 P1 假 当 P2 为真 真 P3 假
5、A B C,一般情况,N S 图的特点:比自然语言描述更直观、形象、易于理解。比传统流程图紧奏易画。图中的上下顺序就是执行时的顺序,符合“自顶向下,逐步细化”的结构化程序设计要求。,求 5!的 N S 流程图,判断素数的 N S 流程图,表达式语句:表达式;,2.2 C 语句概述C语句包括:,控制语句(9)种 if()else;for();while();do while;continue;break;switch;goto;return,控制语句,1,函数调用语句 例如:y=cos(0.5);y=sin(cos(0.5);printf(“Hello”);,函数调用语句,2,复合语句格式 语句
6、1;语句 n;,复合语句,5,空语句:;,2.3 赋值语句 赋值语句由赋值表达式加上分号构成。如:a=b;C语言中将赋值表达式和赋值语句分开来,其目的是增加表达式的种类和使用范围。如:(1)if(x 0)(2)if(a=b)0)t=a;,2.4 字符数据的输入输出 C 程序的输入和输出完全依靠调用标准输入和输出函数来完成。常用的 4个I/O 函数为:scanf()getchar()printf()putchar(),输出单个字符,输出转义字符,3.4 字符数据的输入输出 一、putchar 函数(字符输出函数)作用:向终端(即系统隐含指定的输出设备,如显示器,打印机)输出一个字符。格式:put
7、char(ch);其中:ch 代表一个字符型或整型变量,也可以是一个字符常量或整型常量。,输出单个字符#include/*包含I/O库有关变量定义和宏定义*/main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);输出结果:BOY,例如,输出单个转义字符#include main()putchar(101);putchar();putchar(n);输出结果:A,重点,输出单个字符,输出转义字符,3.4 字符数据的输入输出 一、putchar 函数(字符输出函数)作用:向终端(即系统隐含指定的输出设备,如显示器,打印机)输出一
8、个字符。格式:putchar(ch);其中:ch 代表一个字符型或整型变量,也可以是一个字符常量或整型常量。,输出单个字符#include/*包含I/O库有关变量定义和宏定义*/main()char a,b,c;a=B;b=O;c=Y;putchar(a);putchar(b);putchar(c);输出结果:BOY,重点,输出单个转义字符#include main()putchar(101);putchar();putchar(n);输出结果:A,重点,3.4 字符数据的输入输出,二、getchar 函数(字符输入函数),作用:从终端(即系统隐含指定的输入设备(如键盘),输入一个字符。,说明
9、:1.执行时,输入字符并按回车键后,才将其输入到缓冲区,只读取一个字符给变量。getchar 函数接收的一个字符,可以赋给char型或 int 型变量,也可不赋给任何变量。3.使用 putchar 和 getchar 函数需用预编译命令#include 将“stdio.h”包括进去。,例3.2:从键盘输入一个字符再输出。,从键盘输入一个字符再输出。#include“stdio.h”main()char c;c=getchar();putchar(c);若输入:a 则输出:a,实例,示例2,示例1,格式控制,输出表列,3.5 格式输入与输出 一、printf 函数(格式化输出函数)1.格式:pr
10、intf(,);作用:向系统终端(或隐含的输出设备)输出若干 个指定类型的数据。,2.格式字符(共 9 种)作用:控制不同类型数据的不同格式输出。(1)d格式符:用于输出十进制整数%d:按整型数的实际长度输出。%md:m为指定的输出数据宽度,若数据位 数 m 则左补空格,反之则将数据全部输出。%md:左靠齐,右补空格。%ld:输出长整型数据。,格式控制:由双引号括起来的字符串表示,包括格式说明和普通字符两部分。,输出表列:需要输出的数据,可以是:常量,变量,表达式,函数,字符串常量。,使用示例:main()int a=3,b=2;printf(“%d,%d”,a,b);printf(“sum
11、is%d”,a+b);printf(“%d”,123);printf(“%c”,getchar();,main()int a=123,b=12345;long c=135790;printf(“%4d,%4dn”,a,b);printf(“%4dn”,a);printf(“%ldn”,c);printf(“%8ld”,c);输出:123,12345 123 135790 135790,格式控制,输出表列,printf 函数使用示例:main()int a=3,b=2;printf(“%d,%d”,a,b);printf(“sum is%d”,a+b);printf(“%d”,123);prin
12、tf(“%c”,getchar();,举例,main()int a=123,b=12345;long c=135790;printf(“%4d,%4dn”,a,b);printf(“%4dn”,a);printf(“%ldn”,c);printf(“%8ld”,c);输出:123,12345 123 135790 135790,格式控制:由双引号括起来的字符串表示,包括格式说明和普通字符两部分。,重点,输出表列:需要输出的数据,可以是:常量,变量,表达式,函数,字符串常量。,重点,3.5 格式输入与输出 一、printf 函数(格式化输出函数)1.格式:printf(,);作用:向系统终端(或
13、隐含的输出设备)输出若干 个任意类型的数据。,2.格式字符(共 9 种)作用:控制不同类型数据的不同格式输出。(1)d格式符:用于输出十进制整数%d:按整型数的实际长度输出。%md:m为指定的输出数据宽度,若数据位 数 m 则左补空格,反之则将数据全部输出。%md:左靠齐,右补空格。%ld:输出长整型数据。,格式控制:由双引号括起来的字符串表示,包括格式说明和普通字符两部分。,输出表列:需要输出的数据,可以是:常量,变量,表达式,函数,字符串常量。,使用示例:main()int a=3,b=2;printf(“%d,%d”,a,b);printf(“sum is%d”,a+b);printf(
14、“%d”,123);printf(“%c”,getchar();,main()int a=123,b=12345;long c=135790;printf(“%4d,%4dn”,a,b);printf(“%4dn”,a);printf(“%ldn”,c);printf(“%8ld”,c);输出:123,12345 123 135790 135790,示例,格式控制,输出表列,示例1,printf 函数使用示例:main()int a=3,b=2;printf(“%d,%d”,a,b);printf(“sum is%d”,a+b);printf(“%d”,123);printf(“%c”,get
15、char();,重点,示例2,main()int a=123,b=12345;long c=135790;printf(“%4d,%4dn”,a,b);printf(“%4dn”,a);printf(“%ldn”,c);printf(“%8ld”,c);输出:123,12345 123 135790 135790,格式控制,格式控制:由双引号括起来的字符串表示,包括格式说明和普通字符两部分。,重点,输出表列,输出表列:需要输出的数据,可以是:常量,变量,表达式,函数,字符串常量。,重点,示例,d格式符说明:在指定输出数据宽度,且实际宽度和指定宽度不等时,系统默认补空格。但可以改为补零。,如希望
16、数据输出宽度随计算结果而定,则可在%和格式字符之间加一个 号,且数据宽度由紧跟在“控制字符串”后面的常量或变量的值确定。,如:int a=123;printf(“%05d”,a);输出:00123,如:int i=15 printf(“%d n”,8,i);输出为:15 又如:printf(“%d n”,k,x);又如:int x,k;printf(“%d n”,k,x);,补零或是补空格?,补零或是补空格?main()int a=123;printf(“%05d”,a);输出:00123,提问,数据输出宽度的动态控制main()int i=15,k;printf(“%d n”,8,i);k=
17、i 10;printf(“%dn”,k,i);输出为:15 15,了解,d格式符说明:在指定输出数据宽度,且实际宽度和指定宽度不等时,系统默认补空格。但可以改为补零。,如希望数据输出宽度随计算结果而定,则可在%和格式字符之间加一个 号,且数据宽度由紧跟在“控制字符串”后面的常量或变量的值确定。,如:int a=123;printf(“%05d”,a);输出:00123,如:int i=15 printf(“%d n”,8,i);输出为:15 又如:printf(“%d n”,k,x);又如:int x,k;printf(“%d n”,k,x);,补零或是补空格?,补零或是补空格?main()i
18、nt a=123;printf(“%05d”,a);输出:00123,提问,示例,数据输出宽度的动态控制main()int i=15,k;printf(“%d n”,8,i);k=i 10;printf(“%dn”,k,x);输出为:15 15,了解,域宽控制,s 格式符,(2)c 格式符:用于输出一个字符%c 控制字符常量或字符变量的输出。,(3)s 格式符:输出一个字符串%s%ms:规定输出字符串占的列宽。字符串 长度 m 时,全部输出。反之则右靠齐,左补 空格或左靠齐,右补空格。%m.ns:规定输出字符串所占列宽,只取 字符串中左端 n个字符。输出右靠齐,左补空 格或左靠齐,右补空格。当
19、 n m 时,则 m 自动取 n 的值以保证 n 个字符正输出。,%mc:指定输出数据宽度,右靠齐,左补空格%mc:左靠齐,右补空格。,例 3.3 void main()char c=a;int i=97;printf(“%c”,a);printf(“%c,%dn”,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”,“CHI
20、NA”);输出:CHINA,CH,CHIN,CHI,例 3.3,c 格式符用于输出一个字符例 3.3 void main()char c=a;int i=97;printf(“%c”,a);printf(“%c,%dn”,c,c);printf(“%c,%dn”,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”
21、);输出:CHINA,CH,CHIN,CHI,示例,(2)c 格式符:用于输出一个字符%c 控制字符常量或字符变量的输出。,%mc:指定输出数据宽度,右靠齐,左补空格%mc:左靠齐,右补空格。,例 3.3 void main()char c=a;int i=97;printf(“%c”,a);printf(“%c,%dn”,c,c);printf(“%c,%dn”,i,i);,如:char c=a;printf(“%3c”,c);输出:a 又如:printf(“%3c%3c”,a,b);输出:a b,(3)s 格式符:输出一个字符串%s%ms:规定输出字符串占的列宽。字符串 长度 m 时,全部
22、输出。反之则右靠齐,左补 空格或左靠齐,右补空格。%m.ns:规定输出字符串所占列宽,只取 字符串中左端 n个字符。输出右靠齐,左补空 格或左靠齐,右补空格。当 n m 时,则 m 自动取 n 的值以保证 n 个字符正输出。,例 3.4 void main()printf(“%3s,%7.2s,%.4s,%5.3s n”,“CHINA”“CHINA”,“CHINA”,“CHINA”);输出:CHINA,CH,CHIN,CHI,例 3.3,c 格式符用于输出一个字符例 3.3 void main()char c=a;int i=97;printf(“%c”,a);printf(“%c,%dn”,
23、c,c);printf(“%c,%dn”,i,i);,重点,域宽控制,c 格式符域宽控制main()char c=a;printf(“%3cn”,c);printf(“%3c%3c”,a,b);输出:aa b,重点,s 格式符,s 格式符 输出一个字符串void main()printf(“%3s,%7.2s,%.4s,%5.3s n”,“CHINA”“CHINA”,“CHINA”,“CHINA”);输出:CHINA,CH,CHIN,CHI,示例,域宽控制,(4)f 格式符:用于输出实数(包括单,双精度)%f系统自动指定宽度,整数部分全部输出 并输出6位小数。但并非全部数字都是有效 数字。一般
24、 单精度实数有效位为7 位。双精度实数为16位。,%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,
25、例 3.5 111111.111+222222.222=?,浮点数丢失 精度,浮点数丢失 精度 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,重点,(4)f 格式符:用于输出实数(包括单,双精度)%f系统
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 简单 程序设计
链接地址:https://www.31ppt.com/p-6440745.html