C语言第四次课讲义
C语言第四次课
字符型 实 型
单精度型 双精度型
char
float double
255个字符
6~7位有效数字 15~16位有效数字
%c
%f %lf
•实型表示数的范围非常大,但不能准确表示一个数。 •实型变量可以用来存储整数,也可以存储小数,但因为整数一般都要求准确地表示, 所以一般用实型变量存储小数。 •字符型可以认为是一种更短小的整型。因为字符在计算机中用ASCII码表示,而 ASCII码值是0~255之间的一个数。
• 因为字符在计算面中被存储成大于等于0的 编码,所以字符型也可以被看作是一种更 短小的整型,字符也可以参与算术运算。
int n; char ch; printf("%d",'0'); printf("%d",'A'); printf("%d",'a'); printf("%c%c%c",'A'+1, 'A'+2, 'A'+3); printf("%d",'A'+25); n='a'-'A'; printf("%d",n); scanf("%c",&ch); printf("%c",ch+n);
第2步 第1步 第3步
a
b
c
• 用户输入三角形的三边长,程序判断并输出 该三角形是何种三角形,(等边/等腰/直角/等 腰直角/一般三角形/不能构成三角形)
等腰
等腰直角
直角
• missing „;‟ before ……. „ xxxx‟ • „xxxx‟ undeclared in……
《C语言程序设计课件》第四章-循环语句
{ sum+=n; scanf("%d",&n); }
printf("The sum is :%d\n",sum);
return 0; }
从任意 n 个实数中选出最大数 和最小数
从任意 n 个实数中选出最大数和最小数
#include <stdio.h> int main( ) {
/*程序4-1*/ #include <stdio.h> int main() {
int i,sum=0; i=1; while(i<=100) {
sum += i; i++; } printf("sum=%d\n",sum); return 0; }
【例4-2】输入一行字符以回车键结束,分别 统计出其中英文字母、空格、数字和其它字符 的个数。
#include <stdio.h> int main( ) {
int i,n;
printf("This program prints a table of squares.\n"); printf("Enter number of entries in table:");
scanf("%d",&n); i=1; while (i<=n)
【例】求整数1~100的累加和,使用for语句实 现。
#include <stdio.h> int main() {
int i,sum=0; for(i=1;i<=100;i++)
C语言_04次课-2-2
§5.1 算术运算符及算术表达式 算术表达式•用算术运算符将数据对象连接起来的式子,称为算术表达式。
表达式的运算按照运算符的结合性和优先级来进行。
•C规定了运算符的结合方向,即结合性。
算术运算符的结合性是从左往右算。
例如表达式2+3+4,先算2+3•C语言规定负值运算符优先级高于乘、除、模运算符,乘、除、模运算符优先级高于加、减运算符,当表达式中优先级相同时,按照运算符的结合性。
例如:3+4*3/-2,计算次序:-、*、/、+。
如果需要先计算优先级低的可以使用小括号“()”,小括号的优先级最高。
( ) 可嵌套,不可用{}和[].§5.1 算术运算符及算术表达式 例题•程序L5_1.C功能:计算a+3*-2/(int)(a+b)-12的结果,其中a=1.7,b=2.4。
#include <stdio.h>void main(){float a=1.7,b=2.4,s;s= a+3*-2/(int)(a+b)-12;printf("result is %f\n",s);}§5.2关系运算符及关系表达式关系运算符< :小于运算符。
如a>4。
<= :小于等于运算符。
如3<=5。
> :大于运算符。
如x>y。
>= :大于等于运算符。
如x>=0。
== :等于运算符。
如a= =b。
!= :不等于运算符。
如y!=1。
两个数据在进行值的比较,其结果不是“真”就是“假”。
在C语言中,任何非0值为“真”,0值为“假”。
关系运算的结果仅产生两个值:1表示“真”,0表示“假”。
§5.2关系运算符及关系表达式关系运算符结合性与优先级关系运算符的结合性为“自左至右”。
例如5>4>3,计算时先算5>4,条件成立结果为1,再与3比较,即1>3,条件不成立,所以最终结果为0。
关系运算符中<、<=、>、>=的优先级相等,==、!=优先级相等,且前者高于后者。
C语言第四次课讲义
第四次课程安排第五章函数本章考点教学内容一、函数的定义1.函数的定义功能单一且独立的程序模块,用于完成特定的任务并根据需要返回一个确定的值。
例如:新视野的二级C语言培训,大家可以把它想象为一个函数,它完成的一个特定任务就是通过二级C语言考试,返回一个证书。
函数是C语言程序的基本单位,就如同人体的基本单位是细胞一样。
在C语言程序中有且仅有一个main函数。
2.函数定义的一般形式:返回值类型函数名(类型1 形参名1[ , 类型2 形参名2]…){说明部分语句部分}(1)返回值类型,包括:整型(int),实型(float、double),字符型(char)、空型(void)(2)函数名,和数组名一样必须符合标识符的命名规则,表示一个函数的名字(3)小括号里面的内容叫做形参,形参可以有一个或多个,当有多个形参中间必须用逗号分隔,并且不能省略形参的类型名。
同时小括号里面可以没有任何的形参。
(4)大括号里面的部分叫做函数体(5)函数不能嵌套定义,一个函数里面不能有其它函数的定义(6)函数举例:1)无形参的函数:2) 有一个形参的函数3) 有多个形参的函数:4) 形参类型出错:多个形参不能共用一个类型,习题中形参a,b,c 共用了一个整型int ,在C 语言中不允许的,必须给每个形参指定合法的类型名double f1(int n,double x ,char ch) {return 1.0 ; }一个形参double f(int n) {return 0.0; }int f3(int a,b,c) { }int f3(int a,double b,char c) { }3. 函数的返回值(1) 返回int 型的函数:函数必须返回一个整型表达式(2) 返回double 型的函数:函数必须返回一个实型表达式(3) 返回char 类型的函数:函数必须返回一个字符型表达式(4) 返回空值的函数:函数不会返回任何值int fun() {return 整型表达式 }int fun(int a,int b) {return a+b; }double fun( ) {return 实型表达式 }double fun(double x) {return 1.0/x; }char fun( ) {return 字符型表达式 }char fun(char ch) {if(ch>=’a ’&&ch<=’z ’) {return ch; } else {return ch+32; } }void fun ( ) {无return 或 return; }void fun(int a,int b) {if(a>b) {printf(“%d ”,a); } else {printf(“%d ”,b); } }4.库函数:(1) include命令行,一般格式为:#include <头文件名.h> 或 #include "头文件名.h"(2)注意事项1)include命令行必须以“#”符号开头。
c语言第四次讨论课
返回
6、设计程序:求百鸡问题。公鸡5元,母鸡3元,三只小鸡1 元,问100元买100只鸡,公鸡,母鸡,小鸡的只数 以”%d,%d,%d\n”格式输出 • #include<stdio.h> • int main() • { • int x,y,z; /*定义整形变量 x y z */ • printf("百鸡问题解:\n"); • for(x=0;x<=20;x++) • { • for(y=0;y<=33;y++) • {z=100-x-y; • if(z%3==0&&5*x+3*y+z/3==100) /*如果z除以3的余 • 等于0且5*x+3*y+z/3等于100 则输出x y z • 否则x++ 再一次进行第二个for循环 直到y<=33*/ • printf("x=%d y=%d z=%d\n",x,y,z); • } } }
返回
5、输入一个职工的月薪salary,计算并输出应交的个人所 得税tax=rate*(salary-850)。
分析:为使用switch语句,必须将salary与rate的关系转换为某 些整数与rate的关系。Rate的变化点减去350后都是500的整数倍, 但会有相邻两个区间的重叠问题。所以令(rate-351)/500,即 salary<=850, 对应0; 850<salary<=1350, 对应1; 1350<salary<=2850, 对应2、3、4; 2850<salary<=5850, 对应5、6、7、8、9、10; 5850<salary, 对应11、12、13……。
C语言第四次课
12
标准格式输出函数(P32)
功 能 用于输入一个字符 用于输入一个字符串 用于输入一个十进制整数(有符号) 用于输入一个十进制整数(无符号) 用于输入一个普通形式的实数 用于输入一个指数形式的实数 输入无符号八进制整数(带前导符0) 输入无符号十六进制整数(带前导符0x)
20
标准格式输入函数(P36)
修饰符 说明 m 指定输入数据的宽度 l 指定long型或double型数据 例: 例:scanf("%4d%2d", long a; &a, &b); double b; 输入 1234567 scanf("%ld,%lf", 则 a=1234 b=56 &a, &b);
运行结果: B O
27
字符数据的输入(P34)
格式:c=getchar( ); 功能:从键盘读入一个字符 返值:若程序正常运行,则c得到字符
28
例 子
#include<stdio.h> void main() { char c; c=getchar(); putchar(c); } 键入:A
9
标准格式输出函数(P31)
格式:printf(格式控制字符串,输出项列表) 功能:按指定的格式向显示器输出数据 说明: 输出项可以是变量、常量和表达式 格式控制串可以是转义字符、格式 编辑符及原样输出的字符串
C语言讲义C4
{ char ch; scanf(“%c”, &ch); ch= (ch>= ‘A’&& ch<= ’Z’)? (ch+32) : ch; printf(“%c”, ch) }
输入 A a
21
4.4 switch 语句
switch语句 问题:为什么引出switch语句? 该语句为开关语句,解决多分支的情况。 格式:switch(表达式) { case (常量表达式1):语句块1; case (常量表达式2):语句块2;
3
4.1.2 逻辑运算符及其运算结果
用逻辑运算符将关系表达式或逻辑量连接起来就是逻辑表达式。
1. 逻辑运算符及其优先次序 C语言提供三种逻辑运算符: && (逻辑与) 、 || (逻辑或) 、! (逻辑非) 注:“&&”和“|| ”是“双目(元)运算符”,它要求有两个运算量 操作数。而“! ”是“单目(元)运算符”,只要求有一个运算 量。 [例]:a&&b+c 、 (a>b)||(x>y) 、!(x<y)
0 0.0 2 0.0 5 d 0.0 8 0.1 0.1 5 s 250 250 s 500 500 s 1000 1 0 0 0 s 2 0 0 0 2 0 0 0 s 3 0 0 0 3 0 0 0 s
(4) case后的“常量表达式”只起到语句标号 的作用,而不进行条件判断,故在执行完某个 case后的语句序列后,将自动转移到下一个case 继续执行。其计算过程为:
23
a. 计算表达式的值; b. 找到与表达式的值相同的case常量表达式,执行该case后边 的语句序列,之后依次往下执行语句块。 表达式
c语言程序设计第4次课
值
, . /
符号
91 92 93 94 95 96 123 125 126
值பைடு நூலகம்
\ "2" ] ^ ` '2' [
符号
48 ~ 57 58 59 60 62 63 64
0 ~ 9 : ; < > ?
正确
97 ~ 122
a ~ z { } ~ DEL (Delete键)
61 = 124 | '2' + '2' = 4
变量和数据类型
第二章
C语言程序设计
回顾
• 程序是为执行一项任务而编写的有序指令集 • 算法是解决问题的具体方法和步骤 • 流程图是算法的图形化表现形式 • C语言的特点 • C程序的编译和运行过程 • 编译器将源程序转换成机器能理解的程序
C语言程序设计
目标
• 理解变量和常量的含义 • 熟悉基本数据类型 - int、char、float 和 double • 使用算术运算符 • 理解类型转换
C语言程序设计
基本数据类型
数据类型
数据
数值 2.175 123 整型
非数值 Africa char
非整型 9/12/2003 int 整型 非整型 floatThe quick brown fox Jackie short intChan double 数值 非数值 long int 999 9002.12 数据属于不同类别 TRUE
C语言程序设计
• 初始化:
字符型3-1 字符型
在线保险单 年龄:_____ : 23 保险总额:98340 :_____ 性别:_____ : 'M' char int/float
谭浩强C语言配套课件C语言第四次课
THANKS
感谢观看
03 贪心算法
理解贪心算法的原理,掌握其实现方法,并通过 案例分析了解贪心算法的应用。
项目实战案例分析
学生信息管理系统
设计并实现一个学生信息管理系统,包括学生信息的录入、查询、修改和删除 等功能。通过该案例分析,掌握数据结构的处理和算法的应用。
文本编辑器
设计并实现一个简单的文本编辑器,能够实现文本的输入、编辑、保存和打开 等功能。通过该案例分析,深入了解数据结构和算法在实际项目中的应用。
03 图
了解图的基本概念,掌握图的表示方法(邻接矩 阵、邻接表),以及图的遍历(深度优先搜索、 广度优先搜索)。
算法实现与应用
01 排序算法
理解各种排序算法(冒泡排序、选择排序、插入 排序、快速排序等)的原理,掌握其实现方法, 并比较其时间复杂找、二分查找等)的 原理,掌握其实现方法,并比较其时间复杂度。
单步执行
逐行执行代码,观察程序的执行过程和变量 的变化。
设置断点
在代码中设置断点,以便在程序执行到该点 时暂停,检查变量的值和执行流程。
检查变量和内存
使用调试工具检查变量的值和内存状态,以 便找出问题所在。
错误处理机制
错误码
在程序中定义错误码, 用于标识不同的错误
类型。
异常处理
使用异常处理机制来 捕获和处理运行时错
谭浩强C语言配套课 件:C语言第四次课
目录
• C语言基础回顾 • 函数进阶 • 数组与指针 • 程序调试与错误处理 • 综合练习与挑战
01 C语言基础回顾
数据类型
整型
包括int,short,long, long long等,用于存储整 数。
浮点型
包括float,double等,用 于存储小数。
c语言第四次课
3 123 789
4 1 2 3 10 11 12
第五节 break语句与continue语句
一、break语句
例:main() { int x=15; while(x>10&&x<50) { if(x/3) { x++;break; } x=x+2; } printf("%d\n",x); }
二、continue语句
(3) 循环体如果只有一个,可以不加花 括号;如果循环体语句超过一个, 则必须用花括号括起来组成复合语 句。 (4)圆括号内的表达式不能缺省。循环 体语句可以只有一个空语句组成, 表示循环体部分不执行任何操作。
0
表达式
非0
三、while语句的执行过程
(1)计算圆括号中表达式的值。若为 非0则执行循环体语句,若为0则跳 出while循环。 (2)执行完循环体语句后重复过程(1)
二、for语句的执行过程
(1)计算表达式1 (2)计算表达式2,若值为非0,转步(3); 若值为0,转步骤(5); (3)执行一次for循环体 (4)计算表达式3,转步骤(2) (5)结束循环,执行for循环之后的语句。 例:求1到100的和 main() { int i,sum; for(i=1;i<=100;i++) sum=sum+i; printf("sum=%d",sum); }
三、关于for循环的几点说明
(1)表达式1是对变量赋初值,表达式2控制循环,表达式3是 循环变量的自增自减,以保证不会陷入死循环。 (2)for语句可以改为等价的while语句。
表达式1; while(表达式2) { 循环体语句 表达式3; } (3)表达式1可以移到for语句之前,表达式1可以缺省,但保 留其后的分号。如: i=1; for(;i<=100;i++) … (4)表达式2可以缺省,但会造成死循环。 (5)表达式3可以移到for循环的尾部,成为循环体一部分,表 达式3可缺省。
c语言第4讲课件
item = flag * 1.0 / denominator denominator = denominator + 2 flag = -flag
3/
#include <stdio.h> int main(void) { int denominator, flag, i, n; double item, sum; printf(“Enter n: "); scanf ("%d", &n); flag=1; denominator =1; sum = 0 ; for ( i = 1; i <= n; i++ ) { item = flag * 1.0/ denominator; /* 计算第i项的值 */ sum = sum + item ; /* 累加第i项的值 */ flag = -flag; /* 准备下一次循环 */ denominator = denominator +2; } printf ( "sum = %f\n", sum); return 0; }
13/
结构化程序设计思想
• 结构化程序设计(Structured Programming)
– 程序设计技术 – C语言是结构化程序设计语言
• 强调程序设计的风格和程序结构的规范化,提 倡清晰的结构,其基本思路是将一个复杂问题 的求解过程划分为若干阶段,每个阶段要处理 的问题都容易被理解和处理。
按自顶向下的方法对问题进行分析、模块化设计和结 构化编码等3个步骤。
12/
源程序-生成阶乘表
#include <stdio.h> double fact(int n); /* 自定义函数的声明 */ int main(void) { int i, n; double result; printf("Enter n:"); scanf("%d", &n); for (i = 0; i <= n ; i++){ result = fact(i); /* 调用自定义函数fact(i)计算i! */ printf("%d!=%.0f\n", i, result); } return 0; }
C语言复习第四课
第四课 ※主要内容(1)、二叉树的定义(2)、二叉树的基本性质(3)、二叉树的两种特殊形态※主要知识点(1)、二叉树的定义①、二叉树属于树的一种的,也是一种非线性结构②、非空的二叉树具有以下两个特点1、有且只有一个根结点2、每一个结点最多有两棵子树,且分别称为该结点的左子树与右子树(即二叉树中个结点的度只有三种情况,即度为0、1、2)(2)、二叉树的基本性质①、在二叉树的第K 层上,最多有)1(21≥-k k 个结点 ②、深度为m 的二叉树最多有12-m 个结点③、在任意一颗二叉树,度为0的结点(即叶子结点)总是比度为2的结点多一个④ 、具有n 个结点的二叉树,其深度至少为:1][log 2+n ,其中][log 2n 表示取整(3)、二叉树的两种特殊形态①、满二叉树1、在满二叉树中,每一层上的结点数都达到了最大值,即每个结点(叶子结点除外)都有两个子结点2、满二叉树的第K 层上,有)1(21≥-k k 个结点3、深度为m 的满二叉树有12-m 个结点②、完全二叉树1、完全二叉树与满二叉树的区别在于树的最后一层,在完全二叉树中,除最后一层外,每一层上的结点数都达到最大值,在最后一层上只缺少右边的若干结点2、完全二叉树的性质a :具有n 个结点的完全二叉树的深度为:1][log 2+n③、由满二叉树和完全二叉树的特点可以看出,满二叉树也是完全二叉树,而完全二叉树一般的不是满二叉树(4)、图形表示:二叉树 满二叉树 完全二叉树 练习题一、选择题(1)、设树的度为4,其中度为1、2、3、4的结点个数分别为4、2、1、1.则此树中的叶子结点数为( )A 、8B 、7C 、6D 、5(2)、在深度为5的满二叉树中,叶子结点的个数为( )A、32B、31C、16D、15 (3)、在深度为7的满二叉树中,度为2的结点个数为()A、64B、63C、32D、31二、填空题(1)、设一颗完全二叉树共有700个结点,则在该二叉树中有个叶子结点(2)、一颗二叉树中共有70个叶子结点与90个度为1的结点,则该二叉树中共有结点个数为(3)、某二叉树中有n个度为2的结点,则该二叉树的叶子节点的个数为(4)、在深度为8的满二叉树中,叶子结点的个数为(5)、某二叉树共有七个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第一层)(6)、某二叉树具有127个结点,则该二叉树的深度至少为时间:2012年10月23号A Hungry AlienWhen an alcoholic man dressed in dirty clothes and stinking of beer first alleged that an alien had landed in an alley behind a restaurant frequented by the affluent, no one listened to him. Photos from the aftermath filled 10 photo albums.In the begining, as he rushed down the center aisle of the pleasantly air-conditioned room, the alcoholic wasn‘t able to successfully agitate anybody. It was as if they were only looking at his appeara nce and not listening to his words. When he did finally find someone agreeable to come outside and see what he said had happened, he was completely alienated to see that the creature was no longer there. Now that he had aggravated so many rich people, he was sure that he would leave the room in agony. His fears were alleviated, however, when the alien broke through a window into the restaurant, somehow knowingly coming to the aide of the alcoholic.When all the people realized that the alien that the alcoholic had alluded to was really there and composed of an aggregate of unknown alloy not affected by normal bullets, they screamed and ran around leaving no chance for anyone to allot a route of escape. They behaved, in the aggregate, as if no one in the world could relieve them of this alien ailment. And they were right. None of the outside help that came could stop the alien from eating everyone in the restaurant.饥饿的外星人当一个穿着脏衣服、满口啤酒味的酗酒男人宣称有外星人在一家富人经常光顾的酒店后面的一个胡同里降落时,没有人听他的话。
c4th
编程序者把else 写在与第一个 if(外层if)同一列 上,希望else与 第一个if对应, 但实际上else 是 与第二个if 配对, 因为它们相距最 近。
可以用花括弧来确定配对关系。
if ( ) { if ( ) 语句1} else {if ( ) 语句2 else 语句3
§ 4.5 程序举例
例 求一个数的绝对值 (abs.txt) 例 求三个数中的最大数 (max3.txt) 例4.5 写程序,判断一年是否为闰年。(Page59) 例 4.6 求一元二次方程ax2+bx+c=0的根。(page 61) 书中程序应修改才完善。( printf(“is not quadratic”) 后应该加 return; 例4.7 运输公司对用户计算运费。(page62)
例如4.4 输入一个字符,判别它是否大写字母,如果是,将 它转换成小写字母;如果不是,不转换。然后输出最后的 字符。 (参见p45 例3.11 从键盘输入一个大写字母,要求用小写 字母输出。)
§ 4.4 switch语句 语句
switch语句时多分支选择语句。它的一般 形式如下: switch (表达式) { case 常量表达式1: 语句1 case 常量表达式2: 语句2
4.1.2 关系表达式 用关系运算符将两个表达式(可以是算术表达式或关系 表达式、逻辑表达式、赋值表达式、字符表达式)连接 起来的式子,称为关系表达式。 例如: a>b, a+b>b+c, (a=3)>(b=5), ‘a’<‘b’ , (a>b)>(b<c)
关系表达式的值是一个逻辑值,即“真”或“假”。 C语言没有逻辑型数据,以1代表“真”,以“0”代表 “假”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四次课程安排第五章函数本章考点教学内容一、函数的定义1.函数的定义功能单一且独立的程序模块,用于完成特定的任务并根据需要返回一个确定的值。
例如:新视野的二级C语言培训,大家可以把它想象为一个函数,它完成的一个特定任务就是通过二级C语言考试,返回一个证书。
函数是C语言程序的基本单位,就如同人体的基本单位是细胞一样。
在C语言程序中有且仅有一个main函数。
2.函数定义的一般形式:返回值类型函数名(类型1 形参名1[ , 类型2 形参名2]…){说明部分语句部分}(1)返回值类型,包括:整型(int),实型(float、double),字符型(char)、空型(void)(2)函数名,和数组名一样必须符合标识符的命名规则,表示一个函数的名字(3)小括号里面的内容叫做形参,形参可以有一个或多个,当有多个形参中间必须用逗号分隔,并且不能省略形参的类型名。
同时小括号里面可以没有任何的形参。
(4)大括号里面的部分叫做函数体(5)函数不能嵌套定义,一个函数里面不能有其它函数的定义(6)函数举例:1)无形参的函数:2) 有一个形参的函数3) 有多个形参的函数:4) 形参类型出错:多个形参不能共用一个类型,习题中形参a,b,c 共用了一个整型int ,在C 语言中不允许的,必须给每个形参指定合法的类型名double f1(int n,double x ,char ch) {return 1.0 ; }一个形参double f(int n) {return 0.0; }int f3(int a,b,c) { }int f3(int a,double b,char c) { }3. 函数的返回值(1) 返回int 型的函数:函数必须返回一个整型表达式(2) 返回double 型的函数:函数必须返回一个实型表达式(3) 返回char 类型的函数:函数必须返回一个字符型表达式(4) 返回空值的函数:函数不会返回任何值int fun() {return 整型表达式 }int fun(int a,int b) {return a+b; }double fun( ) {return 实型表达式 }double fun(double x) {return 1.0/x; }char fun( ) {return 字符型表达式 }char fun(char ch) {if(ch>=’a ’&&ch<=’z ’) {return ch; } else {return ch+32; } }void fun ( ) {无return 或 return; }void fun(int a,int b) {if(a>b) {printf(“%d ”,a); } else {printf(“%d ”,b); } }4.库函数:(1) include命令行,一般格式为:#include <头文件名.h> 或 #include "头文件名.h"(2)注意事项1)include命令行必须以“#”符号开头。
2)系统提供了的头文件以.h作为文件的后缀。
3)include命令行是C语言的预处理命令,所以不用在语句的结尾加“;”。
例如,在程序中要引用数学函数,则在程序开头要加上:#include "math.h"(3)库函数的调用形式函数名(实参);(4)例如,若有代数式(其中e仅代表自然对数的底数,不是变量),则表示该代数式的C语言表达式是:sqrt(fabs(pow(n,x)+exp(x)))。
解析:在C语言中,计算平方根应使用sqrt()函数,计算n的x次方应使用pow()函数(第1个参数是n,第2个参数是x);计算自然数e的x次方应使用exp()函数,计算绝对值使用fabs()函数。
本题的代数式首先应计算n x和e x,根据前面介绍应该分别为pow(n,x)和exp(x),然后计算它们的和pow(n,x)+exp(x),接着是这个和的绝对值fabs(pow(n,x)+exp(x)),最后对这个绝对值开平方,所以最终结果应是sqrt(fabs(pow(n,x)+exp(x)))。
(5)重点讲解课本P78例2二、函数调用及数据传递(两者必须紧密结合)1、函数调用的形式:函数名(实参)2、有返回值的函数调用3、 无返回值的函数调用4、 重点讲解课本P78例1,必须给学员分析清楚A ,B ,C ,D 为什么不对?5、函数的数据传递:(1) 实参将自身的值传递给形参,换句话说实参将自身的值赋值给形参。
(2) 实参和形参的名字可以相同或是不同,不影响程序执行 (3) 形参的改变不能改变实参6、实参和形参名字不同时的数据传递,举例:课本P81例1分析:程序从上往下执行,遇到函数调用时“先执行被调用的函数,再往后执行”1)main 函数调用swap 函数,swap(a ,b );程序执行到此处时,先执行被调用的函数。
其中a 和b 叫做实参,函数调用时实参将自身的值传递给对应的形参; 2)形参x 的值通过实参传递过来,因此x 的值为3,同理y 的值为43)执行swap 函数:t=x ;x=y ;y=t ;→t=3,x=4,y=3(注意:x 和y 通过t 已经进行了交换,t=x ;x=y; y=t;一定要记住是做什么的)4)执行swap 函数:printf("%d %d",x,y) ;→结果为:4 3 5)执行完swap 函数后,继续执行main 函数中调用语句后面的语句6)执行main 函数中的语句:printf(“%d %d ”,a,b);→结果为:3 4,记住:形参x 和y 值的改变是不会影响实参a 和b7)整个程序的结果为:4 33 47、实参和形参名字相同是的数据传递分析:实参x、y和形参x、y是不一样的,大家记住,实参只在调用函数中有效,形参只在被调用函数中有效。
实参和形参虽然有相同的外形,但不是同一个变量。
1)main函数调用swap函数,swap(x,y);程序执行到此处时,先执行被调用的函数。
其中x和y叫做实参,函数调用时实参将自身的值传递给对应的形参;2)形参x的值通过实参传递过来,因此x的值为3,同理y的值为43)执行swap函数:t=x ;x=y ;y=t ;→t=3,x=4,y=3(注意:x和y通过t已经进行了交换,t=x ;x=y; y=t;一定要记住是做什么的)4)执行swap函数:printf("%d %d",x,y) ;→结果为:4 35)执行完swap函数后,继续执行main函数中调用语句后面的语句6)执行main函数中的语句:printf(“%d %d”,x,y);→结果为:3 4,记住:形参x和y值的改变是不会影响实参x和y7)整个程序的结果为:4 33 48、讲解课本P78例3,考查:形参随着实参的改变而改变,函数fun的功能是计算x2+2x+6随着实参x的不同就可以计算出不同的结果。
9、讲解课本P82习题1,注意分析的过程10、讲解习题册中P34第6、7分析:(1) 函数从main 函数开始执行,当执行fun(3)时调用fun 函数,printf(“\n ”);d 等待执行;(2) 执行fun(3),将实参3传递给形参x ,则x 的值为3,判断:x/2>0为真,则执行fun(x/2)—>fun(1),则调用函数fun(1),printf(“%d ”,x);等待执行;(3) 执行fun(1),将实参1传递给形参x ,则x 的值为1,判断:x/2>0为假,则不执行fun(x/2),执行printf(“%d ”,x);→输出:1 ,这样fun(1)执行完毕,返回上一层继续执行;(4) 调用fun(1)执行完毕,则执行fun(3)中的输出语句:printf(“%d ”,x);→输出3,这样fun(3)执行完毕,返回上一层继续执行(5) 调用fun(3)执行完毕,则执行main 函数中的输出语句:printf(“\n ”);→输出一个换行,这样main函数执行完毕,整个函数执行完分析:(1) 函数从main 函数开始执行,当执行z=f(3)时调用f 函数,printf(“%d\n ”,z);等待执行;(2) 执行f(3),将实参3传递给形参x ,则x 的值为3,判断:x==0||x==1为假,不执行return(3),执行y=x*x-f(x-2)—>y=3*3-f(1),则调用函数f(1),return y ;等待执行;(3) 执行f(1),将实参1传递给形参x ,则x 的值为1,判断:x==0||x==1为真,则执行return(3),遇到return 则不再执行以后的语句。
这样f(1)执行完毕,返回上一层继续执行;(4) 调用f(1)执行完毕,则执行f(3)中的语句:y=3*3-f(1) → y=3*3-3→y=6,继续执行return y ,将6返回。
这样f(3)执行完毕,返回上一层继续执行(5) 调用f(3)执行完毕,则执行main 函数中的输出语句:z=f(3)→z=6,继续执行printf(“%d\n ”,z);→输出:6,这样main 函数执行完毕,整个函数执行完毕三、函数声明以课本P79函数area和main函数为例进行讲解1.函数声明的形式返回值类型函数名(类型1 形参名1, 类型2 形参名2,…);即在函数的首部加上分号。
对area函数的声明为:double area(double a, double b);2.函数声明的注意事项(1)可省略形参名,不可省略形参的类型。
对area函数的声明为:double area(double ,double );但是不能写为:double area(a,b);(2)声明时的参数名可与定义时的形参名相同,也可不同。
对area函数的声明为:double area(double x,double y);或double area(double b,double a);(3)声明时不能省略函数的返回类型和最后的分号。
例如对area函数的声明:area(double a,double b)是错误的。
(4)重点讲解课本P80例4,习题3,这两个题必须让学员掌握3.函数的两种使用方式(1)先定义,后调用。
(2)先声明,后调用,最后定义。
第六章指针本章考点教学内容一、指针的定义1.地址的概念:int a=10,b=20;在计算机中的存储形式称。
上面图中描述了计算机内存中存放了两个变量,其中a变量占用了4个存储单元1000-1003,里面存放的值为10,变量a的地址为所占存储单元的第一个字节的地址,为1000;b变量占用了4个存储单元1004-1007,里面存放的值为20,变量b的地址为所占存储单元的第一个字节的地址,为1004;2.指针的定义形式(1)变量的定义形式:类型名变量名1,变量名2,…;EG: int a,b,c;double x,y,z;(2)指针的定义形式:类型名 *变量名1,*变量名2,…;EG:1)定义整型类型的指针:int *p,*q;说明:定义了两个整型类型的指针p和q,p和q叫做指针变量,简称指针。