C程序设计.

Slides:



Advertisements
Similar presentations
C语言程序设计 主讲教师 :张群燕 电话:
Advertisements

第一章 C语言概述 计算机公共教学部.
第一单元 算法与流程图.
紧扣课程标准 关注社会热点 —苏教版教材新增内容复习建议 南京市南湖第一中学 马 峰.
财经法规与会计职业道德 (3) 四川财经职业学院.
专题二 识图题增分技巧.
勾股定理 说课人:钱丹.
選擇 運算式 邏輯運算 if指令 流程圖基本觀念 程式註解 巢狀if指令 switch指令.
第4章 选择结构程序设计 在现实生活中,需要进行判断和选择的情况是很多的 如果你在家,我去拜访你 如果考试不及格,要补考
C语言程序设计 第十二章 位运算.
第一章 程序设计入门.
C语言程序设计 第五章 选择结构程序设计.
高级语言程序设计 主讲人:陈玉华.
由C程序结构所知,一个完整的C语言程序是由一个且只能有一个main()函数(又称主函数)和若干个其他函数组合而成的。而前面各章仅学习main()函数的编程,本章将介绍其他函数的编程,包括其他函数的定义、调用、参数传递及变量的作用域等。
第2章 分支结构 P if语句 2.2 switch语句 2.3 用条件运算符转换大小写字母 2.4 程序举例
循环结构又称为重复结构:用来处理需要重复处理的问题,它是程序中一种很重要的结构。
Class 2 流程控制-選擇敘述與迴圈.
C++程序设计 第二讲 清华大学软件学院.
適用於多選一 可減少if 與 else配對混淆的錯誤.
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
Chap 10 函数与程序结构 10.1 函数的组织 10.2 递归函数 10.3 宏定义 10.4 编译预处理.
第4章 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.3关系运算符和关系表达式
If … else 選擇結構 P27.
第五章 选择结构程序设计 一、关系运算符和表达式 1、关系运算符 在程序中经常需要比较两个量的大小关系, 以决定程序下一步
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
第5章 堆疊(Stacks) 5-1 堆疊的基礎 5-2 堆疊的表示法 5-3 堆疊的應用 - 運算式的計算與轉換
QQ: 李祥 QQ: 欢迎多种方式的学习交流,祝大家学有所成.
作弊是否很有诱惑性? 上堂课已经讲了 作业不一定在两个小时里都能完成 答疑没有一个人? 作弊是有记录的 心理系很多同学集体作弊,让人震惊
Chap 3 分支结构 3.1 简单的猜数游戏 3.2 四则运算 3.3 查询自动售货机中商品的价格.
1. 說明一個一維整數陣列passwd,下標範圍0至49 2. 在屏幕顯示 "Enter password"
C语言 程序设计基础与试验 刘新国、2012年秋.
第3章 程序设计初步 第4章 函数与预处理 第5章 数组 第6章 指针 第7章 自定义数据类型
第3讲 C++程序控制结构 3.1 顺序结构 3.2 分支结构 3.3 循环结构 3.4 转向控制 3.5 综合案例分析.
人教版数学四年级(下) 乘法分配律 单击页面即可演示.
第三章 顺序结构程序设计 主讲教师 贾月乐 电话:
2.1 C语言的数据类型 2.2 常量与变量 2.3 变量赋初值 2.4 各类数值型数据间的混合运算 2.5 C语言的运算符和表达式
第七章 函数及变量存贮类型 7.1 函数基础与C程序结构 7.2 函数的定义和声明 7.3 函数的调用 7.4 函数的嵌套与递归
第4章 顺序程序设计.
第1章 概述 本章要点: C语言程序结构和特点 C语言程序的基本符号与关键字 C语言程序的编辑及运行 学习方法建议:
C++大学基础教程 第3章 C++控制语句 北京科技大学 信息基础科学系.
C语言概述 第一章.
第1讲 C语言基础 要求: (1) C程序的组成 (2) C语言的标识符是如何定义的。 (3) C语言有哪些基本数据类型?各种基本数
第 二 章 数据类型、运算符与表达式.
第一章 程序设计和C语言 主讲人:高晓娟 计算机学院.
C程序设计.
Main() { Dfas Asdfasf fasdfa } #include <stdio.h> void main( ) {
目录 4.1选择结构程序设计的概述 4.2关系运算符和表达式 4.3逻辑运算符和表达式 4.4用if语句实现选择结构程序设计
浙江长征职业技术学院—计算机与信息技术系—相方莉制作
指標
7.1 C程序的结构 7.2 作用域和作用域规则 7.3 存储属性和生存期 7.4 变量的初始化
C程序设计.
第一章 C语言概述 教师:周芸.
第3章 数据类型、运算符与表达式.
第2章 基本数据及其运算 本章学习的目标: 1、掌握基本数据的各种表示,基本数据常数的书写方法;
THE C PROGRAMMING LANGUAGE
第二章 类型、对象、运算符和表达式.
第2章 数据类型与表达式 学习目的与要求: 掌握C 语言的基本数据类型及使用方法 掌握C程序中常用的运算符和表达式 了解数据类型的转换.
9.1.2不等式的性质 周村实验中学 许伟伟.
C程序设计.
第八节 算术运算符和算术表达式.
第3章 最简单的C程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.3 C语句 3.4 数据的输入输出.
本节内容 指针类型.
第五章 逻辑运算和判断选取控制 §5.1 关系运算符和关系表达式
第二章 数据类型、运算符和表达式 §2.1 数据与数据类型 §2.2 常量、变量和标准函数 §2.3 基本运算符及其表达式 目 录 上一章
C/C++基礎程式設計班 C語言入門、變數、基本處理與輸入輸出 講師:林業峻 CSIE, NTU 3/7, 2015.
多重條件選擇敘述
Chap 10 函数与程序结构 10.1 圆形体积计算器 10.2 汉诺塔问题 10.3 长度单位转换 10.4 大程序构成.
第三章 流程控制 程序的运行流程 选择结构语句 循环结构语句 主讲:李祥 时间:2015年10月.
本节内容 指针类型 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
C语言基础学习 从外行到入门.
Presentation transcript:

C程序设计

第5章 选择结构程序设计 选择结构是三种基本结构之一。在大多数程序中都会包含选择结构。它的作用是,根据所指定的条件是否满足,决定从给定的两组操作选择其一。在本章中介绍如何用C语言实现选择结构。 在C语言中选择结构用if语句实现。if语句最常用的形式如下: if (关系表达式) 语句1 else 语句2 例如: if (x>0) y=1; else y=-1; 其中x>0是一个关系表达式。“>”是一个关系运算符。

5.1 关系运算符和关系表达式 关系运算是逻辑运算中比较简单的一种。“关系运算” 就是“比较运算”。将两个值进行比较,判断其比较的结果是否符合给定的条件。例如a>3是一个关系表达式。

5.1.1 关系运算符及其优先次序 C语言提供6种关系运算符: < <= > >= == != 关于优先次序: < <= > >= == != 关于优先次序: (1)前4种关系运算符的优先级别相同,后两种也相同。前4种高于后2种。 (2)关系运算符的优先级低于算术运算符。 (3)关系运算符的优先级高于赋值运算符。 !算术运算 关系运算 &&和||  赋值预算 (高低) 举例: /*int a, b, c; a=1; b=2; c=3; //printf("%d\n", c>a+b); //printf("%d\n", a>b==c); //printf("%d\n", a==b<c); printf("%d\n", a=b>c);*/

5.1.2 关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系表达式、逻辑表达式、赋值表达式、字符表达式)连接起来的式子,称关系表达式。 关系表达式的值是一个逻辑值,即“真”或“假”。C语言没有逻辑型数据,以1代表“真”,以0代表“假” 举例: /*int a, b, c, d, f; a=1; b=2; c=3; printf("%d\n", 5==3); printf("%d\n", 5>=0); printf("%d\n", a>b); printf("%d\n", (a>b)==c); printf("%d\n", b+c<a); printf("%d\n", d=a>b); printf("%d\n", f=a>b>c);*/

5.2 逻辑运算符和逻辑表达式 用逻辑运算符将关系表达式或逻辑量连接起来的式子就是逻辑表达式。

5.2.1 逻辑运算符及其优先次序 C语言提供三种逻辑运算符: (1)&&逻辑与 (2)||逻辑或 (3)!逻辑非

逻辑运算的“真值表” a b !a a&&b a||b 真 假

在一个逻辑表达式中如果包含多个逻辑运算符,如 !a&&b||x>y&&c 按以下的优先次序: (1)!(非)->&&(与)->||(或),即“!”为三者中最高的。 (2)逻辑运算符中的“&&”和“||”低于关系运算符,“!”高于算术运算符。 举例: /*int a, b, c, x, y; a=1; b=2; c=3; x=4; y=5; printf("%d\n", !a&&b||x>y&&c); // 0||0=0 printf("%d\n", a>b&&x>y); //0&&0=0 printf("%d\n", a==b||x==y); //0||0=0 printf("%d\n", !a||a>b); //0||0=0*/ //printf("%d\n", 'c'&&'d');

