C 语言课件第5章

合集下载

C_C++程序设计与上机指导005

C_C++程序设计与上机指导005
一般形式: 文件名" 一般形式:#include"文件名 文件名 文件名> 或:#include<文件名 文件名
文件包含命令的功能:把指定的文件插入该命令行位置取代该命令行, 文件包含命令的功能:把指定的文件插入该命令行位置取代该命令行, 从而把指定的文件和当前的源程序文件连成一个源文件。 从而把指定的文件和当前的源程序文件连成一个源文件。 这两种形式是有区别的: 这两种形式是有区别的:使用尖括号表示直接到系统指定的包含文件 目录去查找,而不在源文件目录去查找;使用双引号时, 目录去查找,而不在源文件目录去查找;使用双引号时,则表示系统 首先在当前的源文件目录中查找,若未找到, 首先在当前的源文件目录中查找,若未找到,再到系统指定的包含文 件目录去查找,故使用双引号比较保险。当然, 件目录去查找,故使用双引号比较保险。当然,用户编程时可根据自 己文件所在的目录来选择某一种命令形式。 己文件所在的目录来选择某一种命令形式。
以上这种形式也称为不带参数的宏定义。此外, 以上这种形式也称为不带参数的宏定义。此外, 还常对程序中反复使用的表达式进行宏定义。 还常对程序中反复使用的表达式进行宏定义。
Company Logo
5.1.2 带参宏定义
C语言允许宏带有参数,这时不单要进行字符串替换,还 语言允许宏带有参数,这时不单要进行字符串替换, 要进行参数替换。在宏定义中的参数称为形式参数, 要进行参数替换。在宏定义中的参数称为形式参数,在宏 调用中的参数称为实际参数。对带参数的宏,在调用中, 调用中的参数称为实际参数。对带参数的宏,在调用中, 不仅要宏展开,而且要用实参去代换形参, 不仅要宏展开,而且要用实参去代换形参,非形参字符保 持不变。 持不变。
带参宏定义一般形式: 带参宏定义一般形式: • #define 宏名 形参表 字符串 宏名(形参表 形参表) 其中:字符串中含有各个形参。 其中:字符串中含有各个形参。 带参宏调用一般形式: 带参宏调用一般形式: • 宏名 实参表 ; 宏名(实参表 实参表); 如: • #define S(a,b) a*b /*带参宏定义 带参宏定义*/ 带参宏定义 • area=S(3,2); /*带参宏调用 带参宏调用*/ 带参宏调用

C语言程序设计第五版谭浩强 ppt课件

C语言程序设计第五版谭浩强 ppt课件

Ctrl+KV--------块移动
Ctrl+KY-------块删除 Ctrl+KH--------块隐藏
窗口操作:
F5-----窗口缩放 F6-----窗口切换
程序调试:
<>
F8-----Step over
F7-------Trace into
/* example1.1 calculate the sum of a and b*/
#include <stdio.h>
预处理命令
/* This is the main program */
void main() { int a,b,sum; /*定义变量*/ 函数
注释

a=10;

b=24;
sum=add(a,b);
空类型void
短整型short 整型int 长整型long 单精度型float
双精度型double
<
定义类型typedef
C语言程序设计
第一章 C语言概述
§1.3 简单的C程序介绍
例1.1 第一个程序This is a c program .
/* example1.1 The first C Program*/
第一章 C语言概述
C语言结构特点
❖函数与主函数
程序由一个或多个函数组成
必须有且只能有一个主函数main(),可以放在程序中任一 位置
程序执行从main开始,在main中结束,其它函数通过嵌 套调用得以执行。
❖程序语句
C程序由语句组成 用“;”作为语句终止符
❖注释
/* */为注释,不能嵌套
C语言运算符丰富(附录C)

C语言程序设计PPT课件 第5章 数组程序设计

C语言程序设计PPT课件 第5章 数组程序设计
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
例5-3 用一维数组生成Fibonacci数列的前20项,并输出。
#include<stdio.h> void main() {
long int fib[21]; int i; fib[1]=1; fib[2]=1; for(i=3;i<=20;i++)
{
if(str[i]>='0'&&str[i]<='9')
digital[j++]=str[i];
i++;
}
digital[j]='\0';
printf("Output: %s\n",digital);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
/* program e5-6.c*/
5.2.1 字符##串iinncc的lluudd输ee<<入ssttrd输iniog出.h.h>>
}
for(i=0;i<N;i++) printf("%d ",a[i]);
}
C语言程序设计(第3版)张磊编著 清华大学出版社
5.1.4 数值型一维数组的初始化
数组的初始化,是在定义数组的时对数组的各个元素赋初值。 1. 全部元素的初始化 格式
数据类型 数组名[数组长度]={数组全部元素值表} 数据类型 数组名[]={数组全部元素值表} int a[6]={10,20,30,40,50,60}; float r[]={12.5,-3.11,8.6}; 2. 部分元素的初始化 格式 数据类型 数组名[数组长度]={数组前部元素值表} int b[10]={1,2,3}

