二章算法简单的C程序计ppt课件

上传人:博****1 文档编号:592687969 上传时间:2024-09-22 格式:PPT 页数:48 大小:1.80MB
返回 下载 相关 举报
二章算法简单的C程序计ppt课件_第1页
第1页 / 共48页
二章算法简单的C程序计ppt课件_第2页
第2页 / 共48页
二章算法简单的C程序计ppt课件_第3页
第3页 / 共48页
二章算法简单的C程序计ppt课件_第4页
第4页 / 共48页
二章算法简单的C程序计ppt课件_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《二章算法简单的C程序计ppt课件》由会员分享,可在线阅读,更多相关《二章算法简单的C程序计ppt课件(48页珍藏版)》请在金锄头文库上搜索。

1、C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院 第二章第二章 算法和最简单的算法和最简单的 C C 程序设计程序设计本章要点:本章要点:掌握掌握了解算法的基本概念与特征了解算法的基本概念与特征 掌握掌握熟悉结构化程序设计的基本概念熟悉结构化程序设计的基本概念 掌握算法的表示方法掌握算法的表示方法 C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院 2.1 算法算法一、算法的概念一、算法的概念 NikiklausNikiklaus Wirth Wirth 公式公式 程序程序 = = 数据结构数据结构 + + 算法算法 数

2、据结构:数据结构:对数据的描述,在程序中指定数据的对数据的描述,在程序中指定数据的 类型和数据的组成形式。类型和数据的组成形式。 算法:算法:对操作的描述,即解决问题的方法和步骤。对操作的描述,即解决问题的方法和步骤。 程序程序 = = 数据结构数据结构 + + 算法算法 + + 程序设计方法程序设计方法 + + 语言工具语言工具 + + 环境环境C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院2.1 算法算法 二、算法的特性二、算法的特性 1. 1. 有穷性有穷性 一个算法包含的操作步骤应当是有限的。一个算法包含的操作步骤应当是有限的。 2 2. 确定性

3、确定性 一个一个算法的含义应当是唯一的,算法中的每一个算法的含义应当是唯一的,算法中的每一个 步骤应当是确定的,不应产生步骤应当是确定的,不应产生 “ “ 歧义性歧义性 ”。 3 3. 有零个或多个输入有零个或多个输入 4. 有一个或多个输出有一个或多个输出 5. 有效性有效性 算法中的每一步都应当能有效地执行,算法中的每一步都应当能有效地执行, 并得到正确的结果。并得到正确的结果。 C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院三、简单算法举例三、简单算法举例 1. 1. 求求 12 3 4 5 ( 12 3 4 5 ( 即即 5! )5! ) 算法一

4、算法一: : 步骤步骤1 1: 12 : 12 得得 2 ;2 ; 步骤步骤2 2: 23 : 23 得得 6;6; 步骤步骤3 3: 64 : 64 得得 24 ; 24 ; 步骤步骤4 4: 245 : 245 得得 120 ; 120 ; 2.1 算法算法C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院算法二算法二: 设设 p 为被乘数为被乘数, i 为乘数为乘数,采用循环算法采用循环算法。 S1 : 使使 p = 1 ; S2 : 使使 i = 2 ; S3 : 使使 p i p S4 : 使使 i + 1 i S5: 如果如果 i 不大于不大于5

5、 则返回重新则返回重新 执行执行 S3 , S4 ,S5 ; 否则,否则, 算法结束。算法结束。2.1 算法算法三、简单算法举例三、简单算法举例 1. 1. 求求 12 3 4 5 ( 12 3 4 5 ( 即即 5! )5! ) C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院2.2. 对一个大于或等于对一个大于或等于3 3的正整数,判断它是不是的正整数,判断它是不是 一个素数。一个素数。算法一:算法一: 将将 n n 作为被除数,将作为被除数,将 2 2 到到 ( ( n 1n 1 ) ) 各个整数轮流作为除数,如都不能被各个整数轮流作为除数,如都不能

