收藏 分销(赏)

《C程序设计》课程教案.doc

上传人:仙人****88 文档编号:8943869 上传时间:2025-03-08 格式:DOC 页数:167 大小:984.50KB 下载积分:10 金币
下载 相关 举报
《C程序设计》课程教案.doc_第1页
第1页 / 共167页
《C程序设计》课程教案.doc_第2页
第2页 / 共167页


点击查看更多>>
资源描述
《C程序设计》课程教案 第一章 C语言概述 一、教学目标 1.了解C语言出现的背景 2.掌握C语言程序的构成、书写格式和上机步骤 二、教材分析 1.本章重点:C语言程序的构成 2.本章难点:上机操作 三、教学方法和手段 1. 讲授与演示法相结合 2. 计算机和投影仪 四、教学时数 2学时 五、教学内容 第一节 C语言出现的历史背景 一、ALGOL60 :1960年面向问题、结构化,可读性、可移植性好,不能对硬件操作; 二、CPL:63年接近硬件,规模较大、难以应用; 三、SIMULA:1966~1967 SIMULA 66是ALGOL 60的扩充;SIMULA 67引进了“对象”和“类”等概念而成为第一个面向对象的语言; 四、BCPL :67年由CPL改制,结构化、直接处理硬件; 五、B语言:1970年贝尔实验室的Ken Thompson以BCPL语言为基础设计的,开发了第一个UNIX操作系统; 六、C语言:1972-73年间,保持了BCPL和B语言的精炼与接近硬件的优点,克服了它们过于简单、数据无类型的缺点,重写了UNIX操作系统的90%; 七、标准 C:以1978年发表的UNIX第七版中的C编译程序为基础,Brain W.Kernighan&Dennis M.Ritchie合著的《The C Programming Language》问世; 八、ANSI C:1983年美国国家标准化协会(ANSI)制定的标准; 九、C++:1986年 与C兼容,保持了C的所有优点并进行了增强:增强了面向对象的机制,成为典型的面向对象和面向过程的混合语言,适用于大型系统软件和应用软件的开发; 十、87 ANSI C:1987年制定的新标准; 十一、ISO C:1990年ISO接受87 ANSI C为ISO C的标准,该标准是目前C编译器的标准。 第二节 C语言的特点 一、语言简洁、紧凑,使用方便、灵活; 二、运算符丰富; 三、数据类型多(整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类等); 四、具有结构化的控制语句; 五、语法不太严格,自由度大; 六、既是高级语言,又具有低级语言的功能; 七、生成目标代码质量高,程序执行效率; 八、可移植性好。 第三节 简单的C语言程序介绍 一、C语言是由函数构成的,至少有一个main()函数; 二、每个函数由函数首部和函数体组成;函数体由说明语句、执行语句组成; 三、每个C程序从main()函数开始执行,并在main()中结束; 四、每个语句和数据定义的最后必须加分号; 五、C程序无输入、输出语句: 输入功能由scanf()函数完成;输出功能由printf()函数完成; 六、可加注释/*……*/ 七、借助程序实例加以说明,并提倡良好的程序设计书写风格: (一)每个语句占一行; (二)同一层次的语句从同一位置处开始书写; (三)同一层次中嵌套的结构,应从不同位置开始书写; (四)编译控制行、外部数据定义、函数定义之间空一行书写; (五)对于函数体的大括号的书写约定 (六)学会使用注释。 第四节 运行C程序的步骤和方法 一、进入环境; 二、编辑源程序; 三、保存源程序; 四、编译源程序F9; 五、执行程序Ctrl-F9,查看结果Alt-F5; 六、退出C环境Alt-X  。 本章小结 一、C语言的构成要素,main函数在程序中的作用; 二、 上机操作的过程。 作业题 P13页1.3题、1.7题、1.8题。 第二章 程序的灵魂——算法 一、教学目标 1.了解算法的概念 2.掌握结构化程序的三种基本结构及算法的N-S图表示法 二、教材分析 1.本章重点:怎样表示一个算法 2.本章难点:三种基本结构 三、教学方法和手段 1. 讲授与演示法相结合 2. 计算机和投影仪 四、教学时数 4学时 五、教学内容 第一节 算法的概念 一个程序包括以下两方面内容: 一、对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构; 二、对操作的描述。即算法,为解决一个问题而采取的方法和步骤; 三、著名计算机科学家Wirth提出一个公式:数据结构+算法=程序。 第二节 简单算法举例 例1:设有两个杯子A和B,分别盛放酒和醋,要求将它们互换。 S1:C ← A S2:A ← B S3:B ← C 例2:从10个数中挑出最大数,并将之置入max。 S1:i=1, 令max等于第一个数; S2:i=i+1; S3:将max与第 i 个数进行比较,若前者小于后者,将修正max为第 i 个数;否则进行S4; S4:若i <10,则转到S2;否则输出max并结束。 例3:求1~100的和 S1:sum←0,t←1; S2:sum←sum+t S3:t←t+1 S4:若t <= 100,则转到S2,否则转到S5; S5:输出sum,结束。 例4:求n! S1:s ← 1,t ←1; S2:s ← s * t; S3:t ← t+1; S4:若 t <= n,则返S2,否则输出s并结束。 第三节 算法的特性 一、有穷性; 二、确定性; 三、有零个或多个输入; 四、有一个或多个输出; 五、有效性; 第四节 怎样表示一个算法 一、用自然语言表示算法–通俗易懂,但易出现“歧义性”。 二、用传统流程图表示算法–直观形象,易于理解。 程序的三种基本结构:顺序结构、选择结构、循环结构 B A A B P A P A P A P                        三、 用N-S流程图表示算法     四、 用伪代码表示算法 五、 用计算机语言表示算法(即实现算法) 第五节 结构化程序设计方法 结构化程序设计方法强调: 程序设计风格和程序结构的规范化,提倡清晰的结构。 一、自顶向下 二、逐步细化 三、模块化设计 四、结构化编码 本章小结 一、程序的三种基本结构:顺序、选择、循环; 二、5种描述算法的方法,关键是N-S图; 三、灵活运用三种基本结构,学会结构化的程序设计方法。 作业题 P36页2.4(1)(2)(4)题。 第三章 数据类型、运算符与表达式 一、教学目标 1.掌握C的数据类型 2.掌握整型、浮点型、字符型数据的常量及变量 3. 掌握C语言中的各种运算符 4.掌握运算符的优先级与结合性 二、教材分析 1.本章重点:(1)基本数据类型的常量和变量; (2)C语言中各种运算符的使用 2.本章难点:(1)不同类型的数据在内存中的存储形式 (2)混合表达式中运算符的运算顺序 三、教学方法和手段 1. 讲授与演示法相结合 2. 计算机和投影仪 四、教学时数 8学时 五、教学内容 第一节 C语言的数据类型 C语言的数据类型丰富,但在学习第11章之前,我们只遇到C的四种基本数据类型: 整型、字符型、单精度实型、双精度实型。 第二节 常量和变量 一、常量:其值不能被改变的量。 两种:一般常量和符号常量 (一)直接常量(字面常量): 1.整型常量:如12、0、-3等 2.实型常量:如4.5、-1.234等 3.字符常量:如‘a’、‘1’等,用单引号表示,占一个字节; 4.字符串常量:如“a”、“abc”、“1”,用双引号表示。 (二) 符号常量 符号常量即是用一个标识符来代替一个常量;符号常借助于预处理命令define来实现; define命令格式是:#define 标识符 字符串 如:#define PI 3.1415926535 #define STRING “ABCD” 1. 习惯上,符号常量用大写字母表示; 2.定义符号常量时,不能以“;”结束; 3. 一个#define占一行; 4. 一个源程序文件中可含有若干个define命令,不同的define命令中指定的“标识符”不能相同; 二、变量:在程序运行过程中,其值会发生变化。 (一)每个变量必须有一个名字,变量名是标识符。 (二)标识符是用来标识数据对象,是一个数据对象的名字。 (三)命名规则:以字母或下划线开始,后跟字符、数字或下划线。 例:x1,_average,lotus_1_2_3,#abc,1fs,M.D.Jhon 1.变量名不能是关键字(即保留字,是C编译程序中保留使用的标识符。 如:auto、break、char、do、else、if、int等) 2.怎样定义变量? int i, z, h; char c , ch=‘c’; float a=3.14 , b=2.71, x, y; 注意:变量要先定义后使用! 例: void main() { int a , b , c ,sum; a=3; b=-4; c=9; sum=a+b+c; printf(“\nsum=%d”,sum); a=16; b=56; c=-98; sum=a+b+c; printf(“\nsum=%d”,sum); } 第三节 整型数据 一、整型常量的表示方法 (一)十进制 如:123,-456,0 (二)八进制数 如:0123,-011 (以0开头的数) (三)十六进制数 如:0x123,-0x12,0xABC (以0x开头的)  二、整型变量 (一)整型数据在内存中以二进制形式存放,每一个整型变量在内存中占2个字节。 例:定义整型变量i=10 和j= -10的存放形式。 (二)整型变量的分类:基本型int、短整型short、长整型long、无符号型unsigned (三)整型变量的定义 对变量的定义,一般放在函数体开头部分的声明部分(也可放在函数中某一分程序内) 例:#include <stdio.h> void main( ) { int a, b, c, d; unsigned u; a=12; b=-24; u=10; c=a+u; d=b+u; printf(“a+u=%d, b+u=%d\n”,c,d); } (四)整型数据的溢出 一个int 型变量的最大允许值为32767,如果再加1,其结果不是32768,而是-32768。即“溢出”。 (五)整型常量的类型 1.一个整数在-32768~32767内,则为int型,可以赋给int型和long int型变量。 2.一个整数超过上述范围,在-2147483648~2147483647内,则为long int型,可赋给long int型变量。 3.如果short int 和int型数据在内存中占据长度相同,则其范围与int相同。 4.常量无unsigned型。但可将非负且在取值范围内的整数赋给unsigned型变量。 5.在一个整常量后面加一个字母l或L,则认为是long int型常量。 第四节 浮点型数据 一、浮点型常量的表示方法 (一)十进制浮点数 如:0.123,.456,0.0,123.,123.0 整数部分和小数部分都可省,但不能同时省 (二)指数形式 如:123e3,123E3代表123×103 指数部分为整常数; 尾数部分可以是整常数,也可以是实常数; 尾数部分和指数部分均不可省。E10, 100.e15.2, .e5均为不合法的浮点数。 二、浮点型变量 (一)浮点型数据在内存中的存放形式 一个浮点型数据一般在内存中占4个字节(32位)。 浮点型数据是按照指数形式存储的。 (二)浮点型变量的分类:单精度float、双精度double、长双精度long double 第五节 字符型数据 一、字符常量 (一) 括在一对单引号中的一个字符(单引号仅作界限符),‘a’ 、‘X’为字符常量; (二)一个字符常量占1B,存放的是字符的ASCII码值。 (三)转义字符 1.以‘ \ ’开头,后跟一个约定的字符或所要表示字符的十六进制(或者八进制)的编码; 2.‘\0’表示编码值为0的字符,即NULL,它与数值常数0是等同的; 3. 书中P48列出了常用的转义字符。 二、字符变量 字符变量用来存放字符常量,只能放一个字符。 例:char c1=‘a’, c2=‘A’; 一个字符变量在内存中占一个字节。 三、字符数据的存放形式及使用方法 将字符常量放到字符变量中,实际上是将其ASCII代码放到变量所占的存储单元中。 如:‘a’在内存存放的是二进制数01100001; ‘A’在内存存放的是二进制数01000001。 在0~255之间字符型数据和整型数据可以通用。即一个字符数据既可以以字符形式输出,也可以以整数形式输出,还可以互相赋值。 例:void main() { char c1,c2; c1=97; c2=98; printf(“%c %c ”, c1, c2); printf (“%d %d \n”, c1, c2); c1=c1-32; c2=c2-(‘a’-’A’); printf(“%c %c\n” , c1 , c2); } 运行结果 :a b 97 98 A B 四、字符串常量 (一)括在一对双引号中的0个或多个(除\与“ ”自身之外)C语言字符集中的任何字符及转义字符组成;双引号仅作界限符; “C language programming”、“a\\n”、“#123”、“ ”等为字符串常量; “The dentist said: \’open wide\’” “The path is \\root\\user\\device” “\077 pay to attention of this!” (二)“China”在存储器中实际占用6个字节: (三)“a”与‘a’是不同的(表示形式不同、存储方式不同、后者可像整数那样参加运算,前者不能); (四) 但应注意的是,在写字符串常量时没有必要写“China\0 ”,而只需写“China”; (五) 虽然C字符串后末尾的NULL字符属字符串的内容,但是NULL字符并不被显示或输出; (六) C语言的字符串常量是按数组处理的。 (七) 书写一个很长的字符串常量时,如果在一个书写行内写不下,可跨行书写。如:“A string is a sequence of characters\ surrounded by double quotes.” 第六节 变量赋初值 在定义变量时对变量进行赋值称为变量的初始化; 格式:类型说明符 变量1=值1,变量2=值2,……; 如:int a=3, b=4, c=5; float x=3.4, y=0.75; char ch1=‘K’, ch2=‘P’; 注意: 一、 int a, b, c=5; 只对c初始化,值为5; 二、 对几个变量赋以同一个初值时,int a=b=c=5; 是非法的; int a=5, b=5, c=5; 是合法的。(注:a=b=c=5;是合法的赋值语句) 说明:对变量赋初值,仅表示该变量在程序运行过程中执行本函数时的初值。 第七节 各类数值型数据间的混合运算 混合算术表达式,如:10+‘a’+ i*f-d/e需自动转换成同一类型再运算; 转换的规则如下:(书P54) 设有:int i=2; float f=3.5; double d=16.0; long e=2; 则10+‘a’+ i*f-d/e的运算次序为: 一、进行10+‘a’的运算,转换‘a’为97; 二、进行 i* f的运算,将 i 和 f 都转成double型; 三、整数107与 i* f的积相加,先将107转化成双精度数,结果为double型; 四、将变量 e 转化成double型,d/e的结果为double型; 五、将10+‘a’+ i* f的结果与d/e的商相减,结果为double型。 以上数据类型转换都是由C编译系统自动隐含完成的,故称自动类型转换 第八节 算术运算符和算术表达式 一、基本的算术运算符 *、/、% +、- 左结合性 二、算术表达式 (一)用算术运算符和括号将运算对象(操作数)连接起来的、符合C语法规则的式子称为算术表达式。如: (‘a’-b*c /(d+e)+sin(3.14/2+f )) - 3.14*g*g (二)* 不能省,*、/ 不能写成另外的符号; (三)数学函数自变量的括号不能省;如: sin(x);log10(x);log(x);pow(x,y) (四)角度、特殊的符号要转换。 三、5种算术运算符的优先级与结合性 四、 强制类型转换运算符 格式:(类型关键字或类型名)表达式 如:(int)(x+y)%(int)p (double)a (float)(5%3) 实例:void main() { float x; int i; x=3.6; i=(int) x; printf(“x=%f, i=%d”,x, i); } 运行的结果是:x=3.600000,i=3 五、自增与自减运算符 ++、-- 基本运算有:++i、i++、--i、i-- 说明: (一)+ +和--只能用于变量,不能用于表达式或常量; 如:2++或 (i+j)--是非法的; (二)+ +、 --运算符的结合方向是“右结合”;如:-i+ +不等于(-i) + + ; (三)+ +、 --运算常用于循环控制、数组的下标处理等场合; (四)i+++j应理解为(i++)+j; (五)printf (“%d, %d”, i , i++); 最好写成j=i++; printf(“%d,%d”, i, j); 当i的初值为3时,其结果为4,3 第九节 赋值运算符和赋值表达式 一、赋值运算符:= 二、类型转换 规则:把赋值运算符右边表达式的数据类型转换成左边对象的类型。 (一)实型赋给整型变量时,舍去实数的小数部分。 (二)整型赋给实型变量时,数值不变,以浮点形式存储。 (三)一个较短的有符号的int型数据转换成一个较长的有符号int型数据总是进行符号扩展,以保证数据的正确性; 如:a、b分别为8位、16位整型数据,则执行b=a后: a: 11111110(-2) 转换后的结果:11111111 11111110(-2) (四)一个较长的有符号int型数据转换成一个较短的有符号int型数据时把较长的有符号int型数据的高位部分截去; 如:设a为8位,b为16位,则执行a=b后,若 b: 00000000 00001111 转换后的结果 00001111 b: 11111111 11110001 (-15) 转换后的结果 11110001 (-15) b: 11111111 00000000 (-128) 转换后的结果 00000000 (0)  三、复合的赋值运算符 在“=”之前加上其他运算符,可构成复合运算符 x+=y 等价于 x=x+y a%=b+c/d 等价于 a=a%(b+c/d) C中10种复合赋值运算符:+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|= 四、赋值表达式 <变量><赋值运算符>< 表达式/值> 如: void main() { int a,b,c,d; a=(a=100)+(b=30)-b*5; …… } 嵌套赋值表达式:e1=e2=…=en,如:a=b=c=d=100 等价于a=(b=(c=(d=100))) e1,e2,…,en不必具有相同的数据类型 例: 当a=12时,a+=a-=a*a 求解结果? 先“a-=a*a”的运算,a=a-a*a=-132; 再进行“a+=-132”的运算,a=a+(-132)=-264。 第十节 逗号运算符和逗号表达式 语法:表达式1,表达式2,……表达式n 语义:依次求各个表达式的值,最后一个表达式的值作为整个逗号表达式的值; 如:3+5, 6+8的值为14; a=3*5,a*4的值为60; 逗号表达式常用在for语句中; 逗号表达式的优先级别最低; C语言中,逗号有两种用途(分隔符,运算符)。 思考:(a=3*5,a*4),a+5的值是多少? 本章小结 一、C的基本数据类型int、float、double、char; 二、基本数据类型的常量表示、变量定义,及不同类型的数据在内存中的存储形式; 三、算术运算符及表达式的计算; 四、++、--运算; 五、各种运算符的优先级和结合性。 作业题 P66页-68页3.6题、3.9题、3.10题、3.12题。 第四章 最简单的C程序设计——顺序程序设计 一、教学目标 1.掌握赋值语句、输入输出语句 2.学会简单的顺序程序设计 二、教材分析 1.本章重点:输入、输出语句 2.本章难点:格式输入输出语句 三、教学方法和手段 1. 讲授与演示法相结合 2. 计算机和投影仪 四、教学时数 4学时 五、教学内容 第一节 C语句概述 一、控制语句 (一)二个分支语句(if-else、switch) (二)三个循环语句(for、while、do-while) (三)四个转移语句(continue、break、goto、return) 二、函数调用语句 如:printf(“Hello, world!”); 三、表达式语句 x+y; i++; a=2; a=3*5, 40 ; 四、空语句( ;) 五、复合语句 { 语句序列 } 第二节 赋值语句 赋值语句是由赋值表达式加上一个分号构成, 如:b=3; if((a=b)>0) t=a; 第三节 数据输入输出的概念及在C语言中的实现 一、输入、输出的概念 二、输入输出操作是由函数来实现的 C语言函数库中有“标准输入输出函数” 字符的输入与输出:getchar()、putchar() 字符串的输入与输出: gets() 、puts() 格式输入与输出: scanf() 、printf() 三、在使用C语言库函数时,要用预编译命令“#include”将有关的“头文件”包括到用户源文件中。 例如:使用标准输入输出库函数时,要用到“stdio.h”文件,在源文件开头应有: #include <stdio.h> 或 #include “stdio.h”   第四节 字符数据的输入输出 一、字符输出函数——putchar 语法:putchar(c) 语义:(向stdout终端)输出一个字符; 如:#include <stdio.h> void main() { putchar(‘\141’); putchar(‘a’); putchar(‘A’+32); putchar(‘\n’); } 输出:aaa 二、字符输入函数——getchar 语法:getchar ( ),是一个无参函数; 语义:(从stdin终端上) 输入一个字符; getchar 包含在 stdio.h中,是stdio.h中定义的宏; 如:#include <stdio.h> void main( ) { putchar(getchar( )); }  如:#include <stdio.h> void main( ) { int c; while((c=getchar( ))!=‘#’) if(c>=‘a’&&c<=‘z’)putchar(c-’a’+’A’); else putchar(c); } 从键盘上输入一串字符遇‘#’结束,若字符在a~z之间时,则输出字符的大写;否则直接输出字符。 第五节 格式输入与输出 一、格式输出函数——printf 语法:printf (“格式控制”, 输出表列); 格式控制:是用双引号括起来的字符串,包含两种信息: 普通字符和转义字符(这类字符总是原样输出) 格式说明:由%和格式控制符组成。如:%d, %f等; 如:printf(“a=%d, b=%d”,a,b); 若a、b的值分别为2和3,则输出结果为: a=2, b=3 例1: #include <stdio.h> void main() { int a=4096; long int b=123456; printf(“%5d\n%3d\n%ld\n%9ld\n”,a,a,b,b); } 例2: #include <stdio.h> void main() { int a= -8; printf(“dec a=%d\n oct a=%o\n hex a=%x\n”,a,a,a); } 例3: #include <stdio.h> void main() { int a= 101; unsigned int b=65; char c=‘a’; printf(“a=%d,%c,%u\n”,a,a,a); printf(“b=%d,%c,%u\n”,b,b,b); printf(“c=%d,%c,%u\n”,c,c,c); printf(“c=%3d,%3c,%3u\n”,c,c,c); } 二、格式输入函数 scanf 语法:scanf(“格式控制”,地址表列); 格式控制:包含三类符号 空白字符:(空格、Tab或\t、\n),输入时不必一一对应; 普通字符:(非格式转换说明符、非空白符、非%),输入时必须一一对应; 格式转换说明符: (由%后接一个任选的压缩指示符“*”,表示本输入项在读入后不赋给相应的变量) 例1: #include <stdio.h> void main() { int a; float b; char str[50]; scanf(“%d%f%s”,&a,&b,str); …… } 例2: #include <stdio.h> void main() {int a; float b; char str[50]; scanf(“%2d %f %*d %2s”,&a,&b,str); …… } 注意:scanf函数规定,组成输入项表的输入对象须是地址量;如: scanf(“%d,%d,%d”,&a,&b,&c); scanf(“a=%d,b=%d,c=%d”,&a,&b,&c); (一)第一个输入语句,正确的输入数据流为:123,456,789<enter>,处理的结果为: 123→a,456→b,789→c (二)同理对第二个输入语句,正确的输入数据流应是: a=123,b=456,c=789<enter> 该输入数据流中除123,456,789被赋给相应变量外,其余都被丢弃 例3: #include <stdio.h> void main() { char c1,c2,c3; scanf(“%c%c%c”,&c1,&c2,&c3); scanf(“%3c%3c%3c”,&c1,&c2,&c3); …… } (一)对第一个输入语句, 若输入数据流为abc<enter>, 则a→c1 b→c2 c→c3;但如果输入的数据流为:a b c<enter> 则a→c1 →c2 b→c3 (二)对第二个输入语句:要求输入3个字段9个字符,但三个变量中只能各存放一个字符,其余的2个字符将被丢掉。如当输入数据流为:abcdefghi<enter>时,结果为a→c1 d→c2 g →c3   第六节 顺序结构程序设计举例 例1:输入三角形的三边长,求三角形面积。 分析:三边为a,b,c,面积area2=s(s-a)(s-b)(s-c),其中s=(a+b+c)/2 程序: #include <math.h> void main() { float a,b,c,s,area; sacnf(%f,%f,%f”,&a,&b,&c); s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“a=%7.2f,b=%7.2f,c=%7.2f,s=%7.2f\n”,a,b,c,s); printf(“area=%7.2f\n”,area); } 例2:从键盘输入一个大写字母,要求改用小写字母输出。 #include <stdio.h> void main() {char c1,c2; c1=getchar(); printf(“%c,%d\n”,c1,c1); c2=c1+32; printf(“%c,%d\n”,c2,c2); }  本章小结 一、字符输入输出函数:getchar\putchar; 二、格式输入输出函数:scanf\printf,特别注意scanf函数的地址项是否要加&; 三、注意简单程序的结构,头文件、变量定义、输入语句及输出语句。 作业题 p88页-90页4.5题、4.8题、4.9题。 第五章 选择结构程序设计 一、教学目标 1.掌握实现选择结构的两种语句、一个运算符 2.学会编写选择结构的程序 二、教材分析 1.本章重点:if-else语句、switch语句、条件运算符 2.本章难点:嵌套if-else语句中的if与else匹配问题 三、教学方法和手段 1. 讲授与演示法相结合 2. 计算机和投影仪 四、教学时数 4学时 五、教学内容 第一节 关系运算符和关系表达式 一、关系运算符及其优先次序 在C语言中有以下关系运算符: < 小于 <= 小于或等于 > 大于 >= 大于或等于 == 等于 != 不等于 关系运算符都是双目运算符,其结合性均为左结合。关系运算符的优先级低于算术运算符,高于赋值运算符。 在六个关系运算符中,<,<=,>,>=的优先级相同,高于==和!=,==和!=的优先级相同。 二、关系表达式 关系表达式的一般形式为: 表达式 关系运算符 表达式 例如: a+b>c-d x>3/2 ‘a’+1<c -i-5*j==k+1 都是合法的关系表达式。由于表达式也可以又是关系表达式。 因此也允许出现嵌套的情况。例如: a>(b>c) a!=(c==d)等。 关系表达式的值是“真”和“假”,用“1”和“0”表示。 如: 5>0的值为“真”,即为1。 (a=3)>(b=5)由于3>5不成立,故其值为假,即为0。 第二节 逻辑运算符和逻辑表达式 一、逻辑运算符及其优先次序 C语言中提供了三种逻辑运算符: && 与运算 || 或运算 ! 非运算 与运算符&&和或运算符||均为双目运算符。具有左结合性。非运算符!为单目运算符,具有右结合性。逻辑运算符和其它运算符优先级的关系可表示如下: !(非)→&&(与)→||(或) !(非) 算术运算符 关系运算符 &&和 || 赋值运算符 “&&”和“||”低于关系运算符,“!”高于算术运算符。 按照运算符的优先顺序可以得出: a>b && c>d 等价于 (a>b)&&(c>d) !b==c||d<a 等价于 ((!b)==c)||(d<a) a+b>c&&x+y<b 等价于 ((a+b)>c)&&((x+y)<b) 二、逻辑运算的值 逻辑运算的值也为“真”和“假”两种,用“1”和“0 ”来表示。其求值规则如下: (一) 与运算 &&:参与运算的两个量都为真时,结果才为真,否则为假。 例如: 5>0 && 4>2 由于5>0为真,4>2也为真,相与的结果也为真。 (二)或运算||:参与运算的两个量只要有一个为真,结果就为真。 两个量都为假时,结果为假。 例如: 5>0||5>8 由于5>0为真,相或的结果也就为真。 (三)非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。 例如: !(5>0) 的结果为假。 虽然C编译在给出逻辑运算值时,以“1”代表“真”,“0 ”代表“假”。 但反过来在判断一个量是为“真”还是为“假”时,以“0”代表“假”,以非“0”的数值作为“真”。例如: 由于5和3均为非“0”因此5&
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服