C语言程序设计课件

C语言程序设计课件

成绩考核
• 成绩考核方法:
期末成绩=平时成绩20%+期末考试80%;
注:平时成绩包括:上课情况、作业情况、上机作业完 成情况等。
学习C的忠告
上机实践(编程)!!! (Try!!!)
C语言程序设计教程
• • • • • • • • • • • 第1章 第2章 第3章 第4章 第5章 第6章 第7章 第8章 第9章 第10章 第11章 引言 程序的简单算法制定 基本程序语句 选择结构 循环结构 函数与编译预处理 数组 指针 构造数据类型 文件 位运算
总结:简单C语言程序设计步骤
1. 分析问题,设计解决方案 2. 了解和编写C语言程序代码
理论课的主 要内容
3. 上机调试(编辑、编译、链接、执行)
•实验课的主要内容 •上述每个步骤都可能出现很多错误, 具体有三种错误:语法错误、逻辑错误、 运行错误。总之,出现错误就要进行调 试。
作 业
• 1、在屏幕上输出如下图形: • **** • * * • * *25 • **** • 要求:写出程序,并上机调试,尽量保证 程序能够得到正确结果。复习本讲内容( 第一章),预习教材第二章。
链 接
• 链接是将与当前程序有关的、已经有的几个目标模块链接 在一起,形成一个完整的程序代码文件。这些已经有的目 标模块有: • · 库函数:如前面使用的printf; • · 对于大的程序,常常分成几个模块,分别编写、编辑和 编译,形成不同的目标模块。 • 经正确链接所生成的文件才是可执行文件。可执行文件的 文件名后缀为.exe(有的系统为.out)。完成链接过程的 软件称为链接器(linker)。 • 程序在连接过程中,也可能发现错误。这时也要重新进入 编辑器进行编辑。
一、算法(algorithm)

C语言第5章循环结构PPT课件

C语言第5章循环结构PPT课件
格式:while (条件1)
3. 用for 语句实现循环 4. 循环的嵌套
5. break语句和continue语句 6. 几种循环的比较 7. 程 序 举 例
第2页/共63页
一、循环概述
3
第3页/共63页
在很多实际问题中会遇到有规律性的重复运算,因 此在程序中就需要将某些语句重复执行。 • 一组被重复执行的语句称为循环体; • 每重复一次,都必须作出是继续还是停止循环的决 定,这个决定所依据的条件称为循环条件;
do {
......
for(;;) { ......
}while();
}
47
第47页/共63页
例7. 打印乘法“九九表”
1 2 3 4 56 7 89 11 22 4 33 6 9 4 4 8 12 16 5 5 10 15 20 25 6 6 12 18 24 30 36 7 7 14 21 28 35 42 49 8 8 16 24 32 40 48 56 64 9 9 18 27 36 45 54 63 72 81
循环的概念 用while语句和do-while语句实现循环
用for 语句实现循环 循环的嵌套
break语句和continue语句 几种循环的比较 程序举例
第44页/共63页
循环的嵌环中还可以嵌套循环,这就是多重循环。
循环1
循环2
28
第28页/共63页
29
第29页/共63页
(2):从高位到低位求每一位。
30
第30页/共63页
(3):从低位到高位求每一位。
31
第31页/共63页
循环结构程序设计
1. 循环的概念 2. 用while语句和do-while语句实现循环

