(谭浩强第四版)C语言教案 第7 周
C语言程序设计第四版_谭浩强7章
➢函数的功能
return z; }
函数体
函数首部,不是语 句,行尾无分号
精选课件ppt
函数的返回值,类 型与首部定义一致14
函数的定义
关于函数类型的说明
无返回值的函数类型为void; 有返回值的函数,其类型根据返回值 类型决定;省略类型时默认为int(建议 不要省略)
精选课件ppt
15
函数的调用
int main( )
{ int max(int a[ ],int n);
int x[6],i;
for(i=0;i<=5;i++)
scanf("%d",&x[i]);
printf("max=%d",max(x,6));
return 0;
}
实参为数组名
精选课件ppt
int max(int a[ ],int n) { int m,i; m=a[0]; for (i=1;i<n;i++)
float fac; fac=1; for(i=1;i<=n;i++)
fac=fac*i; return fac;
printf("c="); scanf("%d",&c);
}
sum=factorial(a)+factorial(b)+factorial(c);
printf("%d!+%d!+%d!=%.0f",a,b,c,sum);
函数1 函数2 函数3
函数1 函数2
精选课件ppt
34
变量作用域——局部变量和全局变量
谭浩强C程序设计第四版
* p7_1_b.cpp
*
* 面向对象的时钟程序 *
******************************/
程5
序6
设 计
7 8 9
教 10
程 11
#include <iostream> using namespace std; struct Clock {
int H,M,S; }; Clock MyClock; void SetTime(int H,int M,int S)
程
在面向对象的程序设计中,程序模块是由类构成的。类
是对逻辑上相关的函数与数据的封装,它是对问题的抽象描
第 述。
7 章
面向对象的程序设计方法就是运用面向对象的观点来对
类 现实世界中的各种问题进行抽象,然后用计算机程序来描述
与 并解决该问题,这种描述和处理是通过类与对象实现的。
对
象
类与对象是C++程序设计中最重要的概念
16在程}序A中,时钟数据用一个结构型的变量存储,对} 时钟数据的存取通过函数实现。由于存
7 章
17储时v钟oi数d S据ho的w是Tim一e个() 全局变量,在任何地方都可见vo,id可S以ho不wT通im过e(函) 数单独存取时钟数据。 18程序{B中,只能通过类提供的函数操作时钟。 {
: 类
C
+
+
语
言 程
【例7-1】 模拟时钟
序
设
分析:不管什么样的时钟, 也不管各种时钟是
计 教
如何运行的, 它都具有时、分、秒3个属性。除了运
程 行、显示时间的基本功能外,还有设置(调整)时间、
设置闹钟等功能。将时钟的这些属性与功能抽象出
C++程序设计(谭浩强完整版)第七章
结构体类型变量的引用 1、不能对结构体变量整体赋值或输出,只能分别对各个成 员引用。 错误 cin>>student1; 必须用成员名引用
cin>>student1.num;
student1.num=100;
可以将一个结构体变量整体赋给另外一个相同类型的结构 体变量。 student2=student1; 2、嵌套的结构体变量必须逐层引用。 student1.birthday.day=25; 3、结构体变量中的成员可以同一般变量一样进行运算。 student1.birthday.day++; student1.score+=60;
int age;
}; struct person class[10]={ “Jone”,17, “Paul”,19, “Mary”,18,
“Adam”,16
};
输出:Adam 输出:d
A) cout<<class[3].name<<endl;
输出:a B) cout<<class[3].name[1]<<endl; 输出:M C) cout<<class[2].name[1]<<endl;
char addr[30];
};
分号不能少
定义结构体类型变量的方法 一、先定义结构体类型再定义变量名
struct student { int num; 结构体类型只是一种数据 char name[20]; 类型,不占内存空间,只 char sex; 有定义结构体类型变量时 int age; 才开辟内存空间。 float score; char addr[30]; }; struct student student1, student2;
c语言程序设计第7章(谭浩强)PPT版本
如 int a[5]; static int a[5]={6,2,3}; int a[]={1,2,3,4,5,6}; 等价于: a[0]=6; a[1]=2;a[2]=3; a[3]=0; a[4]=0; 等价于:a[0]=0; a[1]=0; a[2]=0; a[3]=0; a[4]=0; 如 编译系统根据初值个数确定数组维数 int a[3]={6,2,3,5,1}; ()
例
38 49 49 38 65 76 97 13 97 76 97 27 13 30 97 27 97 30 初 始 关 键 字 n=8
38 49 65 13 76 27 76 13 30 76 27 76 30 97 第 一 趟
38 49 13 65 27 65 13 30 65 27 65 30
程序举例
#include <stdio.h> #define SIZE 10 例 读10个整数存入数组,找出其中最大值和最小值 main() { int x[SIZE],i,max,min; printf("Enter 10 integers:\n"); for(i=0;i<SIZE;i++) 步骤: { printf("%d:",i+1); 1. 输入:for循环输入10个整数 scanf("%d",&x[i]); 2. 处理: } (a) 先令max=min=x[0] max=min=x[0]; (b) 依次用x[i]和max,min比较(循环) for(i=1;i<SIZE;i++) 若max<x[i],令max=x[i]{ if(max<x[i]) max=x[i]; 若min>x[i],令min=x[i] if(min>x[i]) min=x[i]; 3. 输出:max和min } printf("Maximum value is %d\n",max); printf("Minimum value is %d\n",min); }
《C语言程序设计》教案(清华谭浩强)
《C语言程序设计》教案(清华谭浩强)第一章:C语言概述1.1 课程介绍介绍C语言的历史和发展解释C语言的特点和应用范围强调学习C语言的重要性和目的1.2 C语言的基本概念解释编程语言和编译器的概念介绍C语言的基本数据类型和变量讲解C语言的语法结构和程序结构1.3 C语言的编译过程解释编译器的角色和功能介绍编译过程中的预处理、编译、汇编和步骤强调编译过程中产生的文件和它们的作用第二章:基本数据类型和运算符2.1 基本数据类型介绍整型、浮点型、字符型和布尔型的概念和用法解释不同数据类型的存储方式和大小强调数据类型的选择和使用场景2.2 变量和常量解释变量的概念和作用介绍变量的声明和初始化方法讲解常量的概念和用法2.3 运算符介绍算术运算符、关系运算符和逻辑运算符的概念和用法解释赋值运算符和条件运算符的作用强调不同运算符的优先级和使用规则第三章:控制语句3.1 条件语句介绍if语句的语法和用法讲解switch语句的概念和用法强调条件语句的选择和嵌套使用3.2 循环语句介绍for循环、while循环和do-while循环的概念和用法解释循环控制语句如break和continue的作用强调循环条件的设置和循环次数的控制3.3 跳转语句介绍goto语句的概念和用法讲解label标签的作用和跳转规则强调跳转语句的使用场景和可能导致的问题第四章:函数和指针4.1 函数的基本概念介绍函数的定义和声明讲解函数的参数传递和返回值强调函数的命名规则和命名规范4.2 指针的概念和用法解释指针的概念和作用介绍指针的声明和初始化方法讲解指针的赋值和指针运算4.3 指针和数组介绍数组的概念和用法解释指针和数组的关系强调指针在数组操作中的应用第五章:结构体和文件操作5.1 结构体的概念和用法介绍结构体的定义和声明讲解结构体的成员访问和内存布局强调结构体在数据组织中的应用5.2 文件操作的基本概念解释文件的概念和文件操作的重要性介绍文件打开、读写、关闭等操作的方法强调文件操作中的错误处理和文件指针的管理第六章:动态内存分配6.1 动态内存分配的概念介绍动态内存分配的原因和必要性解释malloc、calloc和realloc函数的作用和用法强调动态内存分配的注意事项和错误处理6.2 链表的概念和用法介绍链表的定义和结构讲解链表的创建、插入、删除和遍历操作强调链表的优势和应用场景6.3 动态内存分配的应用实例通过实例演示动态内存分配在实际编程中的应用讲解内存泄漏和内存溢出的概念强调编写高效和安全的程序的重要性第七章:字符串处理7.1 字符串的基本概念介绍字符串的定义和表示方法解释字符串的长度和字符串的结束标志强调字符串与数组的区别和联系7.2 字符串的常用函数介绍字符串的输入输出函数如printf和scanf 讲解字符串的拷贝、连接、比较等操作函数强调字符串处理函数的使用和注意事项7.3 字符串处理的应用实例通过实例演示字符串处理在实际编程中的应用讲解字符串排序、查找和替换等操作强调字符串处理在文本分析和数据处理中的应用第八章:标准库函数8.1 标准输入输出库函数介绍标准输入输出库stdio.h中的常用函数讲解文件读写、数据转换等函数的用法和功能强调标准库函数的使用场景和注意事项8.2 字符串处理库函数介绍字符串处理库string.h中的常用函数讲解字符串比较、查找和替换等函数的用法和功能强调字符串处理库函数的使用和与其他库函数的配合8.3 数学计算库函数介绍数学计算库math.h中的常用函数讲解数学运算、三角函数和指数函数等函数的用法和功能强调数学计算库函数在数学计算和科学计算中的应用第九章:并发编程和同步机制9.1 并发编程的基本概念介绍并发编程的定义和目的解释进程和线程的概念和关系强调并发编程的优势和挑战9.2 并发编程的同步机制介绍互斥锁、条件变量和信号量等同步机制的原理和用法讲解同步机制在多线程编程中的应用和注意事项强调同步机制在避免竞态条件和数据一致性中的重要性9.3 并发编程的应用实例通过实例演示并发编程在实际应用中的优势和挑战讲解多线程的创建、同步和通信等操作强调并发编程在多任务处理和性能优化中的应用第十章:C语言编程实践10.1 编程实践的重要性强调编程实践在学习和掌握C语言中的重要性解释编程实践对于提高编程能力和解决问题的作用强调编程实践中的代码质量和编程规范10.2 编程实践的项目和案例介绍常见的编程实践项目和案例讲解实际编程中的问题解决方法和技巧强调编程实践中的调试和测试的重要性10.3 编程实践的资源和工具介绍编程实践中的常用工具和环境讲解集成开发环境(IDE)的使用和代码管理强调编程实践中的团队合作和代码分享的重要性重点和难点解析重点环节1:C语言的基本概念和特点需要重点关注C语言的历史和发展,以及其特点和应用范围。
C语言程序设计_课件_第七章(适于清华谭浩强版)
注意:
(1) return(表达式); 和return 表达式;都 是正确的。 (2) 带返回值的函数只能返回一个值。 (3) 在函数定义时,允许使用多个return语句, 但是应尽量在末尾使用一个return语句。 (4) return语句中的表达式与函数的返回值类 型不匹配时,以函数定义时的返回类型为准。
问题的提出 函数基础 函数的定义 函数说明 函数调用 参数传递 程序举例 递归调用 变量的存储类别
7.1 问题的提出
例6.20它可以解决的问题有: ①输入若干个学生的姓名、某课程的期中 和期末成绩,并计算每个学生的总评成绩; ②计算总评成绩的分数段情况; ③输出所有学生的姓名、期中、期末和总 评成绩; ④查询某个学生的总评成绩。
函数调用时需要传递数据。调用函数要将 实参的值传送给被调用函数的形参。 若函数定义首部是 double power(double x,int n) /*函数定义 */ 调 用 形 式 是 可 以 是 power(y,m) , 也 可 以 是 power(3.0,5)。 其中,x和n是形式参数,y和m是实际参数,3.0 和可以是一个变量 名,因为变量名也构成一个表达式,形式参数只 能是变量名。当实际参数是变量名时,它与形参 的名称既可以相同,也可以不同,只是要注意, 在函数定义内部应该使用形参的名称。 (2) 实际参数与形式参数的参数个数、数据类型 和顺序都应该一致,如果数据类型不一致,系统 将按照自动转换规则进行转换。
7.3 函数的定义
7.3.1 函数的定义形式 在C语言中函数定义的形式有两种。
第一种:
函数返回值的数据类型说明 函数名称(带有类型说明的参数表)
{
函数内部数据说明; 语句;
}
第二种:
第七章C语言谭浩强答案
7.1用筛法求100之内的素数。
解:所谓“筛法”指的是“Eratosthenes筛法”。
Eratosthenes是古希腊的著名数学家。
他采用的方法是:在一张纸上写下1~1000之间的全部整数,然后逐个判断它们是否素数,找出一个非素数就把它挖掉,最后剩下的就是素数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 2728 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 …具体做法如下:先将1挖掉(因为1不是素数)。
用2去除它后面的各个数,把能被2整除的数(如4,6,8…)挖掉,即把2的倍数挖掉。
用3去除它后面各数,把3的倍数挖掉。
分别用4,5…各数作为除数去除这些数以后的各数。
这个过程一直进行到在除数后面的数已全被挖掉为止。
例如在上表中1~50范围内的素数,要一直进行到除数为47为止。
事实上,这一过程可以简化。
如果需要找1~n数)即可。
例如对1~50,只需进行到将7上面的算法可表示为:挖去1;用刚才被挖去的数的下一个数p去除p后面的各数,把p的倍数挖掉;检查p n=1000,则检查p<31否),如果是,则返回(2)继续执行,否则就结束;纸上剩下的就是素数。
解题的基本思路有了,但要变成计算机的操作,还要作进一步的分析。
如怎样判断一个数是否已被“挖掉”,怎样找出某一个数p的倍数,怎样打印出未被挖掉的数。
可以设一个数组a,a[1]到a[100]的值分别是1,2,3,…100。
然后用上述方法将非素数“挖去”。
如果一个数被认为是非素数,就将它的值变为零,最后将不为零的数组元素输出,就是所求的素数表。
程序如下:#include <math.h>main ( ){int i,j,n,a[101];for (i=1;i<=100;i++)a[i] =i;for (i=2;i<sqrt(100);i++)for (j=i+1;j<=100;j++){if (a[i]!=0 && a[j]!=0)if (a[j]%a[i]==0)a[j]=0; } /*非素数,赋值为0,“挖掉”*/printf(“\n”);for (i=2,n=0;i<=100;i++){ if (a[i]!=0){printf(“%5d”,a[i]);n++; }if (n==10) /*此处if 语句的作用是在输出10个数后换行*/{ printf (“\n”);n=0; }}}运行结果:2 3 5 7 11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 83 89 977.2用选择法对10个整数排序(从小到大)。
C语言程序设计第四版第七章答案-谭浩强
C语言程序设计第四版第七章答案-谭浩强第七章函数7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。
maxyueshu(m,n)int m,n;{ int i=1,t;for(;i<=m&&i<=n;i++){if(m%i==0&&n%i==0)t=i;}return(t);}minbeishu(m,n)int m,n;{int j;if(m>=n) j=m;else j=n;for(;!(j%m==0&&j%n==0);j++);return j;}main()整数,输出是否是素数的消息。
psushu(m)int m;{int i=2,t;for(;i<=m;i++)if(m%i==0&&i<m) break;if(m-i==0) t=1;else t=0;return m;}main(){int a,s;printf("enter sushu is \n");scanf("%d",&a);s=psushu(a);if(s==1) printf("a is sushu\n");else printf("s is not sushu\n");}7.4写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。
int zhuangzhi(b)int b[3][3];{int i,j,t;for(i=0;i<3;i++)for(j=0;j>=i&&j<3-i;j++){t=b[i][j];b[i][j]=b[j][i];b[j][i]=t;}}main(){int a[3][3];int i,j;for(i=0;i<3;i++)for(j=0;j<3;j++)scanf("%d",&a[i][j]);for(i=0;i<3;i++){for(j=0;j<3;j++)printf(" %d",a[i][j]);printf("\n");}zhuangzhi(a);for(i=0;i<3;i++){for(j=0;j<3;j++)printf(" %d",a[i][j]);printf("\n");}}7.5写一函数,使输入的一个字符串按反序存放,在主函数中输入输出字符串。
(完整版)《C语言程序设计》-谭浩强(第四版)教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
第29-30 课时
《C语言程序设计》教案
第31-32 课时
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
第37-38 课时
《C语言程序设计》教案
第39-40 课时
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案。
(完整word版)《C语言程序设计》-谭浩强(第四版)教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
第29-30 课时
《C语言程序设计》教案
第31-32 课时
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
第37-38 课时
《C语言程序设计》教案
第39-40 课时
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案
《C语言程序设计》教案。
c语言程序设计谭浩强第07章
7.3.3 #ifndef 与 #endif命令
格式一
#ifndef 标识符
程序段 #endif
功能
如果“标识符”没有用“#define 标识符”定义过,则编译“程序 段” ,否则不编译。
例 输入一行字母字符,根据需要设置条件编译,使之能将字
母全改为大写输出或全改为小写输出。
#define LETTER 1 main( ) { int i=0; char c , str[20] =“CLanguage” ; while( (c=str[i]) !=‘\0’)
}
源程序file1.c
int max(x,y)
int x,y;
{ int z;
if (x>y) z = x;
else
z = y;
return (z) ;
}
§ 7.3条件编译
根据给定的条件,来决定源程序的编译范围 。即只对源程序中必要的部分进行编译,而对 其余部分不进行编译,不产生目标代码。
7.3.1 #if #else #endif命令
}
运行结果:MAX=9
§7.2 文件包含
格式
#include <filename> 或 #include "filename"
功能
将一个指定的文件嵌入包含到当前的源文件中。系统对嵌入后的
源文件进行整体编译处理。
在指定的标准目录下查找
如 #include <stdio.h> #include "math.h "
首先在当前目录下查找
使用文件包含语句,需注意的问题
1.一条文件包含命令只能包含一个指定的文件。 2.文件包含可以嵌套。如:
《C语言程序设计》_谭浩强版教案
C 语言程序设计》教案职 称: 助教 单 位: 湖南理工职业技术学院学院(教研室) : 风能工程学院 工业机器人专业授课教师: 周常欣教 学 重 点 和 难 点一、程序设计和 C 语言 重点:计算机程序、计算机语言、 C 语言编译软件的安装、最简单的 C 语言程序二、算法:程序的灵魂重点:简单的算法举例、算法的特性、用流程图表示算法。
三、顺序结构程序设计重点: C 语言的数据类型、 C 语句的种类、赋值语句、数据的输入输出及输入输出 中最常用的控制格式。
四、选择结构程序设计重点: 关系运算符与逻辑运算符及其组成的具有逻辑值的表达式、 二条分支语句的格 式及基本应用、多分支的选择语句。
五、循环结构程序设计重点: C 构成循环的四种方法,尤其是后三种方法、 break 与 continue 语句的基本作用。
难点: while 语句; do-while 语句; for 语句;循环的嵌套; break 与 continue 语句。
六、数组重点:一维数组、二维数组的定义与引用;字符数组的定义与引用、常用字符串处 理函数及字符处理函数;数组的应用难点:二维数组的定义与引用;字符数组;数组的应用七、函数 重点:函数的定义;函数的参数和函数的值;函数的调用;函数的嵌套调用;函数的 递归调用;数组作为函数参数;变量作用域;量存储类别; 难点:函数定义、函数调用、函数声明等基本基本概念;函数的嵌套调用与递归调 用; 数组作为函数的参数、变量的存储类别与作用域。
八、指针 重点和难点:指针与地址的基本概念、指针与变量的关系;指针与数组;指针与字 符串、指针数组与二级指针;指针的应用九、建立自己的数据类型 重点和难点:定义和使用结构体变量、用指针处理链表、共用体类型十、文件重点:文件的基本知识、 fopen 、 fclose 函数打开与关闭文件、顺序读写数据文件、 随机读写数据文件难点:用二进制方式向文件读写一组数据。
c程序设计 谭浩强 第07章课件
7.2.3 二维数组的初始化
可以用下面的方法对二维数组初始化:
(1) 按行分段赋值。如 int a[3][4]={{1,2,3,4},{5,6,7,8},{9, 10,11,12}}; 这种赋初值方法比较直观,把第1个花括弧内的数据给 第1行的元素,第2个花括弧内的数据赋给第2行的元 素……即按行赋初值。
//输出源数组,并转换成目标数组 printf("source array:\n"); for (i=0;i<2;i++) {
for (j=0;j<3;j++) {
printf("%5d",arrSource[i][j]); arrDest[j][i]=arrSource[i][j]; } printf("\n"); }
在实际问题中有很多量是二维的或多维的, 因此C语言 允许构造多维数组。多维数组元素有多个下标, 以标识 它在数组中的位置。 本小节只介绍二维数组,多维数组 可由二维数组类推而得到。
7.2.1 二维数组的定义 一般形式:
类型说明符 数组名[常量表达式][常量表达式]; 例如:int a[3][4],b[5][10]; 定义a为3×4(3行4列)的数组,b为5×10(5行10列)的数
int i; int f[20]={1,1}; for(i=2;i<20;i++)
f[i]=f[i-2]+f[i-1]; for(i=0;i<20;i++) {
if(i%5==0) printf("\n"); printf(“%10d",f[i]); } }
运行结果如下:
1
C程序设计(第四版)谭浩强_教案
2014-5-28
郑州华信学院 欧群雍
3
第1章 程序设计和C语言 1.2 什么是计算机语言
计算机语言:计算机和人都识别的语言
计算机语言的发展:
机器语言汇编语言(低级语言)高级语言(面向过程的语言、 算法语言)第四代语言(面向问题的语言)
计算机语言的应用:
高级语言 源程序
编译 程序
机器语言 目标程序
#include <stdio.h> int max(int x, int y) { int z; if (x>y) z=x; else z=y; return (z); } main( ) { int a, b,c; scanf("%d,%d",&a,&b); c=max(a,b); printf("max= %d\n",c); }
2014-5-28
郑州华信学院 欧群雍
14
第2章 算法——程序的灵魂
• 程序=数据结构+算法+程序设计方法+语言工具和环境
• 数据结构:对数据的描述,即在程序中指定数 据的类型和数据的组织形式。 • 算法:对操作的描述,即操作步骤。 2.1 什么是算法 • 为解决一个问题而采取的方法和步骤。 • 计算机算法分为数值运算算法、非数值运算算 法
2014-5-28
郑州华信学院 欧群雍
19
2.2 简单算法举例
例2. 4 对于一个大于或等于3 的正整数,判断是否为素数
算法如下: S1:输入n的值 S2:i=2(i 作为除数) S3:n被i除,得余数r S4:如果r=0,表示n能被 i 整除,打印n―不是素数”,算法结 束;否则执行S5 S5:i+1 i S6: 若 i<=n 1返回S3;否则打印n―是素数”,然后结束。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
三、讲授新课:
3.1关于if语句的说明:
(1)if后面圆括号中的表达式一般是关系表达式或逻辑表达式,用于描述选择结构的条件,但也可以是任意的数值类型表达式(包括整型、实型、字符型、指针型数据表达式)。
例如:if (2) printf ("OK!");
是合法的,因为表达式的值为2,非0,按“真”处理,执行结果输出“OK!”
(4)条件运算符的结合方向为“自右至左”。例如:
x>0?1:x<0?-1:0等效于x>0?1:(x<0?-1:0)
(5)表达式1、表达式2和表达式3的类型可以不同,此时条件表达式的值的类型为它们中较高的类型。
3.4switch语句
格式为:
switch (表达式)
{case常量表达式1:语句1
case常量表达式2:语句2
min=(a<b)?a:b;
执行结果就是将a和b二者中较小的赋给min。
(3)条件表达式的优先级别仅高于赋值运算符,而低于前面介绍过的所有运算符。因此,
min=(a<b)?a:b;
可直接写成:
min=a<b?a:b;
如果有a>b?a:b+1等效于a>b?a:(b+1),而不等效于(a>b?a:b)+1
}
最后一个分支(default)可以不加break语句。如果grade的值为´B´,则只输出"70~84"。
(5)每个case的后面既可以是一个语句,也可以是多个语句,当是多个语句的时候,也不需要用花括号括起来。
(2)第二种、第三种格式的if语句中,在每个else前面有一个分号,整个语句结束处也有一个分号。这是由于分号是C语句中不可缺少的部分,这个分号是if语句中的内嵌语句所需要的。
(3)在if和else后面可以只含有一个内嵌的操作语句,也可以含有多个操作语句,此时应用大括号“{ }”将几个语句括起来,构成一个复合语句,注意:复合语句的“{”和“}”之后不能加分号。
3.2 if语句的嵌套
在if语句中有包含一个或多个if语句称为if语句的嵌套。要处理多重分支选择结构问题,除了用if-else-if语句外,还可以利用if语句的嵌套来实现。
说明:(1)if和else的配对规则为:else总是与它上面的最近的未配对的if配对。
(2)if与else的个数最好相同,从内层到外层一一对应,以避免出错。
掌握选择结构的嵌套,条件运算符,用switch语句实现的多分支选择结构
教学重点及难点:
重点:用if语句实现的选择结构,条件运算符,用switch语句实现的多分支选择结构
难点:计算逻辑表达式的值,表示复杂条件,“=”和“= =”运算符的区别
教学方法及手段:
举例讲解、多媒体讲解、模型讲解、实物讲解、课堂练习结合
(3)在嵌套内的if语句既可以是if语句形式,也可以是if-else语句形式,但最好使内嵌if语句也包含else部分。如果if与else的个数不同,可以用花括号来确定配对关系。
例如:
if ( )
{if ( )语定了内嵌if语句的使用范围,因此else与第一个if配对。
(2)switch语句中所有case后面的常量表达式的值都必须互不相同。
(3)switch语句中的case和default的出现次序是任意的。
(4)由于switch语句中的“case常量表达式”只是起语句标号的作用,而不起条件判断作用,即“只是开始执行处的入口标号”。可以用一个break语句来终止switch。将上面的switch结构改写如下:
┇
case常量表达式n:语句n
default:语句n+1
}
其中default和语句n+1可以同时省略。
教学过程与教学内容:
说明:(1)switch的表达式通常是一个整型或字符型变量,也允许是枚举型变量,其结果为相应的整数、字符或枚举常量。case后的常量表达式必须是与表达式对应一致的整数、字符或枚举常量。
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");
例如:(x= =y)?´T´:´F´
(a>b)?printf ("%d",a):printf ("%d",b)
等均为合法的条件表达式。
(2)条件表达式的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值。若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。
教学过程与教学内容:
一、复习与回顾
上节课的主要内容如下:下面好好回顾下
1.#include:预编译命令。
2.h为C语言库函数的扩展名。
3.标准I/O库函数:
字符输入函数getchar()
格式化输入函数scanf()
字符输出函数putchar()
格式化输出函数printf()
二、引入新的课程
选择结构,或称分支结构,是指对所给定的条件进行判断,然后决定选择执行不同的操作。本章主要介绍如何用C语言实现选择结构。C语言的选择语句有两类,一类是if语句,另一类是switch语句,本章将分别进行介绍。在介绍选择结构程序设计的同时,还要介绍关系运算符和关系表达式,逻辑运算符和逻辑表达式等内容。
授课时间
第7周第1、2次课
授课时数
4节(含两节实训)
授课方式
(请打√)
理论课(√)讨论课()实验课()习题课(√)其他()
授课题目(教学章、节或主题):
第四章选择结构程序设计(二)
教学目的、要求(分掌握、熟悉、了解三个层次):
掌握选择序结构程序的特点;
掌握关系运算和逻辑运算,用if语句实现的选择结构;
3.3条件运算符
条件运算符由两个符号“?”和“:”组成,要求有3个操作对象,称三目(元)运算符,它是C语言中唯一的三目运算符。条件表达式的格式为:表达式1?表达式2:表达式3
教学过程与教学内容:
min=(a<b)?a:b;
说明:(1)通常情况下,表达式1是关系表达式或逻辑表达式,用于描述条件表达式中的条件,表达式2和表达式3可以是常量、变量或表达式。