C语言 第03章 分支结构
c语言 课件第3章 顺序、分支、循环

算法的表示方法 ①自然语言表示法
②伪代码表示法 ④N-S流程图表示法 流程图表示法 ⑤流程图表示法
用人们日常使用的语言进行算法的描述 用自然语言、计算机语言及符号进行算法描述 用自然语言、 用矩形框进行算法的描述 用一些图框描述算法
③计算机语言表示法 C、C++、BASIC、VB、VC等语言的程序 、 、 、 等语言的程序
确定性:算法每执行一步,其顺序和内容都必须有确切的规定, ③ 确定性:算法每执行一步,其顺序和内容都必须有确切的规定, 不能含糊不清或二义性 可执行性:算法的所有操作都必须能做到, ④ 可执行性:算法的所有操作都必须能做到,即可操作性 个或多个输入; ⑤ 0个或多个输入;一个或多个输出 个或多个输入
沃 思
程序 = 数据结构 + 算法
数据结构: 数据结构:程序中指定数据的类型和数据的组织形式 算法: 算法: 操作步骤
4
3.1.1 程序算法及其特征 是程序处理问题(数据的计算和处理)的方法和步骤。 (1)算法 是程序处理问题(数据的计算和处理)的方法和步骤。 ) 是解决特定问题而要一步一步执行的有穷操作的描述; 是解决特定问题而要一步一步执行的有穷操作的描述; 是描述解决计算机求解及处理问题的步骤和方法。 是描述解决计算机求解及处理问题的步骤和方法。 算法应包括计算机的数值计算 计算方法等问题 本课程不涉及。) 数值计算、 等问题, (注:算法应包括计算机的数值计算、计算方法等问题,本课程不涉及。) (2)特征 ) 一个完整的程序应具有以下特征: 一个完整的程序应具有以下特征: 分步性: ① 分步性:一个算法是由一步一步的操作完成的 ② 有穷性:一个算法必须能在执行有限步之后结束 有穷性: N! = 1×2×3×. . . ×(N-1)×N × × × × Sum = 1+2+3+. . .+N +. . . 有穷 无穷
C语言第3章_分支结构

3.1 关系运算符及其表达式
关系表达式的值
由于C语言没有逻辑型数据,所以用“1”(非0 值)表示“逻辑真”(true),用“0”(0值) 表示“逻辑假”(false)。
条件运算符
一般格式:
条件运算符是C语言中唯一一个三目运算符。 •运算规则
如果“表达式1”的值为非0(即逻辑真), 则运 算结果等于“表达式2”的值;否则,运算结果等 于“表达式3”的值。
3.3 分支结构和条件运算符
运算符的优先级与结合性
条件运算符的优先级,高于赋值运算符,但低 于关系运算符和算术运算符。其结合性为“自 右至左”(即右结合性)。
与其它种类运算符的优先关系
!→ 算术运算 → 关系运算 → &&→ || → 赋值运 算
3.2 逻辑运算符及其表达式
逻辑表达式
所谓逻辑表达式是指用逻辑运算符将1个或多个 表达式连接起来,符合C语言规则的进行逻辑运 算的式子。
在C语言中,用逻辑表达式表示多个条件的组合。 逻辑表达式的值也是一个逻辑值(非“真”即 “假”)。
3.3 分支结构和条件运算符
switch语句
if语句可以处理多分支,但分支不宜太多,因 此C语言提供了switch语句直接处理多分支选择。
一般形式
3.3 分支结构和条件运算符
执行过程
①当switch后面“表达式”的值,与某个case后 面的“常量表达式”的值相同时,就执行该 case后面的语句(组);当执行到break语句 时,跳出switch语句,转向执行switch语句的 下一条。 ②如果没有任何一个case后面的“常量表达式” 的值,与“表达式”的值匹配,则执行default 后面的语句(组)。然后,再执行switch语句 的下一条。
编程语言基础-C语言 第3章 分支程序设计