第五章 C语言多重循环语句ppt课件

第五章  C语言多重循环语句ppt课件
scanf(“%f”,&Weight); /*第7个儿童的体重*/ total=total+ Weight; /*前7个儿童的总体重*/
scanf(“%f”,&Weight); /*第8个儿童的体重*/ total=total+ Weight; /*前8个儿童的总体重*/
scanf(“%f”,&Weight); /*第9个儿童的体重*/ total=total+ Weight; /*前9个儿童的总体重*/
unsigned n,sum=0; scanf(“%u”,&n); do { sum+=i ;
int i; float Weight, total=0, aver;
*输入N个儿童的体重并计算总体重*/
for(i=1;i<=N;i++) {
scanf(“%f”,&Weight); /*第i个儿童的体重*/ total=total+ Weight; /*i个儿童的总体重*/
}
aver=total/N;
scanf(“%f”,&Weight); /*第1个儿童的体重*/ total=total+ Weight; /*前1个儿童的总体重*/
scanf(“%f”,&Weight); /*第2个儿童的体重*/ total=total+ Weight; /*前2个儿童的总体重*/
scanf(“%f”,&Weight); /*第3个儿童的体重*/ total=total+ Weight; /*前3个儿童的总体重*/
/*10个儿童的平均体重*/
printf(“%d个儿童的平均体重是:%.2\n”,N,aver); }

C语言课件 第5章

