1、scanf,语句格式:,地址:内存储器中每一个字节的编号,一般可采用 16 进制表示。,2000,FFDC,scanf (“%d%d”, &a,&b);,地址符号,a,b,scanf (“格式控制符 ”,地址表列);,由若干个地址组成的表列。可以是变量的地址或字符串的首地址。,设:输入a,b两值,然后将a与b中的值互换。,main() int a, b, t;scanf(“%d,%dn”,输入 a,b,EXAMPLE3-3:,1、“格式控制符号” 与 “地址表列”,注,意,问,题,scanf,scanf(“%d,%d”, ,scanf(“%d,%d”, a, b);,2、特殊格式的使用,sca
2、nf(“a=%d, b=%d”, ,a=5, b=6 ,char ch100;canf(“%s ”, ,char ch100;canf(“%s ”, ch);,EXAMPLE3-3:,3、关于 “%c”格式,scanf(“%c%c%c”, ,abc ,a b c ,int x,y,z; scanf(“%d%d%d”, ,123 ,Review question,1 2 3 ,EXAMPLE3-3:,Summary,Important points:,变量名=表达式;,printf(“格式控制符”, “输出表列”);,scanf(“格式控制符”, “地址表列”);,第4章 选择结构C程序设计,选
3、择结构是三种基本结构之一,大多数程序中都会包含有选择结构。它的作用是:根据所指定的条件是否满足来决定所要执行的操作。在本章中, 将介绍几种能实现判断、选择的语句以及如何利用这些语句来实现选择结构的 C 程序设计。,if 语句是用来判断所给定的条件是否满足,根据判定的结果(真或假)来决定执行给出的两种操作之一。,语句功能:,当表达式的值为真(即非零值)时,执行该语句。,4.1 if 语句,语句格式1:,if (表达式)语句 ;,为任意表达式,只为一条语句否则可为复合语句,输入a与b两个值,若ab则输出a。请根据程序流程图编写代码.,EXAMPLE4-1:,Begin,End,输出a,输入a,b,
4、ab,T,F,main() int a, b;scanf(“%d,%dn”,关系表达式,main() char a, b,c;a=x; b=b; if(a=b) 0) c=a;printf(“%dn”,c);,赋值表达式,EXAMPLE4-2:,Begin,输入a,b,c,ab,F,t=a a=b b=t,T,输入a,b,c 三个值,请按其值从大到小排序并输出。,EXAMPLE4-3:,main() int a,b,c,t;scanf(“%d,%d ,%d”, ,Begin,a,b,c,ab,F,t=aa=bb=t,T,End,ac,F,t=aa=cc=t,T,bc,F,t=bb=cc=t,T
5、,a,b,c,main() int a,b,c;a=10, b=50, c=30;if (ab)a=b;b=c; c=a;printf(“a=%d b=%d c=%dn”,a, b, c);,a,10,b,c,30,50,30,10,EXAMPLE4-4:,main() int a,b,c;a=10, b=50, c=30;if (ab) a=b;b=c;c=a;printf(“a=%d b=%d c=%dn”,a, b, c);,EXAMPLE3-3:,注,意,问,题,if 表达式 语句;,main() int a,b,c;a=10, b=50, c=30;if (ab) a=b; b=c;
6、 c=a;printf(“a=%d b=%d c=%dn”,a, b, c);,main() int a,b,c;a=10, b=50, c=30;if (ab) a=b; b=c; c=a;printf(“a=%d b=%d c=%dn”,a, b, c);,main() int a,b,c;a=10, b=50, c=30;if (ab) a=b; b=c; c=a; printf(“a=%d b=%d c=%dn”,a, b, c);,a=10 b=50 c=30,a=10 b=30 c=10,a=10 b=50 c=30,4.1 if 语句,语句功能:,当表达式的值为真(即非零值)时,
7、执行该语句1 否则执行语句2。,语句格式2:,if (表达式)语句1;else 语句2;,输入a与b两个值,若ab则输出a,否则输出b。,EXAMPLE4-5:,main() int a,b,m;scanf(“%d,%d”,main() int a,b;scanf(“%d,%d”, ,语句功能:,语句格式3:,if (表达式1)语句1;else if (表达式2)语句2;else if (表达式3)语句3; else 语句n;,( else if 结构 ) 用于实现多分支情况的处理。 即在多个分支中仅执行表达式为非0 值的那个if下的语句;若 所有表达式都是0值,则执行最后一个else 下的语
8、句。,main() int g ;scanf( “%d n”, ,EXAMPLE4-6:,请用 if/else-if 格式设计并实现 求解下列问题的算法:,HOMEWORK4-1:,main() int x; float y; scanf(“%dn”, ,EXAMPLE3-3:,注,意,问,题,if (表达式1)语句1 ;else if (表达式2)语句2 ;else if (表达式3)语句3 ; else 语句n ;,1、 if /else if 的书写格式,EXAMPLE3-3:,注,意,问,题,if (表达式1)语句1 ;else if (表达式2)语句2 ;else if (表达式3)
9、语句3 ; else 语句n ;,EXAMPLE3-3:,if (x0) ;y=x;,if (ab) a=b, b=c,c=a;,I dont understand .,if (ab) a=b, b=c, c=a;,逗号表达式,EXAMPLE3-3:,注,意,问,题,int x=1,y=2,z=3;if (x=y+z)printf (“*”);else printf (“#”);,2、 “=” 与 “=” 的差别,*,int x=1,y=2,z=3;if (x=y+z)printf (“*”);else printf (“#”);,#,main() int a,b,c,x;a=b=c=0; x
10、=35; if (!a) x-; else if (b); if (c) x=3; else x=4;printf(“ %dn”, x); ,x,35,34,EXERCISES4-1:,4,在书店买书 ,以100 本为限。如果买1本不打 折扣; 买2本打折10%; 买3本折扣为15% 买3 本以 上折扣为20%。设书本数为x,单价为20.00元。请用程序流程图描述算法,用C实现算法。,HOMEWORK4-2:,语句格式4:,if(表达式)if(表达式1)语句1;else 语句2; else if(表达式2)语句3;else 语句4;,(if 的嵌套结构),NOTE: 在多个 if-else 嵌
11、套中, else-if 配对关系不能弄错。 一个 else 应与它最近的一个且没有其它 else 配对的 if 组成配对关系。,main() int x; float y; scanf(“%dn”, ,-1 ( x0 ),EXAMPLE4-7:,main() int x,a,b,ok1,ok2; x=100; a=10; b=20; ok1=5; ok2=0;if (ab) if (b!=15) if ( !ok1) x=1; printf( “x=%dn”,x); else if (ok2) x=10; x= -1; printf(“x=%dn”,x); ,EXAMPLE4-8:,请写出下列
12、源程序的运行结果,x,100,-1,switch 语句是用来判断所给定的是多种条件的情况,可根据判定的结果(真或假)来决定执行哪些语句。,4.2 switch 语句,语句格式:,switch(表达式) case 常量表达式1:语句组1;break ;case 常量表达式2:语句组2;break ; case 常量表达式n:语句组n; break ;default: 语句组n+1 ;,说明:,1、表达式:整型或字符型,2、语句组:一条语句或复合语句;,EXAMPLE4-9:,请设计C语言源程序,根据输入学生的成绩,则 输出应是该成绩所对应的等级。,90-10080-8970-7960-690 -
13、59,Input g,ABCDE,Output,main() int g; scanf(“%dn”, switch( ) ,g/10,case 10: case 9: printf(“An”); break;case 8: printf(“Bn”); break;case 7: printf(“Cn”); break;case 6: printf(“Dn”); break; default :printf(“En”);,main() int g; char ch;scanf(“%dn”, ,请设计一个数制转换的C语言源程序。 要求:能进行如下的数制转换。,10 进制转换为 16 进制; 16
14、进制转换为 10 进制;10 进制转换为 8 进制; 8 进制转换为 10 进制;,Can I help you?,HOMEWORK4-3:,进制转换 菜单 1、10 进制转换为 16 进制; 2、16 进制转换为 10 进制;3、10 进制转换为 8 进制; 4、 8 进制转换为 10 进制;请输入您的选择:再输入转换数据:,12,1,C,main() int num, x; printf(“n (1) 10 -16n”);printf(“ (2) 16 - 10 n”);printf(“n (3) 10 - 8 n”); printf(“ (4) 8 - 10 n”);printf(“n
15、请输入您的选择(1-4): n”);scanf(“%d n”, ,switch(num) case 1 : scanf(“%d”, ,请设计一个能完成两个数的四则运算的C语言源程序。,HOMEWORK4-4:,main() float x, y; char op; scanf(“%d,%c,%d ”, ,EXAMPLE3-3:,注,意,问,题,1、switch(表达式) ,main() float x;scanf(“%fn”, ,main() char x;scanf(“%cn”, ,EXAMPLE3-3:,注,意,问,题,2、break,main() char ch;switch(ch=ge
16、tchar() case a: printf(“A”); case b: printf(“B”); case c: printf(“C”);case d: printf(“D”); ,ABCD,BCD,main() char ch;switch(ch=getchar() case a: printf(“A”); break; case b: printf(“B”); break;case c: printf(“C”); break;case d: printf(“D”); break; ,EXAMPLE3-3:,Summary,Important points:,if 语句,switch语句,if,if (表达式)语句;,if (表达式1)语句1;else if (表达式2)语句2;else if (表达式3)语句3; else 语句n;,if (表达式)语句1;else 语句2;,if(表达式)if(表达式1)语句1;else 语句2; else if(表达式2)语句3;else 语句4;,switch,switch(表达式) case 常量表达式1: 语句组1; break;case 常量表达式2: 语句组2; break; case 常量表达式n :语句组n; break;default :语句组n+1;,