工学]c程序设计复习要点

上传人:tia****nde 文档编号:69636815 上传时间:2019-01-14 格式:PPT 页数:88 大小:410.05KB
返回 下载 相关 举报
工学]c程序设计复习要点_第1页
第1页 / 共88页
工学]c程序设计复习要点_第2页
第2页 / 共88页
工学]c程序设计复习要点_第3页
第3页 / 共88页
工学]c程序设计复习要点_第4页
第4页 / 共88页
工学]c程序设计复习要点_第5页
第5页 / 共88页
点击查看更多>>
资源描述

《工学]c程序设计复习要点》由会员分享,可在线阅读,更多相关《工学]c程序设计复习要点(88页珍藏版)》请在金锄头文库上搜索。

1、C程序设计技术 复习要点,一基本概念部分,C语言的基本概念(数据类型,常量,变量,表达式的书写方法等) 当两个整数相除时,得到的结果仍然是整数。既取整运算。例如:7/5结果为1,-7/5结果为-1,3/5结果为0. 求模运算就是求余数,参加求模运算的两个对象必须都是整型对象,运算结果的符号与第一个运算对象相同。例如:7%5结果为2,-7%5结果为-2,7%(-5)=2。,优先级高 ( ) 函数 +、- *、/、% +、- 优先级低,典型运算符的使用(+,-,复合赋值等) 复合赋值符:凡是双目运算符都可以与赋值运算符一起组成复合赋值符,其结合性为右结合性。这些复合赋值符共有10个,它们是: +=

2、、-=、*=、/=、%=、=、&=、=、|= +i、 -i。自增、自减运算符的前缀形式对变量实施的运算是“先增/减值后引用”。 i+、 i-。自增、自减运算符的后缀形式对变量实施的运算是”先引用后增/减值”。 例1-9 自增、自减运算符使用示例。 例1-14 表达式混合运算中的 自动数据类型转换示例。 例1-15 表达式混合运算中的强制数据类型转换示例。,关系运算和逻辑运算,3) 关系运算的结果表示: 在C程序设计语言中没有逻辑数据类型,所以在进行关系运算时: 用数值“1”表示逻辑概念上的“真”, 用数值“0”表示逻辑概念上的“假”; 例如:5=5 /*结果为1*/ 10=10 /*结果为1*

3、/ 5!=5 /*结果为0*/ 53 /*结果为1*/ 35 /*结果为0*/,例2-1 关系运算示例。,该程序运行执行语句c=5-1=a+2=a+2=和=结合,即先计算表达式5-1=a+2得到结果0,然后计算表达式0=b-21的结果也为0,最后将该0值赋值给变量c。 所以,该程序运行的输出结果为:c=0,对逻辑表达式从左到右扫描求解; 在逻辑表达式的求解过程中,任何时候只要逻辑 表达式的值已经可以确定,则求解过程不再进行。,例如有定义:int a=1,b=2,c=0;,则逻辑表达式a+|b+&c+ 的计算过程得到结论为: 逻辑表达式的值为1、变量a的值为2、变量b的值为2(原值)、变量c的值

4、为0(原值)。,例2-3 关系表达式运算和逻辑表达式运算示例 。,例2-2 逻辑表达式运算示例 。,基本控制结构(特别注意+,-运算符进入条件表达式),流程控制语句 条件语句 ifelse 循环语句 for语句、while语句、dowhile语句 提前结束本次循环语句 continue 循环或多分支终止语句 break 无条件转移语句 goto 返回语句 return 复合表达式语句 C语言允许把一组语句括在花括号之中构成一个语句块,称之为复合语句。例如 char ch; ch=getchar(); putchar(ch); ,要特别注意各控制结构的流程,2.2.6 switch语句与程序的多

5、分支结构,switch(expession) case constand1: sentences1; break; case constand2: sentences2; break; case constandN: sentencesN; break; default: sentencesN+1 ,2)执行过程:,首先,对作为条件的表达式(expression)求值; 然后,在语句结构的花括号内从上至下查找所有的case分支,当找到与条件表达式值相匹配的case时,将其作为控制流程执行的入口,并从此处开始执行相应的语句段,直到遇到break语句或者是switch语句结构的右花括号“”为止。,

6、switch(number) case 1: statement1; case 2: statement2; case 3: statement3; default: statement4; statement5;,2,习题:P84页,一、 6. For (i=1;i+4;);后,循环控制变量i的值是?,要特别注意该题,分析该题;理解该题的考点!,特别注意+,-运算符进入条件表达式!,数组的定义和数组元素的访问,例3-3 用数组存放一组统计数据,然后用“*”表示的条形图输出这组数据。程序输出效果如下所示: Element Value Striation 1 11 * 2 3 * 3 7 * 4

7、 10 * 5 20 * 例3-4 打印如下所示的杨辉三角形的前10行(要求使用一维数组处理),例3-5 在二维数组a34中依次选出各行最大元素值存入一维数组b3对应元素中。 程序运行结果: array a: 3 16 87 65 4 32 11 108 10 25 12 27 array b: 87 108 27,3.3.2 常用排序方法 3.3.3 常用查找方法,例3-9 编程序实现冒泡排序算法,对随机生成的20个整数按升序进行排序并输出。 上面程序中用变量flag作为标志,每一趟排序开始时将其设置为0,当本趟排序过程中有数据交换时将flag设置为1,表示数据还没有排序完成;当本趟排序过程