C语言课件 第5章
如果x<y, max=y, min=x ③ 输出最大值max、 最小值min
第5章 选择结构程序设计
/*程序 5 - 3, 求两个数的最大值、 最小值*/ main( ) { float x, y; float max, min; printf(″请输入两个数x, y: ″); scanf(″%f, %f″, &x, &y); if (x>y) {max=x; min=y; } else {max=y; min=x; } printf(″max=%6.2f, min=%6.2f\n″, max, min); } 输入数据: 1.2, 2.54 运行结果: max= 2.54, min= 1.20
第5章 选择结构程序设计
5.1.3 多分支if语句
多分支if语句不是一条具体的语句,它通过if语句的嵌套实
现。其一般形式为: if (条件表达式1)
if (条件表达式2) 语句1
else 语句2 else if (条件表达式3) 语句3 else 语句4
第5章 选择结构程序设计
T T
条件表达式1 条件表达式2
}
第5章 选择结构程序设计
例 5 — 7 将例 5 — 5 用switch语句实现。
switch ((int)(cj/10)) { 10: 9: ch=′A′; break; /*注意选择表达式的构造*/
8: ch=′B′; break;
7: ch=′C′; break; 6: ch=′D′; break;
第5章 选择结构程序设计
例 5 –3 输入两个数, 求两个数的最大值、最小值。 数据分析:
输入量: 两个数x、 y, float

C语言课件第5章循环结构程序设计2

C语言课件第5章循环结构程序设计2
18
思考 1、如果去掉循环体 中的大括号会怎样? 2、在循环体中,使 循环条件趋向于不满 足(假)的语句是哪 条?
第5章
循环结构程序设计
举例
while和do-while循环的比较。
此程序的 功能?
#include <stdio.h> int main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum=sum+i; i++; } printf("sum=%d\n",sum); return 0; }
第5章
循环结构程序设计
举例
现有某班20名学生的C语言成绩,求该班学生的C语 言的平均成绩。即:输入20个学生的成绩,计算平 均值,输出平均值。
分析:定义变量表示学生的成绩、全班总和、平均成绩。 如果定义20个变量保存20 算法设计: 个成绩,程序中计算成绩 第一步:输入20个学生的成绩 总和会有什么问题? 第二步:计算成绩总和 (用累加求和的方法)
运行结果:凵2550
#include <stdio.h> int main() { int i=1, n; float fac=1; printf("请输入n:"); scanf ("%d",&n); while (i<=n) { fac=fac*i; i++; } printf("%.0f\n",fac); return 0; } 请输入n:5
分析
求1~100的累加和。
换一种思路:
sum=sum+n;
首先设置一个累计器sum,其初值为0,利用sum += n来计算(n依次 取1、2、……、100),只要解决以下3个问题即可: (1)将n的初值置为1; (2)每执行1次“sum += n;”后,n增1; (3)当n增到101时,停止计算。此时,sum的值就是1~100的累 计和。

C语言课件

C语言课件
第5章 章 选择结构程序 设计
关系运算符和关系表达式
• C语言提供 种关系运算符: 语言提供6种关系运算符 语言提供 种关系运算符: 小于) ① <(小于 小于 小于或等于) ② <=(小于或等于 小于或等于 优先级相同 (高) 高 大于) ③ >(大于 大于 大于或等于) ④ >=(大于或等于 大于或等于 等于) ⑤ = = (等于 等于 优先级相同 (低) 低 不等于) ⑥ !=(不等于 不等于
if语句 语句
• if语句的三种形式 语句的三种形式 – 形式一: 形式一:
• 格式:if (expression) 格式: statement 例: if(x>y) > printf("%d\n",x); % , ;
expr 非0 statement =0
• if语句的三种形式 语句的三种形式 – 形式二: 形式二:
如: …… case ‘A’: case ‘B’: case ‘C’: printf(“score>60\n”); break; ……..
例: switch(grade) {case 'a'∶ ∶ printf("85~100\n");break; ~ \ ; case 'b'∶ ∶ printf("70~84\n");break; ~ \ ; case 'c'∶ ∶ printf("60~69\n");break; ~ \ ; case 'D'∶ ∶ printf("<60\n");break; < \ ; default∶ ∶ printf("error\n");break; \ ; }
• 逻辑运算符的优先次序

C语言程序设计教程(第5版)王秀鸾全册PPT课件

C语言程序设计教程(第5版)王秀鸾全册PPT课件

ANSI 标准
2. C语言的特点
(1)语言简洁、紧凑,使用方便、灵活。 (2)支持结构化程序设计 。 (3)运算符丰富。 (4)数据类型丰富。 (5)较强的编译预处理功能。 (6)C语言的可移植性好。 (7)C语言本身既有一般高级语言的优点,又有低级 (汇编)语言的特点 。 (8)语法限制不太严格,程序设计自由度大。
printf(“sum is %d \n”,sum ); /* 输出sum的值 */
}
程序的运行结果为:
sum is 8
【例1.5】求两个整数中的较小者
#include “stdio.h”
main( )
/* 主函数 */
{ int x,y,m;
/* 定义变量 */
int fun(int a,int b);
1.1 程序设计的基本概念
1.1.2程序设计的一般过程
① 分析、理解问题 ② 解决方案(大致的思路),建立数学模型 ③ 求解步骤和流程(算法)(文字、符号等的描述) ④ 使用程序设计语言编写源程序 ⑤ 运行调试程序 ⑥ 整理输出结果,写出相关文档
分析 问题
确定处 理方案
确定操 作步骤
编写 程序
图1.1 程序设计的一般过程
1.2.2 初识C语言程序
(1) C程序的构成 【例1.4】求两个整数m与n的和。
#include “stdio.h”
main( )
/* 主函数 */
{int m,n,sum;/* 定义变量m,n, sum*/
m=5; n=3; /* 给变量m,n赋值 */
sum=m+n; /* 求m+n的值,并赋给变量sum */
上机运 行程序
整理 结果

精品课件-C程序设计(第三版)(荣政)-第5章

精品课件-C程序设计(第三版)(荣政)-第5章

第五章 循环结构的C程序设计
(2) 循环体由多个语句组成时,必须用左、右花括号括 起来,使其构成一复合语句。
如下例: void main() {
int i,sum; i=5;sum=0;
while (i>0) { sum=sum+i; i--; }
}
第五章 循环结构的C程序设计
若其中的循环体无{ },即循环语句写成: while (i>0) sum=sum+i; i--;
第五章 循环结构的C程序设计
运行结果: Input n:6 ↙ 12 34 2 11 9 5 ↙ sum is:73
第五章 循环结构的C程序设计
图 5.2 求n个数的和
第五章 循环结构的C程序设计
例 5.2 从键盘连续输入字符,直到输入“回车”符为止, 统计输入的字符个数。
分析:算法由图5.3所示的流程图描述。
#include <stdio.h> void main() {
int i,n,k,sum; i=1;sum=0; printf("Input n:"); scanf("%d",&n);
while(i<=n) { scanf("%d",&k); sum=sum+k; i++; }
printf("\nsum is:%d\n",sum); }
第五章 循环结构的C程序设计
(3) 若do-while语句的循环体部分由多个语句组成时,必 须用左、右花括号括起来,使其形成复合语句。例如:
do {
sum+=i; i--; } while(i>0); (4) C语言中的do-while语句是在表达式的值为“真”时 重复执行循环体的,这一点同别的语言中的类似语句有区别, 在程序设计中应引起注意。

《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计

Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;

《C语言程序设计》课件 第五章 数组

《C语言程序设计》课件 第五章 数组
若二维数组名a代表的起始地址为5948,则它的三个元 素a[0]、a[1]和a[2]分别对应了起始地址5948、5956和 5964。
a(5948)
a[2](5964) a[1](5956) a[0](5948) 图 5-10
a[2][1] (5968) a[2][0] (5964) a[1][1] (5960) a[1][0] (5956) a[0][1] (5952) a[0][0](5948)
return 0;
}
5.1.4一维数组程序举例
3.用选择法对输入的n个学生的单科成绩进行 从小到大排序。
编程思路: 直接选择排序的过程是:首先在所有数据中找出值 最小(最大)的数据,把它与第1个数据交换,然后 在其余的数据中找出值最小(最大)的数据,与第2 个数据交换......依次类推,这样,n个数据经过n-1轮 交换后可得到有序结果。
printf("%3d ",a[i]); printf("\n"); return 0; }
5.1.3 一维数组的初始化 5.1.3 一维数组的初始化
数组初始化常见的格式:
1.用大括号括起来的常量表达式列表,常量表达式 之间用逗号进行分隔: int a[10]={1,2,3,4,5,6,7,8,9,10};
注意:
不要将a[i][j]写成a[i,j],否则编译系统会将逗号分隔 符作为逗号运算符处理,即将a[i,j]视为a[j]。
5.2.2二维数组元素的引用
可以将二维数组看成是特殊的一维数组。
例如,二维数组a[3][2]可以看成是长度为3的一维数组, 所含的3个数组元素分别为:a[0]、a[1]、a[2]
for(i=0;i<3;i++) for(j=0;j<5;j++)

