《程序控制结构》由会员分享,可在线阅读,更多相关《程序控制结构(102页珍藏版)》请在金锄头文库上搜索。
1、程序设计基础(C语言),东北大学高级语言程序设计课程组 课程网站: 每个函数完成的功能则是通过由一条条语句实现的 语句是构成C程序设计的基本单位 语句能完成特定操作 语句最后必须有一个分号,分号是C语句的组成部分 C语句分为三类基本语句复合语句程序控制语句,4,基本语句,复合语句 用一对大括号括起一条或多条语句 无论有多少语句,都只被看成一条语句 例如 t=a;a=b;b=t; a=10;printf( “%d” ,a ); 执行复合语句实际是执行该复合语句一对大括号中所有语句,5,基本语句,空语句 由一个分号;组成 空语句是表达式语句的一种特例格式: ;它表示什么操作也不做。从语法上讲,它的
2、确是一条语句。在程序设计中,若某处从语法上需要一条语句,而实际上不需要执行任何操作时就可以使用它。例如,在设计循环结构时,有时用到空语句。,6,基本语句,声明语句 功能 定义变量的名称和数据类型,为C编译系统给该变量分配存储空间提供依据 格式: 变量表; 基本数据类型,例如:int、float、char 变量表:由一个或多个变量组成 例:int a,b,c; float i,j,k; 提示 C程序中所有变量应先定义后使用 声明语句应放在函数的“”和任何可执行语句之前,7,基本语句,表达式语句 在表达式后面加上一个分号“;”就构成了一个表达式语句 格式: ; 例: a=b*2; /*赋值运算表达
3、式语句*/ +j; /*前缀运算表达式语句*/ x+y; /*x+y;是算术表达式语句*/ 提示 表达式语句和表达式的区别在于 表达式代表的是一个数值,表达式语句代表的是一个动作特征,8,顺序结构,顺序结构是一组按书写顺序执行的语句 是C语言中最简单、最基本的一种结构 是进行复杂程序设计的基础 C语言组成顺序结构的主要语句 赋值语句 声明语句 输入/输出函数,9,【例1】main() float a=123.456;double b=8765.4567;printf(“(1)%fn”,a); printf(“(2)%14.3fn”,a); printf(“(3)%6.4fn”,a); prin
4、tf(“(4)%lfn”,b); printf(“(5)%14.3lfn”,b);printf(“(6)%8.4lfn”,b); printf(“(7)%.4fn”,b); ,(1)123.456000,(2)123.456,(3)123.4560,(4)8765.456700,(5)8765.457,(6)8765.4567,(7)8765.4567,顺序结构,10,【例2】 编写程序:输入两个整数a和b(设a=100,b=17)求a除以b的商和余数。#include “stdio.h” main( ) int a, b, x, y; scanf (“%d, %d”, ,顺序结构,11,【例
5、3】编写一个程序用于水果店售货员算帐:已知苹果每斤2.5元,梨每斤1.8元,香蕉每斤每斤2.0元,橘子每斤1.6元,要求输入各类水果的重量,打印出应付钱数,再输入顾客应付款数,打印出应找的钱数。 演示3f,#include“stdio.h” main() float p,y,x,j,ys,g,fk;prinft(“苹果,鸭梨,香蕉,橘子=”);scanf(“%f,%f,%f,%f”,顺序结构,程序设计基础(C语言),流程控制-选择结构,13,选择结构,选择结构的特征 程序的流程由多路分支组成 在程序的一次执行过程中,根据不同情况只有一条支路被选中执行 其他的分支上的语句被直接跳过 选择结构的要
6、素 语句 if语句 switch语句 条件,14,选择结构,选择结构的要素 条件 由关系表达式或由关系表达式组合而成的逻辑表达式 用数值1表示逻辑“真”,用0表示逻辑“假” 在判断条件时又以非0为“真“,以0为“假“ 少数情况下也可以是算术表达式 这个表达式的结果将决定程序下一步的执行顺序 例 C1是否为小写字母的条件是: X在1,10和200,210之间为真, 否则为假的条件是:,(c1=a)&(c1=1)&(x=200)&(x=210) ) ),15,if语句,if语句是一种非常重要的程序流程控制语句 它可以使程序根据不同的条件执行不同的操作 if 语句共有三种形式 简单if ifelse
7、 ifelseif,16,if语句,简单if语句 语句格式: if(表达式) s1; 表达式表示对一个条件的判断 表达式的结果为0或1,通常为关系表达式或逻辑表达式,也可以直接表示成某一数值 表达式必须用括号 s1从语法上应是一条语句,当在此执行多条语句,必须用大括号将它们括起来,构成复合语句 执行过程 计算表达式的值 若为“真”,则执行语句1 否则将跳过语句1执行if语句的下一条语句,17,if语句,简单if语句 例 if(x=y,18,if语句,简单if语句 例: 两个整数相除,main()int a,b;printf(“enter two numbers:”);scanf(“%d%d”,
8、19,if语句,简单if语句 例: 计算一个整数的绝对值,main() int a,absa;printf(“enter one number:”);scanf(“%d”,&a);absa=a;if(a0) absa=-a;printf(“|%d|=%d”,a,absa);,20,if语句,ifesle语句 语句格式:明确指出作为表达式为“真”时做什么,为“假”时做什么 功能 计算表达式的值 若表达式的值为“真”,执行s1,并跳过s2,继续执行if_else语句的下一条语句 若表达式的值为“假”,跳过s1,执行s2,继续执行if_else语句的下一条语句,if (e) S1;else S2;,
9、21,if语句,求整数的绝对值可改写为:,main() int a,absa;printf(“enter one number:”);scanf(“%d”,main() int a,absa;printf(“enter one number:”);scanf(“%d”,&a);absa=a;if(a100) y=x/100;printf(“%d”,y);else printf(“%d”,a+b); ,main() int a,b;scanf(“%d%d”,&a,&b);if( a*a+b*b 100) printf(“%d”,(a*a+b*b)/100);else printf(“%d”,a+
10、b); ,if语句,24,if语句,ifelse if语句 对于一个问题可能需要从多方面进行判断,有多种可能的情况进行处理 语句格式:,if(表达式 e1 ) 语句S1 ;else if (表达式e2) 语句S2 ;else if(表达式e3) 语句S3 ; else 语句Sn ;,25,if语句,ifelse if语句 执行过程示意图,e1,语句S1,e2,语句S2,en,语句Sn,语句Sn+1,提示: 这是一条语句 属于双分支结构的嵌套,26,if语句,例:求分段函数的值,27,if语句,源程序,#include “math.h” #include“stdio.h”main() float
11、 x,y;printf(“enter a x:”);scanf(“%f”,&x);if(x1.0) y=x*x+2*x+sin(X);else if(x=10.0) y=2*x-1;else y=sqrt(3*x*x-1);printf(“x=%f,y=%f”,x,y);,28,if语句,If语句嵌套 if 语句体中又包含一个或多个if语句,称为if语句的嵌套 在简单if语句和if_else语句形式中,s1或s2可以是任意合法语句 当s1或s2也是if语句,就构成嵌套的if语句 嵌套形式,if (e1)if(e2) s1;else s2;else s3;,if (e1) if(e2) s1;e
12、lse s2;,if (e1) s1;else if(e2) s2;else s3;,29,if语句,If语句嵌套 C语言规定的原则 从最内层开始,else总是与它前面最近的同一复合语句内的不带else 的if结合 如果if和 else的数目不统一,可以加明确配对关系 提示 嵌套中的if与 else的配对关系非常重要 对多重if,最容易犯的错误就是if与 else配对错误 即使(表达式)的后面只有一条语句,也尽量不要省略花括号 ,30,if语句,If语句嵌套,例如:if (x)if(y) printf (“ yn”);else if (z) printf(“zn”);else printf (
13、“xn”);,if (x) if(y) printf (“ yn”);else if (z) printf(“zn”); else printf(“xn”); 不仅解决了问题,也使程序结构 和层次清晰。,如果要实现例中书写形式的意图, 可写成如下形式:if (x) if(y) printf (“ yn”); else if (z) printf(“zn”);else printf(“xn”); ,31,if语句,If语句嵌套 程序的书写缩排 所谓缩排,就是上一行与下一行相比,行首向右缩进 若干字符 适当的缩排使程序的结构、层次清晰、一目了 然,增加程序的易读性。 复合语句在 if 结构中的使用
14、if 语句中有时需要执行的语句不止一条,需要采用复合语句 无论包括多少条语句,复合语句从逻辑上将被看成是一条语句,32,if语句,例:阅读程序回答问题,#include main()int a,b,m,n;scanf(“%d%d”,1)当输入为-1 2,程序的运行结果为多少?,2)当输入为1 0,程序的运行结果为多少?,3)为了输出n=4,变量a和b应具备的条件是什么?,m=1 n=2,m=2 n=3,0a= 90) printf(“A”);if (ave = 80,if (ave = 90) printf(“A”);else if (ave = 80) printf(“B”);else if (ave = 70) printf(“C”);else if (ave = 60) printf(“D”);else printf(“E”);,