6、被 整除,则整除,则 n n 为素数。为素数。 2.1 算法算法三、简单算法举例三、简单算法举例C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院算法二:算法二: 将将 n 作为被除数,将作为被除数,将2到到n/2(或者是或者是 2 到到 n1/2 )各个整数轮流作为除数,如都不能被整除,则各个整数轮流作为除数,如都不能被整除,则n为为素数。素数。 S1: 输入输入 n 的值的值 S2: i = 2 ( i 作为除数作为除数 ) S3: n 被被 i 除,得余数除,得余数 r S4: 如如r= 0,则输出,则输出“不是素数不是素数”,反之执行,反之执行 S5

7、 S5: i + 1 i S6: 如果如果 i n 1 , 返回返回 S3 ; 否则输出否则输出 “是素数是素数 ”结束。结束。2.1 算法算法三、简单算法举例三、简单算法举例C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院自然语言自然语言传统流程图传统流程图结构化流程图结构化流程图伪代码伪代码PDAPDA图。图。 2.1 算法算法四、算法的表示方法四、算法的表示方法C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院1. 1. 传统流程图传统流程图 特点特点: : 用一些规定的图框表示各种操作。用一些规定的图框表示各种操

8、作。 直直观形象观形象, ,易于理解。易于理解。 常用的常用的ANSIANSI规定图形符号如图:规定图形符号如图:起始或结束框起始或结束框输入输出框输入输出框判断框判断框处理框处理框流程线流程线连接点连接点注释框注释框2.1 算法算法四、算法的表示方法四、算法的表示方法C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院 用用传统流程图传统流程图来表示求来表示求 5 5!。!。开始开始i 51t2ititi + 1i结束结束NC语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院2. 2. 程序的三种基本结构程序的三种基本结构

9、一个程序只能由三种基本结构一个程序只能由三种基本结构( (或由它们派或由它们派生出来的结构生出来的结构) )组成,这三种结构为:组成,这三种结构为: (1) (1) 顺序结构顺序结构 (2) (2) 选择结构选择结构 (3) (3) 循环结构循环结构ABABPP1AP2A成立成立成立成立不成立不成立顺序结构顺序结构 选择结构选择结构 循环结构循环结构C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院 3. 用用 N S 流程图表示算法流程图表示算法 N S 结构化流程图是根据美国学者结构化流程图是根据美国学者 I . Nassi和和 B.Shneiderma

10、n 1973年提出的算法来描述的年提出的算法来描述的, 属于属于无流线无流线的流程图,简称的流程图,简称 N S 图。图。 A B C真真 P 假假 A B当当P为真为真 A A直到直到P为假为假顺序结构顺序结构 选择结构选择结构 循环结构循环结构C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院 真真 P1 假假 当当 P2 为真为真 真真 P3 假假 A B C一般情况一般情况 N S 图的特点:图的特点: 比自然语言描述更直观、形象、易于理解。比自然语言描述更直观、形象、易于理解。 比传统流程图紧奏易画。比传统流程图紧奏易画。 图中的上下顺序就是执行时

11、的顺序,符合图中的上下顺序就是执行时的顺序,符合 “ “自顶向下,逐步细化自顶向下,逐步细化”的结构化程序设计要求。的结构化程序设计要求。C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院求求 5 5!的的 N N S S 流程图流程图 1 t2 i ti ti + 1 i直到直到 i 5输出输出C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院判断判断素数素数的的 N N S S 流程图流程图输入输入 n 0 w2 in / i 的余数的余数 rr = 0是是否否1 wi + 1 i直到直到 i n1/2 或或 w 0w