C语言课件-第5章 函数 湘潭大学上课课件

C语言课件-第5章  函数 湘潭大学上课课件

为什么要用函数
解决的方法:用模块化程序设计的思路
采用‚组装‛的办法简化程序设计的过程 事先编好一批实现各种不同功能的函数 把它们保存在函数库中,需要时直接用
为什么要用函数
解决的方法:用模块化程序设计的思路
函数就是功能 每一个函数用来实现一个特定的功能 函数的名字应反映其代表的功能
b
g h
c
i
为什么要用函数
可以使用库函数
可以使用自己编写的函数 在程序设计中要善于利用函数,可以减少
重复编写程序段的工作量,同时可以方便 地实现模块化的程序设计
C语言中的函数
0个或多个数据被传递
参数
函数体
至多一个数据或结构被返回
C语言中的函数
math.h中提供的函数(库函数)
double sqrt(double x)
//函数定义 int firstDigit (int num) { return (num % 10); }
digit = firstDigit (number); printf("\nLeast significant digit is: %d\n", digit); return 0; } // main
带参数的void函数:void getnum(int a) 有返回值但不带参数的函数:int caculate() 有返回值且带参数的函数:int max(int a,int b)
函数使用(调用)
greeting();
getnum(10); Result=caculate();
a
200 100

