1、第3章 C语言的基本语句和程序结构设计,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,2,目 录,基本语句关系运算符和关系表达式逻辑运算符和逻辑表达式分支程序设计循环程序设计,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,3,基本语句 (Statements),控制语句表达式语句函数调用语句空语句复合语句,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,4,控制语句,完成一定的控制功能C语言的9种控制语句if-elsewhilecontinueswitchreturn,fordo-whilebreakgoto,C语言程序设计 - 第3章 C语言的基本语句
2、和程序结构设计,5,表达式语句,形式expression;表达式最后加一个分号举例a=3;/* 赋值语句 */z=x*y, z+;/* 一条语句 */x-y;/* 语句,但无实际意义 */i+;/* 语句 */i+/* 表达式,不是语句 */,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,6,函数调用语句,形式function(arguments);函数调用后加一个分号函数调用语句可以看作一种表达式语句举例printf(%d, i);getchar();myfun(a, b);,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,7,空语句,形式;只有一个分号用法作为转向
3、点作为循环语句中的循环体举例for(i=1; i=100; i+) sum+=i;for(i=1; i y)/* 复合语句开始 */ t = x; x = y; y = t; /* 复合语句结束 */printf(%d, %d, x, y);,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,10,C语言语句使用说明,除复合语句外,语句都以分号;作为结束语句书写格式比较自由,确定语句结束的唯一标准是分号(;)注意区分表达式和表达式语句,它们的用法不同举例,if(a=b)0) t=a;错例,if(a=b;)0) t=a;举例,if(xy) x-; y+;错例,if(xy) x-; y+
4、,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,11,关系运算符 (Relational Operators),C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,12,关系表达式,用关系运算符将两个表达式连接起来a+bc+d, (a=3)x注意区分等于(=)和赋值运算符(=)a=b, a=b关系表达式的值是逻辑值“真”或“假”C语言用整型表示逻辑值,“真”1、“假”0举例,a=3, b=2, c=1;d=ab;/* d=1 */f=abc;/* f=(ab)c=0 */,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,13,逻辑运算符 (Logical Op
5、erators),C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,14,逻辑运算规则,!a若a为“真”,!a为“假”若a为“假”,!a为“真”a&b若a、b都为“真”,则a&b为“真”若a、b不全为“真”,则a&b为“假”a|b若a、b都为“假”,则a|b为“假”若a、b不全为“假”,则a|b为“真”,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,15,逻辑表达式,逻辑运算符把逻辑量或表达式连接起来(y%4=0&y%100!=0)|(y%400=0)逻辑表达式的值是逻辑值用整型表示逻辑值“真”1,“假”0把一个表达式的值作为逻辑值使用非零“真”,零“假”这里的非零与零
6、,包括整型、浮点型等,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,16,逻辑表达式举例,int i=3;char c=a;float f=0.0;i=0; !i;/* 两者逻辑值相同 */i!=0; i;/* 两者逻辑值相同 */c /* “假” */,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,17,逻辑表达式求值特点,逻辑表达式中的运算符,只有会影响表达式求值时,才会执行a&b&c 若a为“假”,则不再判断b和ca|b|c 若a为“真”,则不再判断b和c举例,(m=ab)&(n=cd)De Morgan定理!(a&b)(!a)|(!b)!(a|b)(!a)&
7、(!b)!(a&b)|c)(!a|!b)&!c,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,18,分支程序设计,if语句条件运算符?:switch语句分支程序设计举例,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,19,if语句的三种形式,if(expression) statementif(expression) statement1else statement2if(expression1) statement1else if(expression2) statement2else if(expression3) statement3. .else if(ex
8、pressionn-1) statementn-1else statementn,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,20,if语句的说明,无论哪种形式,一条if语句,包括else或else if子句,只算作一条语句if语句中的子句,可以是一条任何类型的语句,包括表达式语句、空语句、复合语句、控制语句子句末尾的分号,只表示子句的结束,不表示if语句结束注意复合语句末尾没有分号else子句都是可以没有的,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,21,if语句举例,if (x y)/* y为x和y的较大值 */ y = x;if (x y)/* d为x和
9、y之间的距离 */ d = x - y;else d = y - x;if (x y);/* 合法,但没有实际操作 */,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,22,if语句的嵌套,if语句的各子句都可以又是if语句应注意if-else的配对关系else总是与其上面最近的if配对可以用明确if-else的配对关系if(exp1)if(exp1) if(exp2) if(exp2) statement1 statement1elseelse statement2 statement2,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,23,条件运算符 (Condi
10、tional Operator),条件运算符?:条件表达式exp1?exp2:exp3先判断exp1若exp1为“真”,表达式的值为exp2的值若exp1为“假”,表达式的值为exp3的值举例,max = (xy) ? x : y;同:if(xy) max = x;else max = y;,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,24,switch语句,switch (expression) case const-exp: statementscase const-exp: statements. .case const-exp: statementsdefault: s
11、tatements,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,25,switch语句的说明,先求switch后表达式的值,若此值与某个case后的常量表达式的值相等,则跳转到这个case后的语句;若没有相等的常量表达式,则跳转到default跳转后程序一直往下执行,不会因为遇到另一个case而直接跳出switch根据实际需要,可以没有default若需要跳出switch,可使用break语句case和default的顺序不影响执行结果,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,26,switch语句举例 (1),switch (day) /* 打印星期的缩写
12、 */ case 1: printf(Mon.n); break; case 2: printf(Tue.n); break; case 3: printf(Wed.n); break; case 4: printf(Thu.n); break; case 5: printf(Fri.n); break; case 6: printf(Sat.n); break; default:printf(Sun.n); ,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,27,switch语句举例 (2),switch (deptno) /* 根据系编号打印学院 */ case 15: cas
13、e 16: case 17: printf(商学院n); break; case 18: case 25: printf(人文学院n); break; case 7: printf(地空学院n); break; default: printf(其他学院n); ,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,28,分支程序设计举例,求一元二次方程的根当a=0时,不是一元二次方程当a0时,方程的根为当b2-4ac0,方程有两个实根当b2-4ac0,方程有两个共轭复根,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,29,例1:求一元二次方程的根,C语言程序设计 - 第3章
14、 C语言的基本语句和程序结构设计,30,循环程序设计,while语句do-while语句for语句break和continue语句循环程序设计举例,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,31,while语句,while (expression)statementwhile型循环先判断表达式,后执行语句一般情况下,循环中应含有能使循环语句结束的操作,statement,a,b,expr.,真,假,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,32,while语句举例,int i, sum;i = 1;sum = 0;while(i=100) sum += i;
15、/* 循环体缩进书写 */ i+;/* 使循环趋向结束 */ ,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,33,do-while语句,dostatementwhile (expression);类似于Until型循环先执行一次循环体语句,后判断表达式,statement,a,b,expr.,真,假,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,34,do-while语句举例,int i, sum;i = 1;sum = 0;do sum += i; i+;while(i=100);,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,35,do-whil
16、e与Until型循环,do sum+=i; i+; while(i100);Until型循环,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,36,for语句,for (expr1; expr2; expr3)statementexpr1;while (expr2) statementexpr3;,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,37,for语句的说明,三个表达式的说明expr1:初始化expr2:循环条件expr3:一般是循环变量的改变三个表达式都可以省略分隔表达式的分号不能省略expr1省略,不进行初始化expr2省略,认为循环条件永为“真”expr
17、3省略,不在这里改变循环变量,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,38,for语句举例,int i, sum;for (i=1, sum=0; i=100; i+) sum += i;for (i=1, sum=0; i=100; ) sum += i+;for (i=0, sum=0; i+100; ) sum += i;,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,39,break语句,形式break;说明跳出switch语句跳出本层循环语句如果有多层循环存在,break只跳出它所在的那一层循环语句,不影响外层循环的执行不能用于循环语句和switch
18、语句之外的任何其他场合,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,40,continue语句,形式continue;说明结束本次循环跳过循环体中余下的其他语句,接着进行下一次循环的判定只能用于循环语句中,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,41,break和continue语句,break语句跳出本层循环 while(i100) break; . ,continue语句结束本次循环 while(i100) continue; . ,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,42,循环程序设计举例,求最大公约数和最小公倍数,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,43,例2:求最大公约数和最小公倍数,C语言程序设计 - 第3章 C语言的基本语句和程序结构设计,44,结束,The End,