12、 = 0是是否否“是是素数素数”“不是素数不是素数”C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院表达式语句:表达式语句: 表达式表达式;2.2 C 语句概述语句概述C语句包括语句包括: 控制语句控制语句 ( 9 ) 种种 if ( ) else ; for ( ) ; while ( ) ; do while ; continue ; break ; switch ; goto ; return控制语句控制语句 1 1函数调用函数调用语句语句 例如:例如: y = cos(0.5); y = sin(cos(0.5); printf(“Hello”);

13、 函数调用语句函数调用语句 2 2复合语句复合语句格式格式 语句语句1; 语句语句 n ; 复合语句复合语句 5 5空语句:空语句: ;C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院 2.3 赋值语句赋值语句 赋值语句由赋值表达式加上分号构成。赋值语句由赋值表达式加上分号构成。 如:如: a = b ; C语言中将赋值表达式和赋值语句分开来,语言中将赋值表达式和赋值语句分开来, 其目的是增加表达式的种类和使用范围。其目的是增加表达式的种类和使用范围。 如:如: (1) if ( x 0 ) (2) if ( (a = b ) 0 ) t = a ; C语

14、语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院2.4 字符数据的输入输出字符数据的输入输出 C C 程序的输入和输出完全依靠调用标准输入程序的输入和输出完全依靠调用标准输入和输出函数来完成。和输出函数来完成。 常用的常用的 4 4个个I/OI/O 函数为函数为 : scanf ( ) getchar ( ) printf ( ) putchar ( ) C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院输出单个字符输出单个字符输出转义字符输出转义字符3.4 字符数据的输入输出字符数据的输入输出 一、一、putchar 函数

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

16、 Y ; putchar ( a ) ; putchar ( b ) ; putchar ( c ) ; 输出结果输出结果: BOY 例如例如例如例如输出单个转义字符输出单个转义字符# include main( ) putchar ( 101 ) ; putchar ( ) ; putchar (n ) ; 输出结果输出结果: :A A 重点重点重点重点C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院3.4 字符数据的输入输出字符数据的输入输出 二、二、 getchar 函数函数 (字符输入函数字符输入函数)作用作用: 从从终端终端(即系统隐含指定的输入

17、设备即系统隐含指定的输入设备 ( 如键盘如键盘),输入,输入一个字符。说明说明: 1. 执行时,输入字符并按回车键后,才将其输入执行时,输入字符并按回车键后,才将其输入到缓冲区,只读取一个字符给变量。到缓冲区,只读取一个字符给变量。2.getchar 函数接收的一个字符,可以赋给函数接收的一个字符,可以赋给char型或型或 int 型变量,也可不赋给任何变量。型变量,也可不赋给任何变量。3.使用使用 putchar 和和 getchar 函数需用预编译命令函数需用预编译命令#include 将将 “stdio.h” 包括进去。包括进去。例例3.2:从键盘输入一个字符再输出。:从键盘输入一个字符

18、再输出。 从键盘输入一个字符再输出。从键盘输入一个字符再输出。 #include “stdio.h” main ( ) char c ; c = getchar( ) ; putchar ( c ) ; 若输入若输入 : a 则输出则输出 : a 实例实例实例实例C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院示例示例2示例示例1格式控制格式控制 输出表列输出表列3.5 格式输入与输出格式输入与输出 一、一、printf 函数函数 (格式化输出函数格式化输出函数 )1. 格式格式: printf( , ); 作用作用: 向系统终端(或隐含的输出设备向系统终

19、端(或隐含的输出设备) 输出输出若若干干 个指定类型个指定类型的数据。的数据。2. 格式字符格式字符(共共 9 种种) 作用:控制作用:控制不同类型数据的不同格式输出。不同类型数据的不同格式输出。 (1) d格式符:用于输出十进制整数格式符:用于输出十进制整数 %d:按整型数的实际长度输出。按整型数的实际长度输出。 %md:m为指定的输出数据宽度,若数据位为指定的输出数据宽度,若数据位 数数 m 时时,全部输出。反之则全部输出。反之则右右靠齐,靠齐,左左补补 空格或左靠齐,右补空格。空格或左靠齐,右补空格。 %m.ns:规定输出字符串所占列宽,只取规定输出字符串所占列宽,只取 字符串中左端字符

20、串中左端 n个字符。输出个字符。输出右右靠齐,靠齐,左左补空补空 格或左靠齐,右补空格。当格或左靠齐,右补空格。当 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 ; pr

21、intf (“ %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); p

22、rintf(“%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”) ; 输出输出:CHINA , CH , CHIN , CHI 示例示例示例示

23、例C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院域宽控制域宽控制 (4) f 格式符格式符: 用于输出实数用于输出实数( 包括单,双精度包括单,双精度 ) %f系统自动指定宽度,整数部分全部输出系统自动指定宽度,整数部分全部输出 并输出并输出6位小数。但并非全部数字都是有效位小数。但并非全部数字都是有效 数字。一般数字。一般 单精度实数有效位为单精度实数有效位为7 位。位。 双精度实数为双精度实数为16位。位。 %mf %m.nf 规定输出实数占的列宽,且有规定输出实数占的列宽,且有n 位小数如果数值长度位小数如果数值长度 m ,则输出右靠齐,则输出右靠

24、齐, 左补空格左补空格 或或左左靠齐,靠齐,右右补空格。补空格。 例例 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); 输出