x
200 100
void TryToChange(int x) { x = x * 2; }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• 例5.1输入两个实数,按代数值从小到大的 次序输出这两个实数 main( ) {float a,b,t; scanf("%f,%f",&a,&b); if(a>b) {t=a;a=b;b=t;} printf("%5.2f,%5.2f",a,b);} 运行时输入:3.6,-3.2 输出结果 :-3.20,3.60
C语言40
• 1. 2. 3. • •
逻辑运算规则: a&&b 若a、b均为真,则a&&b为真 a||b 若a、b之一为真,则a||b为真 !a 若a为假,则 !a为真 请思考:a、b如何表示真、假? 逻辑运算符的优先次序 ! && ||
• 优先顺序 ! 高 算术运算符 关系运算符 && 和 || 低 赋值运算符 例如:x=(a+b)&&(b<c)||!(d=1) 问:括号都能去掉吗?
内嵌if
内嵌if
C语言40
• 注意if与else的配对关系 • else总是与它上面最近的没有else的if配对 • if( ) if( ) 语句1 else 内嵌if if( ) 语句2 内嵌if else 语句3 • if( ) {if( ) 语句1} (实现内嵌if) else
• 例5.3有一函数: -1 (x<0) y= 0 (x=0) 1 (x>0) 算法1: 算法2: 输入x 输入x 若x<0 y=-1 若x<0 y=-1 若x=0 y=0 否则 若x>0 y=1 若x=0 y=0 输出y 若x>0 y=1 输出y
高 低 c>(a+b) (a>b)==c a==(b<c) a=(b>c)
C语言40
• 关系表达式 用关系运算符将两个表达式连接起来的式 子,称关系表达式 • 下面是合法的关系表达式 a>b>c,a+b>b+c,(a=3)>(b=5),(a>b)>(b<c) • 关系表达式的值是一个逻辑值 • 逻辑判断的结果: • 以“0”代表“假” • 以“1”代表“真”
C语言40
条件运算符
C语言40
• 条件运算符要求3个操作对象(右结合) • 一般格式: 表达式1? 表达式2:表达式3
真(非0) 表达式1 假(0)
取表达式2 的值
取表达式3 的值
• 说明: 1. 条件运算符的执行顺序 如:max=(a>b) ? a : b
2. 条件运算符的优先级,高于赋值运算符 如: max=a>b ? a : b 3. 结合方向为“自右至左” 如:a=1,b=2,c=3,d=4 a<b ? a : c>d ? c : d 右结合: a<b ? a : (c>d ? c : d) 结果:1 左结合: (a<b ? a : c)>d ? c : d 结果:4 4. 不能完全取代if语句,但可灵活应用 if(a>b)printf(“%d”,a); printf(“%d”,a>b?a:b) else printf(“%d”,b);
if 语句

C语言40
if语句也称条件语句,用于实现程序分支 结构,根据判断条件是否满足决定执行给 出的两种操作之一。 • if语句的三种形式 1. if(表达式)语句 例如: if(x>y) printf(“%d”,x); if(x>y&&x<10)printf(“%d”,x); if(x) printf(“%d”,x); 等效于 if(x!=0)~
C语言40
• 程序三 main( ) {int x,y; scanf("%d",&x); y=-1; if(x!=0) if(x>0 ) y=1; else y=0; printf("x=%d,y=%d\n",x,y);}
• 程序四 main( ) {int x,y; scanf("%d",&x); y=0; if(x>=0) if(x>0) y=1; else y=-1; printf("x=%d,y=%d\n",x,y);}
C语言40
假0 表达式 真非0 图a 语句
真 表达式 图b 语句1

