欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载  

    第二章 算法、简单的C程序设计.ppt

    • 资源ID:11929806       资源大小:1.80MB        全文页数:48页
    • 资源格式: PPT        下载积分:6
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要6
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第二章 算法、简单的C程序设计.ppt

    第二章 算法和最简单的 C 程序设计,本章要点: 掌握了解算法的基本概念与特征 掌握熟悉结构化程序设计的基本概念 掌握算法的表示方法,2.1 算法 一、算法的概念 Nikiklaus Wirth 公式 程序 = 数据结构 + 算法 数据结构:对数据的描述,在程序中指定数据的 类型和数据的组成形式。 算法:对操作的描述,即解决问题的方法和步骤。 程序 = 数据结构 + 算法 + 程序设计方法 + 语言工具 + 环境,2.1 算法 二、算法的特性 1. 有穷性 一个算法包含的操作步骤应当是有限的。 2. 确定性 一个算法的含义应当是唯一的,算法中的每一个 步骤应当是确定的,不应产生 “ 歧义性 ”。 3. 有零个或多个输入 4. 有一个或多个输出 5. 有效性 算法中的每一步都应当能有效地执行, 并得到正确的结果。,三、简单算法举例 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 作为被除数,将 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. 传统流程图 特点: 用一些规定的图框表示各种操作。 直观形象,易于理解。 常用的ANSI规定图形符号如图:,起始或结束框,输入输出框,判断框,处理框,流程线,连接点,注释框,2.1 算法,四、算法的表示方法,用传统流程图来表示求 5!。,2. 程序的三种基本结构 一个程序只能由三种基本结构(或由它们派生出来的结构)组成,这三种结构为: (1) 顺序结构 (2) 选择结构 (3) 循环结构,A,顺序结构 选择结构 循环结构,3. 用 N S 流程图表示算法 N S 结构化流程图是根据美国学者 I . Nassi和 B.Shneiderman 1973年提出的算法来描述的, 属于无流线的流程图,简称 N S 图。,真 P1 假 当 P2 为真 真 P3 假 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,复合语句 格式 语句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 函数 (字符输出函数 ) 作用: 向终端(即系统隐含指定的输出设备, 如显示器,打印机) 输出一个字符。 格式: 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 字符数据的输入输出 一、putchar 函数 (字符输出函数 ) 作用: 向终端(即系统隐含指定的输出设备, 如显示器,打印机) 输出一个字符。 格式: 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 函数 (字符输入函数),作用: 从终端(即系统隐含指定的输入设备 ( 如键盘),输入一个字符。,说明: 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. 格式: printf( , ); 作用: 向系统终端(或隐含的输出设备) 输出若干 个指定类型的数据。,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(“%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,格式控制,输出表列,rintf 函数使用示例: main( ) int a=3, b=2; printf(“%d,%d”, a , b); printf(“sum 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,格式控制: 由双引号括起来的字符串表示,包括格式说明和普通字符两部分。,重点,输出表列: 需要输出的数据,可以是: 常量,变量,表达式 ,函数,字符串常量 。,重点,3.5 格式输入与输出 一、printf 函数 (格式化输出函数 ) 1. 格式: printf( , ); 作用: 向系统终端(或隐含的输出设备) 输出若干 个任意类型的数据。,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(“%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,rintf 函数使用示例: main( ) int a=3, b=2; printf(“%d,%d”, a , b); printf(“sum is%d”, a+b); printf(“%d”, 123) ; printf(“%c”, getchar( ); ,重点,示例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格式符说明: 在指定输出数据宽度,且实际宽度和指定宽度不等时,系统默认补空格。但可以改为补零。, 如希望数据输出宽度随计算结果而定,则可在 % 和格式字符之间加一个 号,且数据宽度由紧跟在 “控制字符串”后面的常量或变量的值确定。,如: 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 = 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() int 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个字符。输出右靠齐,左补空 格或左靠齐,右补空格。当 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”, “CHINA”) ; 输出: 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 ); 输出: a a b,重点,s 格式符 输出一个字符串 void main ( ) printf(“%3s,%7.2s,%.4s,%5.3s n”, “CHINA” “CHINA”, “CHINA”, “CHINA”) ; 输出: 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 时,全部输出。反之则右靠齐,左补 空格或左靠齐,右补空格。 %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”, c, c); printf(“%c,%dn”, i, i); ,重点,域宽控制,c 格式符域宽控制 main( ) char c = a ; printf(“%3cn” , c ) ; printf(“%3c%3c”, a, b ); 输出: a a 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位小数。但并非全部数字都是有效 数字。一般 单精度实数有效位为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.455994 123.46123.46123.46,例 3.7,例 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.455994 123.46123.46 123.46,重点,(4) f 格式符: 用于输出实数( 包括单,双精度 ) %f系统自动指定宽度,整数部分全部输出 并输出6位小数。但并非全部数字都是有效 数字。一般 单精度实数有效位为7 位。 双精度实数为16位。,例 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.455994 123.46123.46123.46,例 3.7, %mf %m.nf 规定输出实数占的列宽,且有n 位小数如果数值长度 m ,则输出右靠齐, 左补空格 或左靠齐,右补空格。,例 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.455994 123.46123.46 123.46,重点,浮点数丢失 精度,域宽控制,例程执行及分析,例 3.2,(5) u 格式符: 用于按十进制形式输出unsigned 型数据。 说明: 有符号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 , 65534,a = 65535,b = 2,u 格式符用于按十进制形式 输出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 , 65534 a = 65535 b = 2,重点,例程执行及分析,例 3.2,(5) u 格式符: 用于按十进制形式输出unsigned 型数据。 说明: 有符号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 , 65534,a = 65535,b = 2,u 格式符用于按十进制形式 输出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 , 65534 a = 65535 b = 2,重点,(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 位小数。 如果数值长度 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+002 1.23e+0021.23e+0021.23e+002,重点,(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 位小数。 如果数值长度 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+002 1.23e+0021.23e+0021.23e+002,重点,1. 输出项与格式符必须按照从左至右的顺序在 类型上一一匹配。 2. 格式字符要小写。如: %f %F 3. 如果格式字符的个数少于输出项数时,多余的输出项不予输出。反之若格式字符的个数大于输出项数时,各系统的处理不同。,rintf函数使用的注意事项:,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%,了解,例如:Turbo 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); 请自行编程验证!,了解,1. 输出项与格式符必须按照从左至右的顺序在 类型上一一匹配。 2. 格式字符要小写。如: %f %F 3. 如果格式字符的个数少于输出项数时,多余的输出项不予输出。反之若格式字符的个数大于输出项数时,各系统的处理不同。,rintf函数使用的注意事项:,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%,了解,了解,例如:Turbo 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); 请自行编程验证!,重点,二、scanf 函数 (格式化输入函数) 作用: 用于输入任何类型的多个数据 1. 格式: scanf ( 格式控制 , 地址表列 ) ; 格式控制同 printf 函数的格式控制含义一样。 地址表列由多个输入项的地址构成。可以是变 量的地址或字符串的首地址或数组元素的地址等。 例 3.9 void main ( ) int a , b , c ; scanf ( “ %d %d %d ” , 输入: 输出: 3 , 4 , 5,345,关于 格式控制同 printf 函数的格式控制含义一样。 地址表列由多个输入项的地址构成。可以是变 量的地址或字符串的首地址或数组元素的地址等。 例 3.9 void main ( ) int a , b , c ; scanf ( “ %d %d %d ” , 输入: 输出: 3 , 4 , 5,注意: 2.在输入数据时,两个数据之间可以用一个或 多个 空格,也可用回车键或跳格键( Tab )。 例如: 345 345 3(Tab键)45 均合法。而3 , 4 , 5 不合法。 如果将 scanf ( “ %d %d %d ”, 则输入数据时只有 3 , 4 , 5 合法。,注意: 3.在输入数据时,并非输入完一个数据就被读入并 送给一个变量,而是在键入一行字符并按回车键 后才将该行字符输入缓冲区,然后scanf 函数从缓 冲区按规定格式要求从缓冲区读取数据。,关于 scanf(“%3d%3d”, 输入: abc 则ch得到字符a,2,scanf 函数 使用抑制字符 %* 如: scanf( “%2d%*3d%2d”, 输入: 1234567 则 a 是 12 b 是 67,3,scanf 函数 不能规定输入数据的精度 (与 printf 函数不同) 程序找错 main( ) float x; double y; scanf(“%7.2f”, 不能输入 123456789使 y =123456789,4,程序找错,抑制字符,指定输入数据宽度,关于%u的说明,2.格式说明 (1) 标准C中scanf 函数不使用 %u格式, Turbo C中可用。 (2) 可以指定整型变量输入数据宽度。 (3) 可以使用抑制字符 %* (4) 不能规定输入数据的精度(与 printf 函数不同),(4) 不能规定输入数据的精度(与 printf 函数不同) 如: scanf ( “ %7.2f ”, ( 不合法) 即不能输入 1234567 来使 a = 12345.67。,2.格式说明 (1) 标准C中scanf 函数不使用 %u格式。 对 unsigned型数据以 %d 或 %o , %x 格式输入。 而 Turbo C中可以使用 %u 格式来输入无符号数。,(2) 可以指定输入数据宽度。如: scanf ( “ %3d %3d ” , 输入: abc 则:ch 得到字符 a,2.格式说明 (3)可以使用抑制字符 %* 如: scanf ( “ %2d%*3d%2d ” , 输入: 1234567 则 a 是 12 , b 是 67,scanf 函数 格式说明 标准C中scanf 函数不使用 %u格式。对 unsigned型数据以 %d 或 %o , %x 格式输入。 而 Turbo C中可以使用 %u 格式来输入无符号数。极宽框1内容。,1,scanf 函数 指定输入数据宽度 main( ) int a, b; scanf(“%3d%3d”, 输入: abc 则ch得到字符a,2,scanf 函数 使用抑制字符 %* 如: scanf( “%2d%*3d%2d”, 输入: 1234567 则 a 是 12 b 是 67,3,scanf 函数 不能规定输入数据的精度 (与 printf 函数不同) 程序找错 main( ) float x; double y; scanf(“%7.2f”, 不能输入 123456789使 y =123456789,4,(5) 注意包含头文件,(4) 在输入数据时,遇到以下情况该数据认为结束。 空格或回车或“ Tab ”键 数据宽度结束 如: %3d 只取3列。 非法输入,(3) 使用 %c 格式时,空格字符,转义字符,回车 等都是有效字符。,3. 注意的问题: (1) scanf函数用变量的地址作参数。 (2)格式字符中可以有其它字符但此时输入数据应将这些字符原样输入。,示例,示例,输入,输入2,输入1,示例2,示例1,错例,(4) 在输入数据时,遇到以下情况该数据认为结束。 空格或回车或“ Tab ”键 数据宽度结束 如: %3d 只取3列。 非法输入 如: scanf ( “ %d %c %f ”, 若输入:1234a123o.36 则: a = 1234 b = a c =123,3. 注意的问题: (1) 注意变量的地址。 如: scanf ( “ %d %d ” , a , b ) ;,3. 注意的问题: (2)格式字符中可以有其它字符但此时输入数据应将这些字符原样输入。 全例 main() scanf ( “ %d , %d ”, ,3. 注意的问题: (2)格式字符中可以有其它字符但此时输入数据应将这些字符原样输入。 全例 main() scanf ( “ a = %d , b = %d ” , ,输入应为: 3 , 4 而此时输入 34 或 3(Tab)4 都不合法。,则输入应为: a = 12 , b = 13 ,(3) 使用 %c 格式时,空格字符,转义字符,回车等都是有效字符。 全例 main() scanf ( “ %c %c %c ”, ,若输入:abc

    注意事项

    本文(第二章 算法、简单的C程序设计.ppt)为本站会员(scccc)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




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

    三一文库
    收起
    展开