26、输出: 123. 55994123.455994123.46123.46123.46 重点重点重点重点C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院 例程执行及分析例程执行及分析例例 3.2 (5) u 格式格式符符: 用于按十进制形式输出用于按十进制形式输出unsigned 型数据。型数据。 说明说明: 有符号有符号int 型与型与unsigned 型数据可以相互赋值,型数据可以相互赋值,故故 int 型可以用型可以用%u格式输出;格式输出;unsigned 型也可以用型也可以用 %d 格式输出。格式输出。 unsigned 型型还可以用还可以用%o和

27、和 %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 格式格式符符用于按十进制形式用于按十进制形式输出输出uns

28、igned型数据型数据例例 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重点重点重点重点C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院

29、 (6) e 格式格式符符: 用于按指数形式输出实数用于按指数形式输出实数 %e 由系统自动指定给出由系统自动指定给出 6 位小数,指数位小数,指数部分部分占占5 位位(如如 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 位小数。位小数。 如果数值长度如果数值长

30、度 m ,则输出,则输出右右靠齐,靠齐,左左补空补空格或格或左左靠齐,右补空格。靠齐,右补空格。 例如例如e 格式格式符符: 用于按指数形式用于按指数形式输出实数输出实数 main( ) float f = 123.456 ; printf(“%e%10en”, f, f); printf(“%10.2e%.2e%10.2e”, f, f, f ) ; 输出输出:1.234560e+0021.234560e+0021.23e+0021.23e+0021.23e+002 重点重点重点重点C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院1. 输出项与格式符必须

31、按照从左至右的顺序在输出项与格式符必须按照从左至右的顺序在 类型上一一匹配。类型上一一匹配。2. 格式字符要格式字符要小写小写。如。如: %f %F3. 如果格式字符的个数如果格式字符的个数少于少于输出项数时,多余的输输出项数时,多余的输出项不予输出。反之若格式字符的个数大于输出项出项不予输出。反之若格式字符的个数大于输出项数时,各系统的处理不同。数时,各系统的处理不同。 printf函数使用的注意事项:函数使用的注意事项:4. 注意常规注意常规 d e f o x u c s e g 等字符在等字符在“%” 后面与一般情形的区别。后面与一般情形的区别。 如如: print (“c=%c,f=

32、%f,s=%s”, c, f, s) ;5. 可以输出可以输出“%”号号 例如例如: printf ( “ %f % % ” , 1.0/3 ) ; 输出输出: 0.333333% 了解了解例如:例如:Turbo C中对于缺少中对于缺少项输出不定值,而项输出不定值,而VAX C则则输出输出 0 值。值。 例如:例如: printf ( “ %d , %f , %un ” , x ,y ,z ,t) ; printf ( “ %d ,%f,%u , %e n ” , x , y , z ) ;格式字符的个数格式字符的个数少于少于输出项数输出项数例如:例如: Turbo C中对于缺少项输出不定值,

33、中对于缺少项输出不定值,而而VAX C则输出则输出 0 值。值。例如:例如: printf(“%d,%f,%un”, x, y, z, t) ; printf(“%d,%f,%u,%en”, x, y, z);请自行编程验证请自行编程验证!了解了解了解了解C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院二、二、scanf 函数函数 (格式化输入函数格式化输入函数) 作用作用: 用于输入任何类型的多个数据用于输入任何类型的多个数据 1. 格式格式: scanf ( 格式控制格式控制 , 地址表列地址表列 ) ; 格式控制格式控制同同 printf 函数的格式

34、控制含义一样。函数的格式控制含义一样。地址表列由多个输入项的地址表列由多个输入项的地址地址构成。可以是构成。可以是变变 量量的地址或的地址或字符串字符串的首地址或的首地址或数组元素数组元素的地址等。的地址等。例例 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.在输入数据时,两个数据在输入数据时,两个数据之间可以用一个或之间可以用一个或

35、多个多个 空格,也可用回车空格,也可用回车键或跳格键键或跳格键( Tab )。 例如例如: 345 3 45 3(Tab键键)4 5 均合法。而均合法。而3 , 4 , 5 不不合法。合法。 如果将如果将 scanf ( “ %d %d %d ”, &a ,&b ,&c) ; 改成改成: scanf ( “ %d ,%d , %d ” ,&a ,&b ,&c) ; 则输入数据时只有则输入数据时只有 3 , 4 , 5 合法。合法。 注意注意:3.在输入数据时,并非输入在输入数据时,并非输入完一个数据就被读入并完一个数据就被读入并 送给一个变量,而是在键送给一个变量,而是在键入一行字符并按回车键

36、入一行字符并按回车键 后才将该行字符输入缓冲后才将该行字符输入缓冲区,然后区,然后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) 在输入数据时,两个数据之间可以用一