③ 假设A和B是两个表达式,下面对逻辑运 算进行说明。 1) A && B 若A、B均为真, 则“A && B”值为真,否则为 假。 2) A || B 若A、B均为假, 则“A || B值”为假,否则为真。 3) ! A 若A为真, 则 “!A”为假;否则为真。
看下面的例子:
1.
( 3 < 2 ) && ( 7 > 5 ) 值:0 只有 && 右面的子表达式为真 ( 3 < 2 ) || ( 7 > 5 ) 值:1 只要求有一个子表达式为真 !(3<2) 子表达式为假。 值:1
运行结果: 1. 请输入一个正 整数:36↙ Yes! 2. 请输入一个正 整数:15↙ No!
3.2.3 if语句的嵌套
一般形式是: if(表达式1) 语句1; else if(表达式2) 语句2; else if (表达式3) 语句3; else 语句4;
执行过程如图3-4所示。
表达式 1 假 表达式 2 假
}
3.4 分支程序设计应用实例
例3-7: 从键盘输入二个整数,输出其中最大者。 main( ) { int a, b, max; printf("请输入二个整数:"); scanf("%d %d", &a, &b ); if ( a > b ) max = a; else max = b; printf("二者中最大值为:%d", max ); getch( ); 运行结果: } 17 31↙ 二者中最大值为:31
第3章 分支程序设计
3.1 关系表达式和逻辑表达式
C语言-第3章分支结构教学案

