《程序基本结构》PPT课件.ppt_第1页
《程序基本结构》PPT课件.ppt_第2页
《程序基本结构》PPT课件.ppt_第3页
《程序基本结构》PPT课件.ppt_第4页
《程序基本结构》PPT课件.ppt_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

*C 语言程序设计 1 第二章第二章 程序基本结构程序基本结构 2.1 2.1 关系运算和逻辑运算关系运算和逻辑运算 2.2 2.2 分支结构分支结构 2.3 2.3 循环结构循环结构 2.4 2.4 breakbreak和和continuecontinue语句语句 2.5 2.5 gotogoto 语句语句 2.6 2.6 经典算法举例经典算法举例 *C 语言程序设计 2 2.12.1关系运算和逻辑运算关系运算和逻辑运算 2.1.1 2.1.1 关系运算符和关系表达式关系运算符和关系表达式 一、关系运算符一、关系运算符 种:种: 、=、=、!=!= 说明:说明: 1 1、优先级优先级:前前4 4种相同,后种相同,后2 2种也相同,但前种也相同,但前4 4种高于后种高于后 两种;所有关系运算符的优先级都两种;所有关系运算符的优先级都低于算术运算符低于算术运算符而而高于赋高于赋 值运算符值运算符。 2 2、结合性结合性:自左至右自左至右 aab-cb-ca(a(b-cb-c) ) a=b=ca=b=ca=(b=c)a=(b=c) a=b!=ca=b!=ca=(b!=c)a=(b!=c) *C 语言程序设计 3 二、关系表达式二、关系表达式 用用关系运算符将两个表达式连接起来的式子关系运算符将两个表达式连接起来的式子。 其中其中被连接的表达式可以是被连接的表达式可以是算术表达式算术表达式、关系关系 表达式表达式、逻辑表达式逻辑表达式、赋值表达式赋值表达式或或字符表达式字符表达式。 如:如:a+ba+b c+dc+d、x xy=y=c+dc+d、aaAA 关系表达式的值只能是关系表达式的值只能是1 1或或0 0,当表达式成立即为当表达式成立即为“ “真真” ” 时,值为整数时,值为整数1 1;否则为;否则为“ “假假” ”,值为整数,值为整数0 0。因此可看作。因此可看作整型整型 表达式表达式。 假设假设a=3, b=2, c=1a=3, b=2, c=1,求以下关系表达式的值:求以下关系表达式的值: ab (ab)=cab (ab)=c abc abc f=abb=1|!ba=1|!b ( (a=1)|(!b)a=1)|(!b) 二、逻辑表达式二、逻辑表达式 逻辑表达式的值应该是逻辑表达式的值应该是“ “逻辑真逻辑真” ”或或“ “逻辑假逻辑假” ”。 语言以数值语言以数值代表代表“ “真真” ”, , 以数值以数值代表代表“ “假假” ”;但;但 参加运算的运算量可以是参加运算的运算量可以是任何数值任何数值,进行判断时,进行判断时,非零非零 值值代表代表“ “真真” ”,零值零值代表代表“ “假假” ”。 若若a=100a=100,b=5b=5,则则! !a a=? =? a ; *C 语言程序设计 13 if (if (表达式表达式) ) 语句语句 一般形式: 表达式表达式 语句语句 真真( (非非0)0) 假假(0)(0) 流程图: 注意:此位置不注意:此位置不 使用分号使用分号“ “;” ”! #include void main( ) int a,b,temp; printf(“Input a,b:“); scanf(“%d%d“, if (ab) /* 判断a、b的关系 */ temp=a; a=b; b=temp; /* a大于b,则交换a,b 的值 */ printf(“Return is %d,%dn“,a,b); /*按从小到大顺序 输出 */ 例2.1的C语言程序如下: 复合语句:复合语句:在同一个在同一个 条件下作为一个整体条件下作为一个整体 执行得多条语句执行得多条语句 例例2.22.2输入三个数输入三个数x1,x2,x3,x1,x2,x3,按从小到大的顺序输出这三个数按从小到大的顺序输出这三个数 。 #include main() int x1,x2,x3,temp; scanf(“%d%d%d”, if(x1x2) temp=x1;x1=x2;x2=temp; if(x1x3) temp=x1;x1=x3;x3=temp; if(x2x3) temp=x2;x2=x3;x3=temp; printf(“%d,%d,%d”,x1,x2,x3); 输入输入a , b, ca , b, c ab?ab? a ab b ac?ac? bc?bc? a ac c b bc c 输出输出a, b, ca, b, c 是是 是是 是是 否否 否否 否否 输入:输入:3 5 13 5 1 输出:输出:1 1,3 3,5 5 *C 语言程序设计 16 2.2.2 2.2.2 双分支结构双分支结构 例2.3: 输入两个整数,输出其中较大的一个。 算法:算法: S1: S1: 输入两个整数输入两个整数a,ba,b S2: S2: 如果如果ab,ab,则输出则输出a a, 否则输出b C C语言单分支结构:语言单分支结构: if (if (表达式表达式 ) ) 语句语句1;1; elseelse 语句语句2;2; *C 语言程序设计 17 一般形式: if (if (表达式表达式) ) 语句语句1 1 elseelse 语句语句2 2 流程图: 表达式表达式 语句语句2 2 真真( (非非0)0)假假(0)(0) 语句语句1 1 *C 语言程序设计 18 例例2.3 2.3 输入两个整数,输出其中较大的一个。输入两个整数,输出其中较大的一个。 N-SN-S流程图流程图 输入输入x1,x2x1,x2 x1x2x1x2 Y Y N N 输出输出x1x1输出输出x2x2 #include main() int x1,x2; scanf(“%d%d”, if(x1x2) printf(“%dn”,x1); else printf(“%dn”,x2); *C 语言程序设计 19 2.2.3 2.2.3 多分支结构多分支结构 一般形式: 流程图: if (if (表达式表达式1)1) 语句语句1 1 else if (else if (表达式表达式2)2) 语句语句2 2 else if (else if (表达式表达式3)3) 语句语句3 3 else if (else if (表达式表达式n)n) 语句语句n n else else 语句语句n+1n+1 表达式表达式1 1 语句语句2 2 真真( (非非0)0)假假(0)(0) 语句语句1 1 表达式表达式2 2 真真( (非非0)0) 语句语句1 1 语句语句2 2 假假(0)(0) 关于关于if if语句的说明语句的说明: 1 1、表达式一般为关系表达式或逻辑表达式。但在、表达式一般为关系表达式或逻辑表达式。但在C C语言语言 中它也中它也可以是任意的数值表达式可以是任意的数值表达式。 if (3)if (3) n=1; n=1; if (a)if (a) printf(“%dprintf(“%d“, a);“, a); if (n=3-3)if (n=3-3) x=1; x=1; elseelse x=-1; x=-1; 2 2、表达式后面不能有任何标点符号表达式后面不能有任何标点符号! 3 3、elseelse只能与只能与ifif配对使用配对使用。仅。仅elseelse本身不能单独作为一个语本身不能单独作为一个语 句使用。句使用。 if (x5)if (x5); ; y=x; y=x; elseelse y=2*x-1; y=2*x-1; if (x5)if (x5) ; ; y=x; y=x; elseelse y=2*x-1; y=2*x-1; 将出现语法错误将出现语法错误 *C 语言程序设计 21 4 4、每个语句序列可以是一个语句也可以是若干个语句,、每个语句序列可以是一个语句也可以是若干个语句, 但要但要用花括号括起来用花括号括起来构成复合语句构成复合语句。 if (ab) t=a; a=b; b=t; if (a+bc area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“area=%.2fn“, area); else printf(“It is not a trilateral!n“); 复合语句的复合语句的花括号后不能再写分号花括号后不能再写分号。复合语句。复合语句 在语法上是一个整体,相当于一个语句。在语法上是一个整体,相当于一个语句。 *C 语言程序设计 22 2.2.4 if2.2.4 if语句的嵌套语句的嵌套 在在ifif语句的原语句的原“ “语句语句” ”中又包含一个或多个中又包含一个或多个ifif语句语句 1. 1. if (if (表达式表达式1)1) if (if (表达式表达式2) 2) 语句语句 2. 2. if (if (表达式表达式1) 1) 语句语句1 1 elseelse if (if (表达式表达式2) 2) 语句语句2 2 3. 3. if (if (表达式件表达式件1) 1) 语句语句1 1 elseelse if (if (表达式表达式2) 2) 语句语句2 2 else else 语句语句3 3 4. 4. if if ( (表达式表达式1)1) if if ( (表达式表达式2) 2) 语句语句1 1 elseelse 语句语句2 2 二义性二义性 ? 语言规定:语言规定:elseelse总是与它前面最近的且未曾配对的总是与它前面最近的且未曾配对的if if配对。配对。 if (if (表达式表达式1)1) if (if (表达式表达式2) 2) 语句语句1 1 else else 语句语句2 2 if (if (表达式表达式1)1) if (if (表达式表达式2) 2) 语句语句1 1 elseelse 语句语句2 2 *C 语言程序设计 23 例、(例、(P269,6P269,6)输入)输入3 3个数,判断组成什么类型三角形个数,判断组成什么类型三角形 if(a+bif(a+b)c”); else else if(aif(a=b|bb|b=c|ac|a=c) =c) printf(“dengyao!nprintf(“dengyao!n”);”); else else printf(“budengyao!nprintf(“budengyao!n”);”); else else printf(“Erro!nprintf(“Erro!n”);”); *C 语言程序设计 24 例例2.4 2.4 编程求解函数:编程求解函数: -1-1 0 0 1 1 ( (x0)(x0) y=y= 程序1: if (x=0) if (x0) y=1; else y=0; else y=-1; y=-1 y=0y=1 x=0x=0 x0x0 真假 真假 eg502.c 程序3: y=-1; if (x!=0) if (x0) y=1; else y=0; y=y=- -1 1 x!=0x!=0 x0x0 y=1y=0 真 真 假 假 -1-1 0 0 1 1 ( (x=0x=0) ) ( (x0)(x0) y=y= 改正程序3: y=-1; if (x!=0) if (x0) y=1; else y=0; y=-1 x!=0 x0 y=1 y=0 真 真 假 假 -1-1 0 0 1 1 ( (x0)(x0) y=y= 例例2.52.5求一元二次方程求一元二次方程axax 2 2 +bx+c=0+bx+c=0的根,的根,a,b,ca,b,c用键盘输入。用键盘输入。 # #include float float a,b,c,d,x1,x2,realpart,imagpart;a,b,c,d,x1,x2,realpart,imagpart; scanf(“%f%f%f”,a,b,cscanf(“%f%f%f”,a,b,c); ); if(fabs(aif(fabs(a)1e-6)1e-6) x1=(-b+sqrt(disc)/(2*a);x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); printf(“hasprintf(“has distinct real distinct real roots:%f,%fn”,x1,x2);roots:%f,%fn”,x1,x2); else else realpartrealpart=-b/(2*a);=-b/(2*a); imagepartimagepart=sqrt(-=sqrt(- disc)/(2*a);disc)/(2*a); printf(“%f+%fin”,realpart,printf(“%f+%fin”,realpart, imagpartimagpart); ); pritnf(“%f-pritnf(“%f- %fin”,realpart,imagpart%fin”,realpart,imagpart); ); *C 语言程序设计 27 1、条件运算符: ? :(C中唯一的三目运算符) 优先级仅高于赋值类,右结合性 2、条件表达式的一般形式: 表达式1?表达式2:表达式3 运算过程:首先求表达式1的值,若为真(非0),则求表达式 2的值,且整个表达式的值为表达式2的值;若表达式1为假(0 ),则求表达式3的值,且整个表达式的值为表达式3的值。 例:x= ab? a:b+1;x= (ab)? a:(b+1); if (ab) x=a; else x=b+1; ab? a : cd? c : dab? a : (cd? c : d) 二、条件运算符二、条件运算符 *C 语言程序设计 28 3、表达式2和表达式3可以是数值表达式,还可以 是赋值表达式获函数 ab?(a=100):(b=100) ab?printf(“%dn”,a):printf(“%dn”,b) 4、当三个表达式的类型不一致时,条件表达式的类型时表 达式2和表达式3种类型较高的类型。 如: xy?1:1.5 二、条件运算符二、条件运算符 *C 语言程序设计 29 例2.6:输入一个字符,如果是大写字母,转换为小写, 如果不是不转换。最后输出。 #include main() char ch; scanf(“%c”, /*ch=getchar();*/ ch=(ch=A ; printf(“inputprintf(“input score:”); score:”); scanf(“%d”, ); temp=score/10; temp=score/10; switch(tempswitch(temp) ) case 10: case 10: case 9:printf(“A”);break; case 9:printf(“A”);break; case 8:printf(“B”);break; case 8:printf(“B”);break; case 7:printf(“C”);break; case 7:printf(“C”);break; case 6:printf(“D”);break; case 6:printf(“D”);break; default:printf(“Edefault:printf(“E”);”); *C 语言程序设计 35 2.32.3循环结构循环结构 2.3.1、循环的引出 例2.8:编写程序计算1+2+3+100 i=1,sum=1i=1,sum=1 当当i void main() void main() intint i=1,sum=0; i=1,sum=0; while(iwhile(i void main() char ch; while(ch=getchar()!=0) ch=(ch=A float fact; intint i,ni,n; ; scanf(scanf(“ “%d%d” ”,); for(ifor(i=1,fact=1.0;i main()main() float fact; float fact; intint i,ni,n; ; scanf(scanf(“ “%d%d” ”,); for(ifor(i=1,fact=1.0;i main()main() float fact; float fact; intint i,ni,n; ; scanf(“%d”, ); i=1; i=1; fact=1.0; fact=1.0; while(iwhile(i main()main() intint x; x; intint s,sums,sum=0;=0; for(xfor(x=1;x main()main() intint x; x; intint s,sums,sum=0;=0; for(xfor(x=1;x #include void main()void main() long long intint i; i; double double j,kj,k; ; for(ifor(i=1;i main()main() intint i,ni,n; ; float fact; float fact; scanf(“%d”, ); for(ifor(i=1,fact=1.0;i main()main() intint i,ji,j; ; float float fact,sumfact,sum=0;=0; for(jfor(j=1;j main( ) int i , j ; for( i=1; i main( ) int i , j ; i=1; while (i main( ) int i , j ; for ( i=1; i main( ) int i , j ; for( i=1; i=1 ; i- -) for ( j=1; j100) break; printf(“%6.2fn“, area); 输出结果输出结果: : 3.14 3.14 12.56 12.56 28.26 28.26 50.24 50.24 78.50 78.50 *C 语言程序设计 62 2.4.2continue语句 1、格式: continue; 2、功能: 提前结束本次循环体的执行(不再执行循环体中 continue后面的语句),

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论