37、在输入数据时,两个数据之间可以用一个或多个个或多个 空格,也可用回车键或跳格键空格,也可用回车键或跳格键 例如例如: scanf(“%d%d%d”, &a, &b, &c);对应的合法输入对应的合法输入 345 3 45 3(Tab键键)4 5 对应的对应的典型输入错误典型输入错误: 3 , 4 , 5 若语句改为若语句改为: scanf(“%d,%d,%d”,&a ,&b ,&c) ; 则输入数据时只有则输入数据时只有 3 , 4 , 5 合法。合法。重点重点重点重点scanf函数注意函数注意(3)回车确认输入回车确认输入 在输入数据时,并非输入完一个在输入数据时,并非输入完一个数据就被读入

38、并送给一个变量,而是数据就被读入并送给一个变量,而是在键入一行字符并按回车键后才将该在键入一行字符并按回车键后才将该行字符输入缓冲区,然后行字符输入缓冲区,然后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); C语语言言

39、程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院程序找错程序找错抑制字符抑制字符 指定输入数据宽度指定输入数据宽度 关于关于%u的说明的说明 2.格式说明格式说明 (1) 标准标准C中中scanf 函数不使用函数不使用 %u格式,格式, Turbo C中可用。中可用。 (2) 可以指定整型变量输入数据宽度。可以指定整型变量输入数据宽度。 (3) 可以使用可以使用抑制字符抑制字符 %* (4) 不能规定输入数据的精度不能规定输入数据的精度(与与 printf 函数不同函数不同) (4) 不能规定输入数据的精度不能规定输入数据的精度(与与 printf 函数不函数不同同

40、) 如如: scanf ( “ %7.2f ”, &a ) ; ( 不合法不合法) 即不能输入即不能输入 1234567 来使来使 a = 12345.67。 2.格式说明格式说明 (1) 标准标准C中中scanf 函数不函数不使用使用 %u格式。格式。 对对 unsigned型数据以型数据以 %d 或或 %o , %x 格式输入。格式输入。 而而 Turbo C中可以使用中可以使用 %u 格式来输入无符号数。格式来输入无符号数。(2) 可以指定输入数据宽度。可以指定输入数据宽度。如:如: scanf ( “ %3d %3d ” , &a , &b ) ; 输入输入: 123456 则则: a