8、中没有一次数据交换时,flag保持为0值,表示被排序的数据已经完全满足排序的要求,没有必要再继续进行以后的排序过程,程序中用break语句退出排序循环。 程序的一次执行结果为: Before sorting . 293 31 365 849 867 166 487 826 487 775 331 630 294 5 242 136 953 123 849 65 After sorting . 5 31 65 123 136 166 242 293 294 331 365 487 487 630 775 826 849 849 867 953,例3-10 编程序实现选择排序算法,对随机生成的20

9、个整数按升序进行排序并输出。 程序的一次运行结果为: Before sorting . 341 74 545 498 809 626 913 433 567 560 130 479 505 95 96 143 851 634 830 665 After sorting . 74 95 96 130 143 341 433 479 498 505 545 560 567 626 634 665 809 830 851 913,1顺序查找(Linear search) 顺序查找又称为线性查找。其基本过程是:从待查表中的第一个记录开始,将给定的关键字值与表中每一个记录的关键字值逐个进行比较。如果找到

10、相符合的记录时,查找成功,如果查找到标得末端都未找到相符合的记录时,查找失败。顺序查找法适应于被查找集合无序的场合。 例3-11 编程序实现顺序查找算法,在随机生成的20个整数中查找指定值,要求程序能够显示出查找进行比较的次数以及本次查找成功与否。 程序的一次运行结果为: 请输入被查找的整数值: 43 被查找数据集合如下. 15 5 70 43 64 17 10 4 58 96 39 51 5 51 67 0 49 56 12 12 查找43成功,共进行了4次比较。,例3-12 编程序实现折半查找算法,在随机生成的20个整数中查找指定值,要求程序能够显示出查找进行比较的次数以及本次查找成功与否

11、。 程序中首先输出随机产生、未经排序的查找数据集合,执行结果中用数组元素形式显示出来的是排序后与查找关键字key值相同的元素。 程序的一次执行结果如下所示: 下面是未排序的查找数据集合. 41 28 91 83 86 62 96 93 41 57 79 47 12 94 36 34 56 36 2 97 请输入被查找的关键字值: 91 查找a15成功,共进行了4次比较。,函数的定义,声明和调用,C程序的一般结构,宏代换(不带参,带参),宏定义分为代参数的宏定义和不代参数的宏定义两种。 1不代参数的宏定义 不代参数的宏定义编译预处理语句的一般形式是: #define 宏标识符 字符串 宏调用的格

12、式为: 宏标识符 宏调用的作用是:在宏定义的作用范围之内,将所有的宏标识符用指定的字符串替换。式中,宏标识符也称为宏名或常量标识符,习惯上使用大写字母书写。,在C程序的设计中,正确地理解宏定义的关键在于理解宏调用仅仅就是一个替换而不会进行任何的合并、计算等等操作。在阅读理解包含宏调用问题的C程序时一定要做到先将宏替换完成、然后操作宏替换完成后的表达式,例4.25 宏调用替换问题的理解示例。 /* Name: ex04-25.cpp */ #include #define N 2 #define M N+2 #define MN 2*M void main() int x=MN; printf(

13、“x=%dn“,x); ,错误的理解方式是:N2、M4(2+2)、MN8(2*4),从而认为上面程序的输出结果是x=8。 正确理解的方式应为:MN2*N+2、MN2*2+2,因而程序执行的正确结果:x=6。,带参数的宏定义 在C程序设计过程中如果有需要,也可以使用带参数的宏定义。定义代参数的宏定义的一般形式如下: #define 宏标识符(形参表) 表达式样式字符串 宏调用的格式为: 宏标识符(实参表) 宏调用的作用是:在宏定义的作用范围之内,将所有的宏标识符用指定的表达式样式字符串替换,然后用宏调用中的实际参数代替通过替换形成的表达式中的形式参数。,在程序设计中使用带参数宏定义时,为了避免当

14、实际参数本身是表达式时引起的宏调用错误,在定义代参数的宏定义时最好将宏定义中表达式的形式参数用括号括起来,下面的例4.26展示了这方面的问题。,例4.26 代参数宏定义使用示例(不能正确处理表达式样式实际参数)。 /* Name: ex04-26.cpp */ #include #define PI 3.145926 #define S(r) PI*r*r void main() double a,b,area1,area2; a=3.3; b=3.2; area1=S(a); area2=S(a+b); printf(“area1=%fnarea2=%fn“,area1,area2); ,例

15、4.27 宏调用替换问题的理解示例。 /* Name: ex04-27.cpp */ #include #define Min(x,y) (x)(y)?(x):(y) void main() int a=1,b=2,c=3,d=4,t; t=Min(a+b,c+d)*1000; printf(“t=%dn“,t); 正确结果为:t=3,返回指针函数和指向函数指针的定义和简单应用,例5-1编程序计算下面公式,其中n从键盘输入,并要求在程序中使用指向函数的指针变量。,结合”关于指针的复习PPT”复习,求解高阶方程的根 在对高阶方程的讨论中知道,高阶方程都是类似的,其形式可 以用f(x)=0来表示,也就是说被求根的函数用C语言都可表示 成为如下所示结构C函数: double f(double x) 因而指向被求根函数的指针变量的一般形式为: double (*fp)(double x); 对于使用牛顿迭代法的通用求根函数而言,在函数的参数表中 应该包含三个形式参数:一个是求根时指定的根的初始值,另 外两个是用于接受外界传递进来的函数实参以

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号