语句2
C语言40
2. if(表达式) 语句1 else 语句2 例如: if(x>y)printf(“%d”,x); else printf(“%d”,y); 3. if(表达式1) 语句1 else if(表达式2) 语句2 else if(表达式3) 语句3 …… else if(表达式m) 语句m else 语句n
C语言40
• 一般形式: switch(表达式) {case 常量表达式1:语句1 case 常量表达式2:语句2 … case 常量表达式n:语句n default :语句n+1 }
C语言40
• 例如,按照考试成绩的等级打印出百分制分数段 main( ) {char grade; scanf(“%c”,&grade); 运行时输入:A switch(grade) 结果:85~100 {case ’A’:printf(“85~100\n”); 70~84 case ’B’:printf(“70~84\n”); 60~69 case ’C’:printf(“60~69\n”); <60 case ’D’:printf(“<60\n”); error default : printf(“error\n”);}}
C语言40
表达式1 真
假 假 假
图c
表句2
语句3
语句4
语句5
C语言40
• 例如 if(number>500) cost=0.15; elseif(number>300) cost=0.10; elseif(number>100) cost=0.075; elseif(number>50) cost=0.05; else cost=0; • 说明 1. 表达式 2. 分号; 3. { }
C语言40
• break不可少 main( ) {char grade; scanf(“%c”,&grade); switch(grade) {case ’A’:printf(“85~100\n”);break; case ’B’:printf(“70~84\n”); break; case ’C’:printf(“60~69\n”); break; case ’D’:printf(“<60\n”); break; default : printf(“error\n”);}}
例:设 a=3 ,b=4,c=5 求表达式的值 ‘c’&&’d’ !(a=3)&&(b=4)||b-a-1 a-3||b+c&&b-c a<=c||a>c 机内逻辑运算执行原则 a&&b&&c a||b||c
C语言40
• 讨论: 设a=1,b=2,c=3,d=4,m=n=1 问:m=?n=? (m=a>b)&&(n=c>d) • 逻辑表达式表达复杂条件 判别是否闰年 year%4==0&&year%100!=0||year%400==0
C语言40
• 说明 1. 每个常量表达式的值必须互不相同 2. 用break语句进行分割 3. case和default出现的次序不影响运行结果 • 程序举例 例5.5判断某一年是否闰年
真 y被4整除

假 l=0
真 y被100整除
真 y被400 假 l=1 l=0 真 输出“闰年” l=1 l=1
C语言40
switch语句 switch语句
C语言40
• switch语句是多分支选择语句,又称开关语 句,if语句只有两个分支可供选择,而实际 问题中常常需要用到多分支的选择 • 如,成绩分类、人口统计分类、工资统计 分类、银行存款分类… • 当然这些都可以用嵌套的if语句来处理,但 分支较多可读性下降
关系运算符是逻辑运算中比较简单的一种
关系运算
就是
比较运算
C语言40
• • 1. 2. 3. 4. 5. 6.
如:设a=5
a>3, a==2, a<1+3 真 假 假 关系运算符及其优先次序 < <= 优先级相同(高) > >= == != 优先级相同(低)
C语言40
• 优先次序: 算术运算符 关系运算符 赋值运算符 例: c>a+b 等效于 a>b==c 等效于 a==b<c 等效于 a=b>c 等效于
C语言40
5. 表达式1的类型可以与表达式2 或表达式3的类型不同 例5.4 将大写字母转换成小写字母 main( ) {char ch; scanf("%c",&ch); ch=(ch>='A'&&ch<='Z')?(ch+32):ch; printf("%c",ch); } 运行结果: A 输出结果: a
n n n
C语言40
运行时输入:3,7,1 输出结果 :1.00,3.00,7.00 • if语句语句的嵌套 在一个if语句中又包含一个或多个if语句称 if语句的嵌套 • 一般形式如下:
C语言40
• if( ) if( ) 语句1 else 语句2 else if( ) 语句3 else 语句4
C语言40
逻辑表达式
C语言40
• 逻辑表达式的值是一个逻辑量“真”或 “假” • C规定,逻辑运算的结果: 以数值1代表“真” 以数值0代表“假” • 逻辑运算时判断一个量是“真”是“假”: 以0代表“假” 以非0代表“真” • 逻辑运算符两侧的运算对象可以是任何类 型的数据
相关文档
最新文档