41、 是是 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中可以使用中可

42、以使用 %u 格式来输入格式来输入无符号数。无符号数。极宽框极宽框1 1内容。内容。1 1scanf 函数函数指定输入数据宽度指定输入数据宽度 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 则则

43、 a 是是 12 b 是是 673 3scanf 函数函数不能规定输入数据的精度不能规定输入数据的精度(与与 printf 函数不同函数不同) 程序找错程序找错main( ) float x; double y; scanf(“%7.2f”, &x ) ; ( 不合法不合法) scanf(“%f ”, &y ) ; (类型类型 不不匹配匹配) 不能输入不能输入 1234567 来使来使 x =2345.67;不能输入不能输入 123456789使使 y =123456789 4 4 C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院(5) 注意包含头文件注意

44、包含头文件(4) 在输入数据时,遇到以下情况该数据认为结束。在输入数据时,遇到以下情况该数据认为结束。 空格或回车或空格或回车或“ Tab ”键键 数据宽度结束数据宽度结束 如如: %3d 只取只取3列。列。 非法输入非法输入(3) 使用使用 %c 格式时,空格字符,转义字符,回车格式时,空格字符,转义字符,回车 等都是有效字符。等都是有效字符。 3. 注意的问题注意的问题: (1) scanf函数用变量的地址作参数。函数用变量的地址作参数。 (2)格式字符中可以有其它字符但此时输入数据格式字符中可以有其它字符但此时输入数据应将这些字符原样输入。应将这些字符原样输入。 示例示例示例示例输入输入

45、输入输入2输入输入1示例示例2 示例示例1错例错例 (4) 在输入数据时,遇到以下情况该数据认为结束。在输入数据时,遇到以下情况该数据认为结束。 空格或回车或空格或回车或“ Tab ”键键 数据宽度结束数据宽度结束 如如: %3d 只取只取3列。列。 非法输入非法输入 如如: scanf ( “ %d %c %f ”, &a , &b , &c ) ; 若输入若输入: :1234a123o.36 则则: : a = 1234 b = a c =1233. 注意的问题注意的问题: (1) 注意变量的地址。注意变量的地址。 如如: scanf ( “ %d %d ” , a , b ) ; 3.

46、注意的问题注意的问题: (2)格式字符中可以有其它格式字符中可以有其它字符但此时输入数据应将这字符但此时输入数据应将这些字符原样输入。些字符原样输入。 全例全例main() scanf ( “ %d , %d ”, &a , &b ) ; 3. 注意的问题注意的问题: (2)格式字符中可以有其它格式字符中可以有其它字符但此时输入数据应将这字符但此时输入数据应将这些字符原样输入。些字符原样输入。 全例全例main()scanf ( “ a = %d , b = %d ” , &a , &b ) ; 输入应为输入应为: 3 , 4 而此时输入而此时输入 34 或或 3(Tab)4 都不合法。都不合

47、法。则输入应为则输入应为: a = 12 , b = 13 (3) 使用使用 %c 格式时,空格格式时,空格字符,转义字符,回车等都字符,转义字符,回车等都是有效字符。是有效字符。 全例全例main()scanf ( “ %c %c %c ”, &c1 , &c2 , &c3 ) ; 若输入若输入:abc 则则 c1 = a ,c2 = ,c3 = b 应输入应输入: abc scanf函数参数函数参数注意变量地址的作用注意变量地址的作用典型错误典型错误main( ) int a, b; scanf ( “ %d %d ” , a , b ) ; printf(“sum=%d”, a + b)