5.2.2 逻辑表达式 逻辑表达式的值应该是一个逻辑量“真”或“假”。C语言编译系统在给出逻辑运算结果时,以数值1代表“真”,以0代表“假”,但在判断一个量是否为“真”时,以0代表“假”,以非0代表“真”。即将一个非零的数值认作为“真”。 举例: //printf("%d\n", 'c'&&'d');

在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。 (1)a&&b&&c (2)a||b||c 举例: 1 /*int a=1, b=2, c=3, d=4, m=1, n=1; printf(“%d\n”, (m=a>b) && (n=c>d)); printf(“m=%d,n=%d\n”, m, n);* //由于a>b的值为0,因此m=0,而n=c>d不被执行,因此n的值不是0而是保持原值为1 2 /*int year; scanf("%d", &year); if(year%4==0 && year%100!=0 || year%400==0) { printf("%d是闰年\n", year); } else printf("%d不是闰年\n", year); }*/

5.3 if语句 if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。

5.3.1 if语句的3种形式 C语言提供了3种形式的if语句。 1、if (表达式) 语句 例如:if (x>y) printf(“%d”, x);

2、if (表达式) 语句1 else 语句2 例如: if (x>y) printf(“%d”, x); else printf(“%d”, y); 举例: 1 /*int x, y; x=2; y=1; if(x>y) printf("x=%d\n", x); else printf("y=%d\n", y);*/ 备注: 1、if (表达式) 语句A; 语句B; 解释:if 默认制动控制语句A的执行或不执行,if语句无法控制语句B的执行或不执行。或者讲:语句B一定会执行; 2、if(表达式) { } 此时if可以控制语句A和B 由此可见,if默认只能控制一个语句的执行或不执行。如果想控制多个语句的执行或不执行,就必须把这些语句用{}括起来。

3、 if (表达式1) 语句1 else if (表达式2) 语句2 else if (表达式3) 语句3 …… else if (表达式m) 语句m else 语句n 备注: C语言对真假的处理 非零是真,零就是假。 真用1表示,假用零表示。

补充程序 (1)

说明: (1)三种形式的if语句中在if后面都有“表达式”,一般为逻辑表达式或关系表达式。 (2)第二、第三种形式的if语句中,在每个else前面有一个分号,整个语句结束处有一个分号。 (3)在if和else后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号将几个语句括起来成为一个复合语句。 举例: 1、//if(3) printf("ok\n"); 2、//if('a') printf("%d", 'a'); /*float x=1.0; if(x>0) printf("%f", x); else printf("%f", -x);*/ 3、/*double a, b, c, s, area; scanf("a=%lf,b=%lf,c=%lf", &a, &b, &c); if(a+b>c&&b+c>a&&c+a>b) { s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf("area=%lf\n", area); } printf("三边不能组成一个三角形\n");*/

[5.1]输入两个实数,按代数值由小到大的顺序输出这两个数 #include <stdio.h> void main() { float a, b, t; scanf(“%f,%f”, &a, &b); if(a>b) t=a;a=b;b=t; } printf(“%5.2f,%5.2f\n”, a, b); 补充程序 补充程序(2)

[例5.2]输入3个数a、b、c,要求按由小到大的顺序输出 #include <stdio.h> void main() { float a, b, c, t; scanf(“%f,%f,%f”, &a, &b, &c); if(a>b) {t=a;a=b;b=t;} if(a>c) {t=a;a=c;c=t;} if(b>c) {t=b;b=c;c=t;} }

5.3.2 if语句的嵌套 在if语句中又包含一个或多个if语句称为if语句的嵌套。一般形式如下: if() if() 语句1 else 语句2 else if() 语句3 else 语句4

[例5.3]编程,输入x值,输出y值,函数: -1 (x<0) y = 0 (x=0) 1 (x>0) #include <stdio.h> void main() { int x, y; scanf(“%d”, &x); if(x<0) y=-1; else if(x==0) y=0; else y=1; printf(“x=%d,y=%d\n”,x,y); } if 常见问题解析: 补充程序(3) 1、空语句的问题 if (3>2);等价于 if (3>2) ; //这是一个空语句; 2、 if (表达式1) A; else B; 是正确的。 if (表达式1); 是错误的; 3、 if (表达式1) else if (表达式2) else if (表达式3) C; D; 即便表达式1和2都成立 ,也只会执行A语句。 4、 if (表达式1) else if (表达式 2) else if (表达式3) 这样写语法不会出错,但逻辑上有漏洞; 5、 if (表达式1) else if (表达式2) else if(表达式3) else (表达式4) //第7行 这样写是不对的,正确的写法是:要么去掉第7行的(表达式4),要么在抵7行的else后面加if 6、 if (表达式1) else if (表达式2) else (表达式4); 这样写语法不会错,但逻辑上是错误的。 else (表达式4); 等价于