第3章 分支结构程序设计(选择结构)1、掌握if 、if-else 、if 的嵌套语句的语法结构及编程语句的语法结构及编程 123.2.1 单分支if 语句的使用学习目标:1、理解选择结构的概念和特点;2、掌握单分支if 语句的语法结构、执行过程和基本用法,学会正确书写if 语句; 4、能正确阅读if 语句程序,会使用if 语句编写、调试并运行程序。
课前准备:预习P30-32(预习后,将学案上知识点在课本上做记号,并完成相应预习题) 课时分配:2课时 活动课堂活动一、发现问题(目标——了解分支结构的意义)实例:从键盘上输入一个数,求这个数的平方根。
算法:发现问题:活动二、解决问题(目标——掌握分支结构) 思考:从键盘输入一个数,若为正数和0则 求其平方根,否则不予处理。
算法:活动三、预习交流(1 ·语句中a>b ·if 每行的结尾,分支中各语句结尾均有 (符号),但 后没有。
·在(2)(3)两语句段中的不同处画上横线,语句(2)中的c=a+b; (属于/不属于)if 分支。
活动五:观察思考(目标——掌握if 的执行流程)1、观察下列程序的执行,口述程序的执行过程,画出程序的流程图: 例1:#include <math.h>#include <stdio.h>main(){float x,y;clrscr();scanf("%f",&x);if (x>=0){y=sqrt(x);printf("%.2f",y);}}流程图:4、说明:例:表达式 -3+‘d’为________表达式,值为______,作条件判断结果为___________ 表达式 a=0 为__________表达式,值为_______,作条件判断结果为__________ 表达式 a=5 为__________表达式,值为________,作条件判断结果为_________ 表达式a>4为____________表达式,若a=5 则结果为_________表达式(a>0)&&(a%2==0)为________表达式,若结果为5 则结果为__________活动六、尝试学习(目标—if语句的初步应用)编程:输入一个学生成绩score,如果成绩大于60,则显示pass,否则不显示程序:流程图:活动七、合作探究、拓展应用(目标—if语句的应用)1、阅读下列程序,写出运行结果,画出程序的流程图:main() Array {int a,b;scanf("%d%d",&a,&b);if (a<b) a=b;printf("%d",a);}执行:·若输入4 5,则输出:________________若输入5 4,则输出:________________·程序的功能是:______________________。
C语言分支结构.ppt

3.1.5 else – if 语句
if(( ch>= 'a' && ch <= 'z' )||( ch>= 'A' && ch<='Z')) letter ++;
else if (ch >= '0' && ch <= '9') digit ++;
else other ++;
实现多路选择
else – if 语句
|| ( ch >= 'A' && ch <= 'Z' )
数字字符
ch >= '0' && ch <= ' 9'
其他字符 除此外
3.1.1 程序解析
#include <stdio.h> int main(void) {
int i, digit, letter, other; char ch;
处理方法: 逐个输入与判断
ASCII字符集:每个可用字符:惟一的 次序值( ASCII 码)见附录2
1 == ‘1’ ?
3.1.3 字符型数据的输入和输出
1. 字符输入函数getchar——输入一个字符
char ch; ch = getchar( );
2. 字符输出函数putchar——输出一个字符
putchar ( 输出参数 );
条件的表示
例3-2 写出满足下列条件的C表达式 (1) ch 是空格或者回车
ch == ' ' || ch == '\n'
c语言 分支结构 课件【2024版】

break;
default:
other ++;
break;
}
}
printf("blank=%d, digit=%d, other=%d\n", blank, digit, other);
return 0;
}
3.3 分支结构程序设计
分支结构一般分为二分支和多分支两种结构 用条件语句(if 和 switch)实现选择
printf("=%.2f\n", value1*value2);
break;
case '/': printf("=%.2f\n", value1/value2);
如果除数为0?
break;
default:
printf("Unknown operator\n");
break;
}
return 0;
2、在switch中不使用break
default :
语句段n+1;
}
表达式的值=常量表达式 1 的值
表达式的值=常量表达式 2 的值
表 达 式
表达式的值=常量表达式 n 的值
其他
switch (choice) { case 1: price=3.0; case 2: price=2.5; case 3: price=4.0; case 4: price=3.5; default: price=0.0;
if (x < 2)
if (x < 1) y = x + 1;
else y = x + 2;
每条语句的执行条件?
if (x < 2){ if (x < 1) y = x + 1;
C语言课件5

[2] Select popcorn [3] Select chocolate
if (choice == 0) break;
[4] Select cola
switch (choice) {
[0] Exit
case 1: price=3.0; break;
case 2: price=2.5; break;
for( i =lo1o; ip<=o5r;si+w+)it{ch to be exited im[3m] Seedleiacttechlyo.colate
printf("[1] Select crisps \n");
[4] Select cola
printf("[2] Select popcorn \n");
下菜单,用户可以连续查询商品的价格,当查询次数
超过5次时,自动退出查询;不到5次时,用户可以选
择退出。当用户输入编号1~4,显示相应商品的价格;
输入0,退出查询;输入其他编号,显示价格为0。
[1] Select crisps [2] Select popcorn [3] Select chocolate [4] Select cola
☻ exp1 && exp2 先算exp1,若其值为0, STOP
☻ exp1 || exp2 先算exp1,若其值为1,
STOP
3 逻辑运算和逻辑表达式
例:写出满足下列条件的C表达式。(P44 例3-2 ) ① ch 是空格或者换行。 ch == ' ' || ch == '\n' ② 判断ch 是否为小写英文字母 (ch >= 'a') && (ch <= 'z') 或:ch >= 'a' && ch <= 'z' ③ 判断ch 是否为英文字母
C语言程序设计基础分支结构程序设计PPT课件

if 语句 if 语句
例:计算符号函数
输入变量x, 计算符号函数:
1 当 x>0
y = 0 当 x=0
-1 当 x<0
非0
非0
if (x>=0)
x>0
if(x>0) y = 1;
else y = 0;
else y = -1;
y=1
x >= 0
0
y=0
0 y = -1
例4-9
非0
0
x <2
非0
0
x <1
非0
0
exp1
int n;
(n>0) ? 2.9 : 1
n = 10
2.9
n = -10
1.0
x+2 x>0 y=
x2 x<=0
if ( x>0 ) y=x+2;
else y=x*x;
y = (x>0) ? x+2 : x*x;
4.3 switch语句
switch(表达式) {
case 常量表达式1:语句段1 case 常量表达式2:语句段2
非0
0
表达式
if (exp)
statement_1
语句1
ch=getchar(); if(ch>='a'&&ch<='z')
ch=ch-'a'+'A'; putchar(ch);
ch=getchar(); if(ch>='a'&&ch<='z'){
2009第三章 C语言语句与结构化程序的三种基本结构

3.2.1 表达式语句
赋值表达式语句的一般格式: <变量名> = <表达式>; 其中 “=”是赋值号, 其意义是将赋值号右边表 达式的值赋到赋值号左边的变量中去。 如: x = 5; 表示将5赋给变量x x = x+20;表示将x的内容+20再赋给x
3.2.2 数据的输出
C语言的输入和输出是通过调用I/O函数来完成 的,常用的有三对:
2. %s格式符和附加的格式说明符“m .n ”一起
使用, 其中“.n”这个附加的格式说明符是使对
输出的字符串截取n位字符。
3.2.2 数据的输出
例如: main() { printf(”%3s,%7.2s,%.4s,%- 5.3s\n”,
“china”,”china”,”china”,”china”),
3.2.3 数据的输入
scanf()函数
用于接受键盘输入的各种类型的多个数据。 scanf (格式控制字符串, 变量地址表列) ; 在scanf()函数中格式控制字符串的含义与printf() 函数中略有不同(参见P64表3.3) 输入的格式说明字符有: 格式控制问题 %d %o %x %c %s %f %e
3.2.3 数据的输入
例如:关于格式说明符的使用的例子.
?
P66 4、scanf()函数在使用时应该 注意的问题+例3.7
输入:12345678901234 输出:1 , 234 , 789012 ,34.000000 输入:12345678901234 输出: , 12 , 345.000000
3.2.3 数据的输入
getchar( )函数
函数功能:从键盘读取用户输入的一个字符, 并 将该字符的ASCII码值作为函数返回值。 注: 用户在输入字符后, 再按回车键, 输入的内 容才能被getchar()函数处理。
C语言分支结构程序设计

3.1 算法与基本程序结构
3.1.1 算法简介
1.算法的定义
算法是一个有限规则的集合,其中的规则描述了解决某个特 定问题的运算序列,也就是为解决一个具体问题而采取的确 定的有限操作步骤 .
广义地说,为解决一个问题而采取的方法和步骤,就称 为“算法”。
对同一个问题,可有不同的解题方法和步骤
例: 求
小结:
一个结构化的算法是由一些基本结构顺序组成 的。在基本结构之间不存在向前或向后的跳转, 流程的转移只存在于一个基本结构范围之内(如 循环中流程的跳转);一 个非结构化的算法可 以用一个等价的结构化算法代替,其功能不变 。 如果一个算法不能分解为若干个基本结构,则 它必然不是一个结构化的算法。
2.传统流程图描述
美国国家标准化协会ANSI(American National Standard Institute)规定了一些常用的流程图符号:
起止框
判断框
处理框
输入/输出框
注释框
流向线
连接点
开始 读入n Y 提示错误信 息
n< 0? N
result=1, i=1 result=result*i i=i+1 i>n? Y 输出result 结束 N
说明:
关系运算符的优先级低于算术运算符 关系运算符的优先级高于赋值运算符
3.关系表达式
• 用关系运算符将两个表达式(可以是算术表达式或 关系表达式,逻辑表达式,赋值表达式,字符表达式) 接起来的式子,称关系表达式
C语言中没有专用 的逻辑值,1代表 例:a>b,a+b>b+c,(a=3)>(b=5),‟a‟<„b‟,(a>b)>(b<c) 真,0代表假
C语言程序设计 第3章结构化程序设计的三种基本结构

其中输出函数printf( )只原样显示一个普通的字符串,用来 提示用户输入的数据是“成绩”。 ⑦如果是多个参数时,参数之间必须必须用逗号分隔,每 个参数要求是一个表达式(单独一个变量是表达式的特殊情 况),参数的个数和类型要与格式控制串中的格式说明符的 个数和类型相匹配。
③不可打印的特殊字符指的是该字符不能直接从输出设备输出, 也称为“转义字符”,转义字符用转义序列来表示。所谓转义 序列是用来表示字符的一种方法,即用该字符的ASCII值表示, 具体的格式为:\字母。其中: “\”表示转义字符序列的标识符,表示后面的字符是转义字符, 即是不可打印的字符; “字母”表示不可打印的转义字符,用来使输出设备输出某一 种格式,c语言中的常用转义字符如表3.4所示。
int a=4; float x=3.14; char c=’A’; 也可以对几个变量赋同一个初值,例如: int a=4,b=4,c=4; 也可以只对部分变量赋初值,例如: int a=4, b,c;
【例3.1】算术赋值运算符的使用。 #include <stdio.h> void main ( ) {
修饰符
功能说明
字母l
表示输入长整型整数,可加在格式说明符d、o、x 前面
m 表示输出数据的最小宽度 m.n 表示输出总宽度占m列,其中小数位占n位
- 表示输出的数字或字符在输出区域内向左靠
⑥如果是0个参数时,即该函数中只有格式控制串部分, 没有参数表部分,二者之间的逗号可以省略。这时格式控 制串部分是一个普通的字符串,该字符串将原样显示在屏 幕上,常常用来作为提示信息或字符串的输出。例如:
A
C语言讲义 第3章 顺序和分支结构

内嵌if 内嵌
statement1 内嵌if statement2 内嵌 statement3 内嵌if 内嵌 statement4 15
内嵌if 内嵌
第3章 顺序结构和分支结构
例 输入两数并判断其大小关系 /*ch4_9.c*/ #include <stdio.h> main() 运行: 运行:Enter integer x,y:12,23↵ ↵ { int x,y; X<Y printf("Enter integer x,y:"); Enter integer x,y:12,6↵ ↵ scanf("%d,%d",&x,&y); X>Y if(x!=y) Enter integer x,y:12,12↵ ↵ if(x>y) printf("X>Y\n"); X==Y else printf("X<Y\n"); else printf("X==Y\n"); }
16
第3章 顺序结构和分支结构
作业
1. 编写程序,根据输入的学生成绩,给出相应的等级。
90分以上的等级为A,60分以下的等级为E,其余每 10分一个等级。 2. 请输入两个整数a,b,比较a+b和a×b哪个大,输出判 断结果。 3. 有一函数:
用 scanf函数输入 x 的值(分别为 x<1,1~10,>=10 三种 情况),求 y值。 17
第3章 顺序结构和分支结构
例 求分段函数的值
( x < 0) 0 f ( x) = 2 x + 1 ( x ≥ 0)
/*ch4_2.c*/ #include <stdio.h> main() if(x>=0) { int x,y; y=2*x+1; printf("Enter integer x:"); else scanf("%d",&x); y=0; y=x>=0?2*x+1:0; printf(“当X=%d时,f(x)=%d\n”,x,y); 当 时 } 运行:Enter integer x:10↵ 运行: ↵
C语言分支结构

解题思路
判断奇偶性。输入一个整数n,判断n 是奇数还是偶数,若为奇数输出”奇 数”,若为偶数,输出”偶数”。
if ( nn是%22的=倍= 0数) 输出“偶数”;
else 输出“奇数”;
if (n不n%是22的!=倍0数) 输出“奇数”;
3.1 if控制语句
if (表达式) 语句1
else 语句2真ຫໍສະໝຸດ 语句1表达式假 语句2
语句1和语句2可以是单个语句,也可以是用{}括 起来的复合语句
else 和语句2并不是必须的,一般把缺省else 和语 句2的if语句称为单分支if语句。
3.1.1 if-else语句
例3.1:从读入两个整数,要求输出这两个 整数中较大的一个。
例3.4 输出三个整数的最大值
解题思路2: 在程序3-3的基础上进行扩充。在程序3-3中,已 将a 和b的最大值存入max,在此基础上,将c 与 max 比较:如果c > max,则用c更新max。 实现过程如下: (1)读入整数a、b和c; (2)将a 存入max(暂时认为a 最大); (3)如果b > max,用b更新max; (4)如果c > max,用c更新max; (5)输出max。
}
/*程序3-3:使用单分支if语句求两个整数的最大值*/ #include<stdio.h> int main(void) {
int a, b, max;
scanf("%d%d", &a, &b);
max = a;
/*暂且认为a大*/
if(b > max) {
《分支结构》PPT课件

2021/8/17
23
2021/8/17
上海市向明中学 励颖
24
2021/8/17
上述例题和后续的两个拓展练习“手 机通话费用计算”和“一元二次方程 求解”都是为巩固分支嵌套而设计的。
17
例8:输入三个不相等的数a,b,c ,将最大数赋值给 变量max并输出。(一题多解)
❖ 讲解方法:先回忆两数比较大小,然后可先在黑板 上将三个数的关系分析清楚,再根据其逻辑关系画 出流程图。可通过让学生读流程图或补全流程图来 降低难度。
2021/8/17
9
选用的例题意图及学生容易出现的错误
❖ 引入阶段——例1、例2(生活实例) ❖ 分支结构的初步学习——例3、练习1、练习2 ❖ 分支结构的初步应用——例4、例5 ❖ 分支嵌套——例6、例7、拓展练习1、拓展练习2 ❖ 分支结构的提高应用——例8、例9
2021/8/17
10
例3:从键盘输入的两个不相等的数,打印出其中 较大的数。(双分支结构)
<条件成立执行的语句块> ELSE
<条件不成立时执行的语句块> END IF
➢要强调IF和END IF的一 一 对应。 ➢要强调分支结构中语句 块采用缩进方法书写。
单分支的语句格式: IF <条件> THEN
<条件成立执行的语句块> END IF
➢要讲清楚分支结构的执 行过程,特别要和顺序结
构区别开来。
2021/8/17
6
分支结构的两种基本模式与程序设计中的IF语句:
此时,一定要问清楚学生,“否” 的这个分支含义是什么,这样当 学生学习IF语句中的ELSE时,可 以理解ELSE语句中其实隐含着不 成立的条件,无须重复书写。
C语言第3章_分支结构

3.3练习与习题参考答案3.3.1练习参考答案3-1 例3-4中使用else-if 语句求解多分段函数,为了检查else-if 语句的三个分支是否正确,已经设计了三组测试用例,请问还需要增加测试用例吗?为什么?如果要增加,请给出具体的测试用例并运行程序。
解答:最好再增加两组测试用例,因为尚未对分段函数参数的边界值进行测试。
可再给出x=0和x=15时的两种情况。
3-2 计算符号函数的值:输入一个整数x ,计算并输出符号函数 sign(x) 的值。
试编写相应程序⎪ ⎩⎪ ⎨ ⎧ >=<−==010001)(x x x x sign y ,,,解答:#include<stdio.h>int main (void){int x, y;scanf ("%d", &x);if (x > 0) y = 1;else if (x == 0) y = 0;else y = -1;printf ("sign(%d) = %d\n", x, y);return 0;}3-3统计学生平均成绩与及格人数:输入一个正整数n,再输入n 个学生的成绩,计算平均成绩,并统计所有及格学生的人数。
试编写相应程序。
解答:#include <stdio.h>int main (void){int count, grade, i, n;double average, sum;scanf ("%d", &n);count = 0;sum = 0;for (i = 1; i <= n; i++){scanf ("%d", &grade);sum = sum + grade;if (grade >= 60) {count++;}}if (n > 0) {average = sum / n;}else{average = 0;}printf ("average = %.1f\n", average);printf ("count = %d\n", count);return 0;}3-4统计字符:输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
c语言分支结构

c语言分支结构C语言分支结构引言C语言是一种广泛使用的编程语言,具有高效、灵活和可移植性等特点。
在C语言中,分支结构是一种重要的程序控制结构,它可以根据不同的条件执行不同的代码块,从而实现程序的灵活控制。
本文将介绍C语言中的分支结构及其使用方法。
一、if语句if语句是最基本的分支结构之一,在C语言中用于根据某个条件来判断是否执行某段代码。
if语句的基本格式如下:if(条件表达式){//执行代码块1}else{//执行代码块2}其中,条件表达式为一个逻辑表达式,如果它的值为真,则执行代码块1;否则执行代码块2。
需要注意的是,else子句可以省略,这时候如果条件表达式为假,则不执行任何操作。
二、switch语句switch语句也是一种常用的分支结构,在C语言中用于根据不同情况来选择不同操作。
switch语句的基本格式如下:switch(变量表达式){case 常量表达式1://执行代码块1break;case 常量表达式2://执行代码块2break;default://执行代码块3}其中,变量表达式为一个整型表达式,它的值会与各个常量表达式进行比较,如果匹配则执行对应的代码块。
需要注意的是,每个case子句后面必须加上break语句,否则会继续执行下一个case子句中的代码。
default子句可以省略,这时候如果没有任何匹配,则执行代码块3。
三、嵌套分支结构在C语言中,可以使用嵌套分支结构来实现更加复杂的程序控制。
例如:if(条件表达式1){if(条件表达式2){//执行代码块1}else{//执行代码块2}}else{if(条件表达式3){//执行代码块3}else{//执行代码块4}}在上述例子中,首先判断条件表达式1是否为真;如果是,则进一步判断条件表达式2是否为真;如果是,则执行代码块1;否则执行代码块2。
如果条件表达式1为假,则进一步判断条件表达式3是否为真;如果是,则执行代码块3;否则执行代码块4。
C语言分支结构PPT课件

开始
0=>p
1=>n
P+n=>p
n+1=>n Y n<=5
N 结束
5
第5页/共31页
算法的流程图描述
• 例4-4 有50个学生,要求将他们之中成绩在80分以上者打印出来。
ni, gi为第i个学生 的学号和成绩
S1:1=>i; S2:输入ni,gi; S2:若gi>=80,则打印ni和gi,否则不打印; S3:i+1=>i; S4:若i<=50,执行S2;
A P
i+1=>i 直到i>50时
7
第7页/共31页
算法的伪代码描述
伪代码:用介于自然语言和计算机语言之间的文字及符号来描述算法 (方便、易懂、便于向计算机语言过渡)
基本结构: begin 初始化; 执行语句1; …… 执行语句n; end
可以写文字,也可以写简易代码
8
第8页/共31页
§4.2 C语言的语句
运行:Enter integer a:12 Enter integer b:9 a!=b
printf("a!=b\n");
}
12
第12页/共31页
形式三: 格式: if (expr1)
{语句组1;}
else if( expr2)
{语句组2;}
else if( expr3)
{语句组3;}
……
[ else
index=0.2;
if (salary>400) inedlesxe=…0.1..;.
else if (salary>400)
else index=0;
C语言第3章

3.3.3 if语句的嵌套
注意: 1.else子句不能作为语句单独使用,它必须与if配对使用。 2.为使程序结构清晰、层次分明,常常采用程序行缩进的书 写格式,if 和其对应的else写在一列上。但,书写格式不能 代替逻辑结构。 3.if 和 else 的配对关系。一个 else 总是与其上面距它最近 的,并且没有其它 else 与其配对的 if 相配对。
3.2 关系运算和逻辑运算
3.2.1 关系运算
运算符 含义 优先级 < 小于 <= 小于等于 6 > 大于 >= == != 大于等于 等于 不等于 7
3.2.2 逻辑运算
运算符 含义 优先级 ! 逻辑非 2 && 逻辑与 11 || 逻辑或 12
关系表达式
关系表达式是使用关系运算符将两个表达式(算术表达式,关系表达式, 逻辑表达式,赋值表达式等)连接起来的式子。 关系表达式的值:关系表达式成立,即为“真”,C语言中用1表示; 关系表达式不成立,即为“假”,C语言中用0表示。 对1.0/3.0*3.0==1.0,计算机判 为假改写为:fabs(1.0/3.0*3.0字符比较按ASCII码进比较 1.0)<1e-5; 对浮点数判断是否相等时,由于计算机存储的误差,会出现错误的结果。 应避免对两个实数表达式作“相等”或“不相等”的判别。 例:表达式5>2>7>8在数学上是不允许的。在C语言中是允许的,按自左而 右求解。5>2值为1;1>7值为0;0>8值为0。表达式的值为0。
例:a&&b&&c :a为真才判别b,a和b同时为真才判别c a||b||c:只要a为真,就不再判断b和c 例:(m=a>b)&&(n=c>d) 当a=1,b=2,c=3,d=4时,m=0,n维持原值
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 构造类型:
1 char (字符)数据类型
字符型数据有常量和变量之分 1) 字符型常量的描述
(P41)
合法字符值(字符型常量)的描述:由一对单引号 所包括的一个字母、数字或特殊符号
'a', ' ', '9', '&','%' "b", 'aB'
如何表示单引号' 呢?
1 char (字符)数据类型
真-1, 假-0,
计算时数值非零就是真
3 逻辑运算和逻辑表达式
真-1, 假-0, 计算时非零就是真 哪些是逻辑表达式? a && b a || b && c !a && b a || 3+10 && 2 !(x == 2) !x == 2 ch || b 0 1 0 1 1 0 1
char ch = 'w'; int a = 2, b = 0, c = 0; float x = 3.0;
① x >= -1 并且 x <= 1
-1 1 x
x >= -1 && x <= 1
ห้องสมุดไป่ตู้
② x <= -1 或者 x >= 1 x <= -1 || x >= 1 ③ 非(x <= -1)即x>-1
-1 1 -1 1 x !(x <= -1) x
3 逻辑运算和逻辑表达式
逻辑运算符的结果,只有两个值:“真”或“假”。
(64-127)
'0'-'9' 'A'-'Z' 'a'-'z'
1 char (字符)数据类型
2) 字符型变量的描述 定义字符型变量ch,用于存放字符型数据。 char ch; c1 = ‘a’; 97
一个字符占一个byte
ch = ‘a‘;
/* 表示将字符型常量 ’a‘ 赋给字符型变量ch */
从键盘输入一个字符 char ch; ch = getchar( );
2)字符输出函数int putchar(输出参数)
输出一个字符 putchar(输出参数);
ch=getchar();
putchar(ch);
字符常量或字符变量
例
3 逻辑运算和逻辑表达式
X > 100
并且 x < 1000
x∈(100,1000)
1) 字符型常量的描述 一些特定含义的字符表示方法(转义字符):
'\'': 表示单引号 '\"': 表示双引号 ‘\n’: 表示换行符 ‘\0’: 表示值为0的字符 ‘\007’: 表示鸣叫beep声音的字符
Question: 到底char类型可以表达多少字符呢? 一个char占8bits, 28 =256
第三章 分支结构
涉及的C语言语法内容: 3.1.2 3.1.3 3.1.4 3.1.5 字符类型 字符数据的输入和输出 逻辑运算 分支结构
C语言提供的数据类型
1. 基本数据类型:
1) 整型: int 2) 实型(浮点型) float (单精度浮点型), double (双精度浮点数) 3) 字符型 char (character)
写出满足要求的C表达式
(1) x 为零
关系表达式 x == 0 逻辑表达式 !x
x取0 x取非0 x==0 真 x==0 假
x取0
!x 真
x取非0 !x 假
(2) x 不为零 关系表达式 x != 0 逻辑表达式 x
(3)x 和 y 不同时为零 !(x == 0 && y==0) x != 0 || y!=0 x || y
例3-4 查询自动售货机中商品的价格 (p47)
假设自动售货机出售4种商品,薯片(crisps)、爆米花 (popcorn)、巧克力(chocolate)和可乐(cola),售价 分别是每份3.0、2.5、4.0和3.5元。在屏幕上显示以 下菜单,用户可以连续查询商品的价格,当查询次数 超过5次时,自动退出查询;不到5次时,用户可以选 择退出。当用户输入编号1~4,显示相应商品的价格; 输入0,退出查询;输入其他编号,显示价格为0。 [1] Select crisps 循环次数明确,用for [2] Select popcorn [3] Select chocolate 要选择的条件明 确,类别较多 [4] Select cola [0] Exit switch 和 break;
#include <stdio.h> int main(void) A break statement { int choice, i; double price; causes for( i = 1; i <= 5;switch i++) { loop or to be exited printf("[1] Select crisps \n"); printf("[2] Select popcorn \n"); printf("[3] Select chocolate \n"); printf("[4] Select cola \n"); printf("[0] exit \n"); printf("Enter choice: "); scanf("%d", &choice); if (choice == 0) break; switch (choice) { case 1: price=3.0; break; case 2: price=2.5; break; case 3: price=4.0; break; case 4: price=3.5; break; default: price=0.0; break; } printf("price = %0.1f\n", price);
☻ exp1 && exp2 先算exp1,若其值为0, STOP ☻ exp1 || exp2 先算exp1,若其值为1, STOP
3 逻辑运算和逻辑表达式
例:写出满足下列条件的C表达式。(P44 例3-2 ) ① ch 是空格或者换行。 ch == ' ' || ch == '\n' ② 判断ch 是否为小写英文字母 (ch >= 'a') && (ch <= 'z') 或:ch >= 'a' && ch <= 'z' ③ 判断ch 是否为英文字母 (ch >= 'a' && ch <= 'z') || ( ch >= 'A' && ch <= 'Z') ④ year 是闰年,即 year 能被 4 整除但不能被 100 整除,或 year 能被 400 整除。 ( year%4 == 0 && year % 100 != 0) || (year%400 == 0)
2 字符型数据的输入和输出(p42)
方法1:调用函数scanf()和printf() char ch; scanf("%c", &ch); printf("%c", ch); scanf(“%d%c%d”, &a,&ch,&b);
2 字符型数据的输入和输出(p42)
方法2:调用字符输入输出函数
1)字符输入函数int getchar(void)
( x > 100) && ( x < 1000)
X > 100
或者 x < 80
( x > 100) || ( x < 80)
3 逻辑运算和逻辑表达式
1) 逻辑运算符
①逻辑与 && , 二目运算符 a = 105; (a > 100), && (a < 1000) 就是“真” a && b60; 运算对象 和 b都为“真”时 ,结果为 a= (aa > 100) && (a < 1000) 就是“假” “真” . 否则为假。 ②逻辑或 a = 105; || , 二目运算符 (a > 100) || (a < 80) 就是“真”
1 char (字符)数据类型
典型字符集:ASCII码 (P283)
(American Standard Code for Information Interchange)
ASCII 码列出所有可用的字符 每个字符对应唯一的次序值(ASCII 码值)
(0-63)
严格区别数字字符和数字 字符'0'完全不同于数字0
3 逻辑运算和逻辑表达式
1) 逻辑运算符
A,B代表不同的逻辑对象集合
A && B A || B
A
B
A
B !A !A A
3 逻辑运算和逻辑表达式
A && B A || B !A !(x>1) 即 x<=1
(x>1)&&(y>1)
(y>1) (x>1)
(x>1)||(y>1)
(y>1) (x>1)
3 逻辑运算和逻辑表达式