48、;1 1scanf函数参数函数参数注意的问题注意的问题(2) 格式字符中可以有其它字符,但此时格式字符中可以有其它字符,但此时输入数据应将这些字符原样输入。输入数据应将这些字符原样输入。 main()int a, b; scanf(“%d,%d”, &a , &b ); printf(“%d”, a + b);2 2scanf函数参数函数参数注意的问题注意的问题(2) 格式字符中可以有其它字符,但此格式字符中可以有其它字符,但此时输入数据应将这些字符原样输入。时输入数据应将这些字符原样输入。 main() int a, b; scanf ( “a=%d,b=%d”, &a , &b ); pr

49、intf(“%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

50、= 12 , b = 13 重点重点重点重点若输入若输入:abc 则:则:c1=a,c2 =,c3=b应输入应输入: abc 重点重点重点重点注意:注意: 在使用上述四个函数时,在使用上述四个函数时, getchar 和和 putchar函数需用预编译命令函数需用预编译命令 #include 将将 “stdio.h” 包括进去。包括进去。 而而printf 和和scanf 函数则不需要。函数则不需要。注意注意 在使用上述四个函数时,在使用上述四个函数时, getchar 和和 putchar函数需用预编译命令函数需用预编译命令 #include 将将 “stdio.h” 包括进去。包括进去。

51、而而printf 和和scanf 函数则不需要。函数则不需要。重点重点重点重点scanf函数参数函数参数注意的问题注意的问题(4)在输入数据时,遇到以下情况该数在输入数据时,遇到以下情况该数据认为结束。据认为结束。 空格或回车或空格或回车或“ Tab ”键键 数据宽度结束数据宽度结束 如如: %3d 只取只取3列。列。 非法输入非法输入如如: scanf(“%d%c%f ”, &a, &b , &c ) ;若输入若输入:1234a123o.36 则则: a = 1234 b = a c =123重点重点重点重点C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学

52、院注意:注意: 在使用上述四个函数时,在使用上述四个函数时, getchar 和和 putchar函数需用预编译命令函数需用预编译命令 #include 将将 “stdio.h” 包括进去。包括进去。 而而printf 和和scanf 函数则不需要。函数则不需要。C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院3.6 程序举例程序举例例例3.10 已知三角形的三条边长,计算三角形的面积。已知三角形的三条边长,计算三角形的面积。数学公式:面积数学公式:面积= (s*(s a)*(s b)*(s c)1/2 其中:s =1/2 *(a+b+c) main (

53、) 1.1.定义相关的变量定义相关的变量 3.3.计算计算s s和面积和面积 4.4.输出三边长和面积输出三边长和面积 2.2.输入三角形三边长输入三角形三边长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 ,b ,c ,area) ;C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院例例3.10 #include main ( ) float a ,

54、 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 ) ; C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院例例3.11 #include

55、void main ( ) char c1 , c2 ; c1 = getchar( ) ; pritnf ( “ % c , %d n ” , c1 , c1 ) ; c2 = c1 + 32 ; pritnf ( “ % c , %d n ” , c2 , c2 ) ; 输出结果输出结果: A A , 65 a ,C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院例例3.12#include “ math.h ”main ( ) float a , b , c , disc , x1 , x2 , p , q ; scanf(“a =%f ,b = %f

56、 ,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=%5.2f n ”,x1,x2);结果结果: a = 1, b = 3, c = 2 x1= 1.00 x2= 2.0 0 C语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院 补充例子补充例子: 1. #include “stdio.h” void main ( ) char

57、c1 , c2 ; c1 = getchar ( ) ; c2 = getchar ( ) ; putchar (c1) ; putchar (c2) 输入输入: A) ab B) a b C) ab D)a(Tab)b 答案:答案: CC语语言言程程序序设设计计第第二二章章四川理工学院四川理工学院四川理工学院四川理工学院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

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号