5.3.3 条件运算符 若在if语句中,当被判别的表达式的值为“真”或“假”时,都执行一个赋值语句且向同一个变量赋值时,可以用一个条件运算符来处理。 条件运算符要求有3个操作对象,称三目(元)运算符。 条件表达式的一般形式为 表达式1?表达式2:表达式3

说明: (1)条件运算符的执行顺序:先求解表达式1,若为非0则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0,则求解表达式3,表达式3的值就是整个条件表达式的值。 (2)条件运算符优先于赋值运算符。 (3)条件运算符的结合方向为自右至左。 (4)表达式不仅可以是数值表达式,还可以是赋值表达式或函数表达式。 (5)条件表达式中,表达式1的类型可以与表达式2和表达式3的类型不同。 举例: 1 /*if(a>b) max=a; else max=b;*/ /*int a, b, max; a=2; b=3; max=1; max= a>b ? a : b; printf("max=%d\n", max);*/ //max= a>b ? a : b; 2 //(a>b) ? a : b+1 等价于 (a>b) ? a : (b+1) 3 /*int a, b, c, d; a=1; b=2; c=3; d=4; printf(“%d\n”, a>b ? a : c>d ? c : d); //相当于a>b ? a: (c>d?c:d) */ 4 /*int a=2; int b=1; //printf("%d\n", a>b ? (a=100) : (b=200)); //a>b ? printf("%d\n", a) : printf("%d\n", b); 5 int x, y; x=1; y=0; x ? 'a' : 'b'; double d = x>y ? 1 : 1.5; //在此处需要将整形转变为double行 printf("d=%lf\n", d);*/

[例5.4]输入一个字母,判别它是否大写字母,如果是,将它转换成小写字母;如果不是,不转换。然后输出最后得到的字符 #include <stdio.h> void main() { char ch; scanf(“%c”, &ch); ch=(ch>=‘A’ && ch<=‘Z’) ? (ch+32) : ch; printf(“%c\n”, ch); }

5.4 switch语句 switch语句是多分支选择语句。一般形式: switch(表达式) { case 常量表达式1: 语句1 … case 常量表达式n: 语句n default: 语句n+1; } 补充程序: switch用法举例_电梯程序.cpp

说明: (1)switch后面括号内的表达式,ANSI标准允许它为任何类型。 (2)当表达式的值与某一个case后面的常量表达式的值相等时,就执行此case后面的语句,若所有的case中的常量表达式的值都没有与表达式的值匹配的,就执行default后面的语句。 (3)每一个case的常量表达式的值必须互不相同;否则就会出现相互矛盾的现象。 (4)各个case和default的出现次序不影响执行结果。 (5)执行完一个case后面的语句后,流程控制转移到下一个case继续执行。 (6)多个case可以共用一组执行语句。 举例: char grade; scanf("%c", &grade); switch(grade) { case 'A': case 'B': case 'C': printf(">=60\n"); break; case 'D': printf("<60\n"); default: printf("error\n"); }

5.5 程序举例 [例5.5]写程序,判断某一年是否闰年

[例5.6]求ax2+bx+c=0方程的解 (1)a=0 (2)b2-4ac=0 (3)b2-4ac>0 (4)b2-4ac<0

[例5.7]运输公司对用户计算运费 路程越远,每吨每千米运费越低。 标准如下: s<250 没有折扣 250≤s<500 2%折扣 500≤s<1000 5%折扣 1000≤s<2000 8%折扣 2000≤3<3000 10%折扣 3000≤s 15%折扣 设每吨每千米货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费f的计算公式为 f=p*w*s(1-d)

习题 5.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1)a+b>c && b==c (2)a||b+c && b-c (4)!(x=a) && (y=b) && 0 (5)!(a+b)+c-1 && b+c/2 5.4 有3个整数a、b、c,由键盘输入,输出其中最大的数。

5.5 有一个函数: x x<1 y= 2x-1 1≤x<10 3x-11 10≤x 5.6 给出一百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。 5.9 输入4个整数,要求按由小到大的顺序输出。

5.10 有4个圆塔,圆心分别为(2,2)、(-2,2)、(-2,-2)、(2,-2),圆半径为1。这4个塔的高度为10m,塔以外无建筑物。今输入任意点的坐标,求该点的建筑高度(塔外的高度为零)。