《scanf函数(格式输入函数)课件》由会员分享,可在线阅读,更多相关《scanf函数(格式输入函数)课件(86页珍藏版)》请在金锄头文库上搜索。
1、,scanf函数(格式输入函数) 1.一般形式 scanf(格式控制符,地址列表) 作用:按格式控制符的要求将数据从终端传送到变量地址所指定 的内存空间 说明:“格式控制”的含义同printf函数; “地址表列”是由若干个地址组成的表列,可以是 变量的地址,或字符串的首地址;,scanf(“%d%d”,scanf函数中的“格式控制”后面应当是变量地址,而不是变量名。,复习,注意:,1)可以指定输入数据所占列数,系统自动按它截取所需数据,如: scanf(“%3d%3d”, 如果输入:a b c,复习,例:若输入12345和abc,以下程序的输出结果是( )。main() int a; char
2、 ch; scanf(“%3d%3c”,A) 123, abcB) 123,4C) 123,aD) 12345,abc,复习,B,例:鸡兔同笼,已知鸡兔总头数为h,总脚数为f,求鸡兔各多少只? 分析:设鸡x只 兔y只 则 解得,#include void main() int x,y,h,f; scanf(“%d%d”, ,运行情况: 928 head=9,foot=28 chicken=4,rabbit=5,复习,引例 计算函数值 需考虑输入x 判断x的值 根据x的值,计算y值 输出y值 显然顺序结构不能实现,须引入选择结构,#include #include void main() flo
3、at x,y; scanf(“%f”, ,运行情况: 2 x=2.00 y=0.4546,判别选择结构程序设计,首先判别条件,若条件满足,程序执行a块,否则,执行b块;,条件成立?,执行a块,执行b块,成立,不成立,满足条件否,满足,不满足,执行a块,执行b块,传统流程图,N-S流程图,第五章 选择结构程序设计,要设计选择结构程序,要考虑两个方面的问题:一是在C语言中如何来表示条件,二是在C语言中实现选择结构用什么语句。 5.1 关系运算及其表达式 5.2 逻辑运算及其表达式 5.3 if语句 5.4 switch语句 5.5 选择结构程序举例,表示条件,实现选择结构,5.1 关系运算符和关系
4、表达式 关系运算实质是比较运算,它是将两个值进行比较,判断其比较的结果是否符合给定的条件,其结果为真(1)或者为假(0)。 5.1.1关系运算符及其优先次序 C语言提供了6种关系运算符:, 大于 = 大于或等于,= 等于 != 不等于,优先级相同(高),优先级相同(低),说明:1)关系 运算符的优先级 低于算术运算; 2)关系运算符 的优先级高于赋 值运算符,关系运算符结合方向自左向右,5.1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称为关系表达式。下面为一些合法的关系表达式 x!=0 a+bb+c (a=3)(
5、b=5) ab 关系表达式的结果只有两种:真或假;在C语言中,以1代表“真”,0代表“假”。 例:假设a=3,b=2,c=1,则: (ab)=c 结果为:表达式的值为1(真); d=ab 结果为:d 的值为1,表达式的值为1 ; f=abc 结果为:f 的值为0,表达式的值为0 ;,例:设a=1,b=-5,c=a,则: (1)ca+b (2)a=bc (3)a=bc,1,1,1,5.2逻辑运算符和逻辑表达式 5.2.1逻辑运算符及其优先次序 C语言提供三种逻辑运算符:,(1) k=(+a0) A) 104B) 103C) 003D) 004,一个重要的例子: 判断某一年是否为闰年的方法。而为闰
6、年的条件是符合下面两者之一: (1)能被4整除,但不能被100整除; (2)能被4整除,又能被400整除; 写出逻辑表达式: 首先分析逻辑结构: 1、条件(1)和条件(2)的关系应该是“或”; 2、而每个条件内部应该为“与”关系; 3、条件(2)内,满足被400整除的一定满足被4整除,因此只需一个逻辑表达式即可; 所以最后的逻辑表达式为: (year%4=0),表达式,语句,假(0),真(非0),xy,printf (“%d”,x),假(0),真(非0),if(xy) z=y; y=x; x=z; ,5.1 关系运算符和关系表达式 关系运算实质是比较运算,它是将两个值进行比较,判断其比较的结果
7、是否符合给定的条件,其结果为真(1)或者为假(0)。 5.1.1关系运算符及其优先次序 C语言提供了6种关系运算符:, 大于 = 大于或等于,= 等于 != 不等于,优先级相同(高),优先级相同(低),说明:1)关系 运算符的优先级 低于算术运算; 2)关系运算符 的优先级高于赋 值运算符,关系运算符结合方向自左向右,5.1.2关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式,逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称为关系表达式。 关系表达式的结果只有两种:真或假;在C语言中,以1代表“真”,0代表“假”。 例:假设a=3,b=2,c=1,则: (ab)=c d
8、=ab f=abc,5.2逻辑运算符和逻辑表达式 5.2.1逻辑运算符及其优先次序 C语言提供三种逻辑运算符:,(1),表达式,语句,假(0),真(非0),xy,printf (“%d”,x),假(0),真(非0),if(xy) z=y; y=x; x=z; ,2. if (表达式) 语句1 else 语句2 例如: if (xy) printf (“%d”,x); else printf(“%d”,y);,表达式,语句1,假(0),真(非0),语句2,xy,printf (“%d”,x),假(0),真(非0),printf(“%d”,y),3. if (表达式1) 语句1 else if (
9、表达式2) 语句2 else if (表达式3) 语句3 else if (表达式m) 语句m else 语句n,表达式1,语句1,假,真,表达式2,语句2,真,假,表达式3,语句3,语句4,真,假,表达式4,语句5,假,真,例: if (number500) cost=0.15; else if (number300) cost=0.10; else if (number100) cost=0.075; else if (number50) cost=0.05; else cost=0;,number500,cost=0.15,假,真,cost=0.10,真,假,cost=0.075,cos
10、t=0.05,真,假,cost=0,假,真,number300,number100,number50,说明: 1)if 语句中在if后面都有表达式,一般为逻辑表达式或关系表达式,也可以为其它表达式;如果表示式的值为0,则按“假”处理,如果为非0,则按“真”处理; 例如:if (3) printf(“O.K.”); 直接执行打印“O.K.” if (a) printf(“%d”,a); 打印a的ASCII码97 2)注意在if 语句第二、三形式中每个语句后都有分号; if (number500) cost=0.15; else if (number300) cost=0.10; else if
11、(number100) cost=0.075; else if (number50) cost=0.05; else cost=0;,3)在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时须用花括号“ ”将几个语句括起来成为一个复合语句。 例: if (a b) m = a ; printf(“The MAX number is %d”, m); else m = b; printf(“The MAX number is %d”, m); ,例5.1:输入两个实数,按代数值由小到大的次序输出这两个数; 分析:这是一个简单而重要的程序,算法的关键在与设 置一个中间交换变量
12、,用于比较两个实数的大小 后进行次序的变换; 设a=8,b=5 a=b; b=a; 引入中间变量t t=a; a=b; b=t;,a,b,t,例5.1:输入两个实数,按代数值由小到大的次序输出这两个数; 分析:这是一个简单而重要的程序,算法的关键在与设 置一个中间交换变量,用于比较两个实数的大小 后进行次序的变换; 程序: main( ) float a, b, t; scanf(“%f,%f”, ,例5.2 输入3个数a、b、c,要求按由小到大的顺序输出; 分析: 1)对于任意两个数a、b: 若abc a cb bac bca cab cba,3)其伪代码算法为: if ab 将a和b对换
13、(对换之后,a比b小) if ac 将a和c对换 (对换之后,a比c小,a为最小) if bc 将b和c对换 (对换之后,b比c小,b为次小),经过三次比较和变换后:a为最小值,b为次小值,c为最大值。,例5.2 输入3个数a、b、c,要求按由小到大的顺序输出; 分析:此题算法比上题稍微复杂一些。上题为两个变量 比较大小,只需进行一次比较,而本题为三个变 量,则需进行三次比较。其伪代码算法为: if ab 将a和b对换 (对换之后,a比b小) if ac 将a和c对换 (对换之后,a比c小,a为最小) if bc 将b和c对换 (对换之后,b比c小,b为次小) 经过三次比较和变换后:a为最小值
14、,b为次小值,c为最大值。 程序可写为:,#include void main( ) float a, b, c, t; scanf(“%f,%f,%f”, ,是,是,是,否,否,否,例:输入一个整数a,判断它是偶数还是奇数 分析:a%2=0 程序: #include void main() int a; printf (“input a numbei: ”); scanf(“%d”, ,例:设平面上一点M,其坐标为(x,y),若M落在圆心在坐标原点的单位园上,则置key=1,落在圆外key=2,落在圆内置key=0。,算法a: 若r1 key=2 若r=1 key=1 若r1 key=0 输
15、出x,#include b #include void main() float x,y,r; int key; scanf(“%f%f”, ,例:设平面上一点M,其坐标为(x,y),若M落在圆心在坐标原点的单位园上,则置key=1,落在圆外key=2,落在圆内置key=0。,#include 算法b #include void main() float x,y,r; int key; scanf(“%f%f”, ,5.3 if 语句,5.3.1 if 语句的三种形式: 1. if (表达式) 语句 执行过程,如左图: if (xy) printf (“%d”,x);,表达式,语句,假(0),真(非0),xy,printf (“%d”,x),假(0),真(非0),复习,1以下程序实现:输入三个整数,按从大到小的顺序进行输出。请填空。 main() int x, y, z, c; scanf(“%d %d %d”, ,xy,复习,xz ,,yz,2. if (表达式) 语句1 else 语句2 例如: