C第三章
c语言程序设计第三章运算符与表达式
第三章运算符和表达式3.1 运算符和表达式概述使用运算符可以对运算对象(包括常量和变量)进行计算以得到计算结果。
用运算符将运算对象连接成一个符合C语言语法规则的式称为表达式。
另外,C语言中的表达式是可以嵌套的,即简单表达式经过运算符连接后还可以形成更为复杂的表达式。
根据运算符所连接的运算对象(操作数)的个数,可以将C语言中的运算符分为三类:(1) 单目(一元)运算符:只连接一个操作数的运算符。
(2) 双目(二元)运算符:带有两个操作数的运算符。
(3) 三目(三元)运算符:同时对三个操作数进行计算的运算符。
C语言中的表达式可以分为三类:(1) 单个常量或者单个变量是最简单的表达式。
(2) 带有运算符的表达式。
(3) 函数调用。
任何一种运算都是将一定的运算符作用于一定的运算对象上,得到预期的运算结果。
所以运算对象、运算符和运算结果是运算的三大要素。
3.2 算术运算符和算术表达式一、基本算术运算符和简单算术表达式1. 基本算术运算符C语言为用户提供的基本算术运算符包括:+(加)、-(减)、*(乘),/(除)、%(求余),这些运算符都是双目运算符,也即在生成算术表达式的时,基本算术运算符左右两侧都必须出现运算对象。
2. 简单算术表达式当用基本算术运算符去连接常量或者变量时,就形成简单算术表达式。
简单算术表达式的基本形式:data1 op data2。
data1和data2表示某个常量或者变量,op代表上述5个基本算术运算符之一。
假设有变量定义:int a=20,b=-5;则a+b、a-b、a*-2、20/-b、20%6、a%b等都是简单算术表达式。
3. 基本算术运算符使用说明(1) +、-、*,/既可以连接整型数据,也可以连接实型数据。
当参与这4个运算符的运算对象都是整型数据时,得到整型数据运算结果;否则表示浮点运算。
例如,int a=15,b=2;则a*b等于30,而a/b等于7;a*2.0等于30.0,而a/2.0等于7.5。
C语言课件第三章
三、 自增、自减运算符 ++ --
++、- -运算符的作用是使变量的值加1或减1
1)该运算符为单目运算符,其运算对象只能是 变量,不能为常量或者表达式。 例如: i++ 、x- - 都是正确的 5++ 、(x+y)++ 都是错误的
2)该运算符作前缀、后缀都可以 例如 i++、++i、i- - 、- -i 都是正确的
3)对变量而言 i++ 或者++i都相当于i=i+1 i- -或者- -i都相当于i=i-1
例如: main( ) { int i=3 , j=3; +i+++i; j---j;; printf (“%d, %d\n”, i, j ); }
运行结果:4,2
4)但如果作为表达式,前缀和后缀则不同: 后缀:先取值再运算(i++,先取i值,i再自加) 前缀:先运算再取值(++i,i先自加,再取i值)
2)强制类型转换运算符优先级高于算术运算符
float x=3.6; int y; y=(int)x%3+2;
x = ?3.6 y=?2
计算下列表达式的值 设 x=2.5, a=7,y=4.7
x+a%3 * (int)(7x7+.2y ) % 2 / 4
设 a=2,b=3,x=3.5,y=2.5
(float5).(0a+b )/2+(int3)(x)%(int2)(y)
例如: main() { int i=3; printf(“%d\n”+, +i+i+ ); printf(“%d”, i ); }
C语言第3章(谭浩强)
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); } 运行结果:a+u=22,b+u=-14 结论:不同类型的整型数据可以进行算 术运算。
位数 16
取值范围 -215-(215-1) -32768—+32767 -32768—+32767
Short [int] Long [int]
短整型 长整型
16 32
16 16 32
Unsinged int 无符号整型 Unsinged short [int] Unsinged long [int] 无符号短整 型 无符号长整 型
8
④大写字母与小写字母意义不同, 被认为是两个不同的字符。一般变 量名用小写字母表示。 注意:常量名常用大写、变量名常 用小写!
year Day a_12 _abcdef #123 .com $100 1999Y a=b 1_2_3 +abcedfghi ∏ -5 等
9
3、变量要先定义后使用
可以改为double型) void main( ) {float x;double y; x=123456.789;y=123456.789; printf(“%f, %f”,x,y);} 结果为: 123456.789062, 123456.789000
29
§3.5
字符型数据
一、字符常量 1、在C语言中字符型常量是用单引号括 起来的一个字符。 如:’a‟、’A‟、’3‟、’?‟、’ ’、 ’$‟等。 2、以‚\”开头的转义字符,如\n不代表 字母n,而是代表换行。
c语言第3章 数据类型及表达式
•除 当除号两边都是整型量时,叫做整除 整除, 当除号两边都是整型量时,叫做整除,运算结果只保 留整数部分。 留整数部分。 当除号任何一边有实型量时,运算结果是实数。 当除号任何一边有实型量时,运算结果是实数。 #include <stdio.h> main() main() { float div; div=1/2; printf( %f %f\ ,div); printf(“%f\n”,div); }
–规则: 规则: 规则
–见名知意 见名知意 –不宜混淆 不宜混淆
请指出下列标识符的正误: 请指出下列标识符的正误: main、count、!count、new、5abc、if、do、L_5、who、a123、 main、count、!count、new、5abc、if、do、L_5、who、a123、 _A、_123、c#、 _A、_123、c#、r-3、printf
h e l l o , w o r l d \0 • 注意: 注意: 字符常量和字符串常量是两个不同的概念 字符常量和字符串常量是两个不同的概念
char ch; ch=‘A ; ch= A’; char ch; ch=“A ;// ;//错误 ch= A”;//错误
A
\0
\0
3.7 字符型数据
3.7.3 字符型变量
3.3 常量
常量 • 定义:程序运行时值不能改变的量,即常数。 定义:程序运行时值不能改变的量,即常数。 • 分类: 分类: 符号常量: 符号常量:用标识符表示具体值 • 定义格式: 定义格式: • 一般用大写字母 直接常量: 直接常量:直接写出具体值 • 整型常量 • 实型常量 • 字符常量 • 字符串常量 常量值 #define 标识符 常量值
C语言第3章简单程序
这种如同乱麻一样的算法称为BS型算 法,意为一碗面条(A Bowl of Spaghetti),乱无头绪。
• 三种基本结构
Bohra和Jacopini提出了以下三种基本 结构: 顺序结构、选择结构、循环结构
用这三种基本结构作为表示一个良好算 法的基本单元。
三种基本结构的图示:
顺序结构
选择结构
循环结构的图示:
主要内容
3.1 算法概述 3.2 程序的三种基本结构 3.3 C语句综述 3.4 赋值表达式和赋值语句 3.5 数据输入输出的概念 3.6 字符数据的输入输出 3.7 简单的格式输入与输出 3.8 顺序结构程序设计举例
3.1 算法概述
一个程序应包括两个方面的内容: • 对数据的描述:数据结构(data structure) • 对操作的描述:算法(algorithm) 著名计算机科学家沃思提出一个公式: 数据结构 + 算法 = 程序
includestdiohincludestdiohvoidmainvoidmain定义字符变量定义字符变量abc从键盘输入一个字符送给字符变量从键盘输入一个字符送给字符变量a从键盘输入一个字符送给字符变量从键盘输入一个字符送给字符变量b从键盘输入一个字符送给字符变量从键盘输入一个字符送给字符变量c将变量将变量aa的值输出的值输出将变量将变量aa的值输出的值输出将变量将变量aa的值输出的值输出pu• 传统流程图的弊端 传统流程图用流程线指出各框的执行 顺序,对流程线的使用没有严格限制。因 此,使用者可以毫不受限制地使流程随意 地转向,使流程图变得毫无规律,阅读者 要花很大精力去追踪流程,使人难以理解 算法的逻辑。如图:
缺点:难以阅读、修改,使算法的 传统流程图的流程可以是: 可靠性和可维护性难以保证。 解决办法:必须限制箭头的滥用, 即不允许无规律地使流程随意转向, 只能顺序地进行下去。
C语言程序设计第3章 选择结构流程和应用
2 单分支和双分支选择结构程序设计
简单if语句 if-else语句 条件运算符与条件表达式
简单if语句
学一学 简单if语句的形式为: if ( 条件表达式 ) 语句
其流程图如图3-1所示。语句的执 行过程是先计算“条件表达式”, 若值为“真”,则执行“语句”; 否则什么也不做。此处的“语句” 可以是简单语句,也可以是用一对 大括号“{ }”括起来的复合语句。
本章内容中我们将学习 1 选择结构判定条件的构成 2 单分支与双分支选择结构程序设计 3 多分支选择结构程序设计
1 选择结构判定条件的构成
关系运算符与关系表达式 逻辑运算符与逻辑表达式
关系运算符
关系运算是对两个操作数之间进行比较的运算符,其 运算结果为逻辑值(或称“布尔”值,boolean) “真”或“假”。 C语言中提供六种关系运算符,如 表3-1所示。
条件
Y
N
语句
试一试
问题3.4 从键盘输入一个数,输出其绝对值。 解题步骤 1.定义变量二个int变量iX,iY,其中iX用来接收 用户从键盘输入的数据,iY用来存放iX的绝对值。 2.从键盘输入一个整数放iX; 3.把iX放iY; 4.正数的绝对值是正数本身,负数的绝对值是其 相反数。所以,如果iX<0,则iY= -iX,否则不 需要做什么; 5.输出iX和iY。
练一练
问题:小明去参加一个同学的生日聚会, 同学的家长规定18岁以上的才可以饮酒, 所以需要编一程序根据输入的年龄打印一 张饮酒卷,使的能饮酒的同学可以获取饮 酒卷。
if-else语句
学一学 if-else语句是标准的if语句。 用来实现双分支选择结构, 其一般形式为: if ( 条件 ) 语句1; else 语句2;
C语言第3章(A-6(函数调用语句))
标准输入输出函数
printf scanf 例题: 注意: main() 必须为地址,“&”是地运算符, &a指a在内的地址。 { int a ,b ,c; scanf(“%d%d%d”, &a,&b,&c ); printf(“%d,%d,%d”,a,b,c); }
C语言程序设计
标准输入输出函数
C语言程序设计
标准输入输出函数
printf
用法:
1) %f :不指定输出的宽 度,由系统自动指定, 使整数部分全部输出, 并输出6位小数。
scanf
main() { float x,y; x=1111.2222; y=2222.4444; printf(“%f”,x+y); } 结果:3333.666608
实例:
printf(“ i= %d , c= %c ” , i , c);
格式控制:是用双引号括起来的字符串,也称为 “转换控制字符串”,它包括两部分信息: 1) 格式说明:由“%”和格式字符组成,如%d,%f等。 它的作用是将输出的数据转换为指定的格式输出。 2) 普通字符:需要原样输出的字符。如双引号中的 逗号、空格和换行符。
标准输入输出函数
printf scanf
2) %ms,输出的字符串占m列,如字符串本身长度大 于m,则按实际长度输出;如串长度小于m,则左补 空格。
printf(“%3s”,”china”);
输出结果:
printf(“%6s”,”china”);
china
china
C语言程序设计
标准输入输出函数
printf(“%ld”,e);
如果用%d输出,就会发生错误,因为整型数 据的范围为-32768-32767。
C语言 第三章 循环结构
这种循环称为嵌套循环(或多重循环),大循环 中嵌套了小循环。其中大循环(外层循环)重复 了100次,每次累加一项item,而每次累加的 item由小循环(内层循环)计算得到,内层循环 重复i次,每次连乘一项。
P68ex4-6.cpp
23
11. 嵌套循环
在累加求和的外层for语句的循环体语句中,每次计算 i!之前,都重新置item的初值为1,以保证每次计算阶 乘都从1开始连乘。 如果把程序中的嵌套循环写成下列形式: item=1; for(i=1;i<=100;i++){ for(j=1;j<=i;j++) item=item*j; sum=sum+item; } 由于将item=1放在外层循环之前,除了计算1!时item从1 开始连乘,计算其他阶乘值都是用原item值乘以新的 阶乘值。如i=1时,item=1;i=2时,item=item*1*2; i=3时,item=item*1*2*3=1!*2!*(1*2*3),而非3!, 依次类推,i=100时,item=1!*2!*3!*……100!,最 24 后得出的累加和是1!+1!*2!+……+1!*2!*3!…*100!
见文件ch3ex3.cpp
12
5. do-while语句
for语句和while语句都是在循环前先判断条件, 只有条件满足才会进入循环,如果一开始条件 就不满足,则循环一次都不执行。 do-while语句与上述两种循环语句略有不同, 它先执行循环体,后判断循环条件。所以无论 循环条件的值如何,至少会执行一次循环体。 其一般形式为。
2. 3.
4.
从键盘输入一批学生的成绩(以负数为结束标志), 计算平均分,并统计不及格成绩的个数。H
c语言程序设计第三章答案
c语言程序设计第三章答案第三章:运算符与表达式一、算术运算符在C语言中,算术运算符用于在表达式中执行各种数学运算。
常见的算术运算符有加法运算符(+)、减法运算符(-)、乘法运算符(*)和除法运算符(/)等。
1. 加法运算符(+)加法运算符用于将两个操作数相加,并返回它们的和。
例如,表达式a + b将返回a和b的和。
2. 减法运算符(-)减法运算符用于从第一个操作数中减去第二个操作数,并返回它们的差。
例如,表达式a - b将返回a和b的差。
3. 乘法运算符(*)乘法运算符用于将两个操作数相乘,并返回它们的积。
例如,表达式a * b将返回a和b的积。
4. 除法运算符(/)除法运算符用于将第一个操作数除以第二个操作数,并返回它们的商。
例如,表达式a / b将返回a除以b的商。
二、关系运算符关系运算符用于比较两个操作数并返回一个布尔值(真或假)。
常见的关系运算符有大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)和不等于(!=)等。
1. 大于运算符(>)大于运算符用于检查第一个操作数是否大于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a > b将返回真或假。
2. 小于运算符(<)小于运算符用于检查第一个操作数是否小于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a < b将返回真或假。
3. 大于等于运算符(>=)大于等于运算符用于检查第一个操作数是否大于或等于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a >= b 将返回真或假。
4. 小于等于运算符(<=)小于等于运算符用于检查第一个操作数是否小于或等于第二个操作数。
如果是,则返回真(1),否则返回假(0)。
例如,表达式a <= b 将返回真或假。
5. 等于运算符(==)等于运算符用于检查两个操作数是否相等。
C语言教程第3章 数据类型、运算符与表达式
注意以下几点:
(4) 一个整常量后面加一个字母u,认为 是unsigned int型,如12345u,在内存 中按unsigned int规定的方式存放(存储 单元中最高位不作为符号位,而用来存 储数据,见图2.4(b)。如果写成-12345u, 则先将-12345转换成其补码53191,然 后按无符号数存储。
int a; unsigned int b;
一个整数(以13为例)在存储单元中 的存储情况
3. 整型变量的定义
int a,b; (指定变量a、b为整型) unsigned short c,d; (指定变量c、d为无符号短整型) long e,f; (指定变量e、f为长整型)
例3.2整型变量的定义与使用。
字符型变量用来存放字符常量,请注 意只能放一个字符,不要以为在一个字符 变量中可以放一个字符串(包括若干字符)。 字符变量的定义形式如下: char c1,c2;
c1='a';c2='b';
3.5.3 字符数据在内存中的存储 形式及其使用方法
字符的相应的ASCII代码放到存储单元中
例3.6向字符变量赋予整数。
单精度 ( float 型 占4B) 双精度 ( double 型 占8B )
C语言 第3章 最简单的C程序设计
3.2.3 整型数据
1. 整型数据的分类 2. 整型变量的符号属性
整型变量的值的范围包括负数到正数 可以将变量定义为“无符号”类型 扩充的整形类型:
3.2.3 整型数据
扩充的整型类型:
➢ 有符号基本整型 [signed] int; ➢ 无符号基本整型 unsigned int; ➢ 有符号短整型 [signed] short [int]; ➢ 无符号短整型 unsigned short [int]; ➢ 有符号长整型 [signed] long [int]; ➢ 无符号长整型 unsigned long [int] ➢ 有符号双长整型 [signed] long long [int]; ➢ 无符号双长整型 unsigned long long [int]
3.2.2 数据类型
C语言允许使用的数据类型:
➢基本类型 ➢枚举类型
算术类型
➢空类型 ➢派生类型
纯量类型
指针类型
数组类型
结构体类型
共用体类型
函数类型
3.2.3 整型数据
1. 整型数据的分类 ➢最基本的整型类型
基本整型(int型):占2个或4个字节 短整型(short int):VC++6.0中占2个字节 长整型(long int):VC++6.0中占4个字节 双长整型(long long int):C99新增的
area s(s a)(s b)(s c)
其中s=(a+b+c)/2
编译系统为float型变量分配4个字节 数值以规范化的二进制数指数形式存放
参见主教材图3.11
3.2.5 浮点型数据
浮点型数据是用来表示具有小数点的实数 ➢float型(单精度浮点型) ➢double型(双精度浮点型)
C语言第3章_数据的输入输出
如: scanf(“%c%c%c”,&c1,&c2,&c3); 若输入a• b• c 则ac1, • c2, b c3
17/22
例:有以下程序 #include<stdio.h> main() { int a1,a2; char c1,c2; float x,y,z; char a,b,c; scanf("%d%c%d%c",&a1,&c1,&a2,&c2); printf("%d,%c,%d,%c",a1,c1,a2,c2); } 若想通过键盘输入,使得al的值为12,a2的值为34 ,cl的值为字符a,c2的值为字符b,程序输出结果是 :12,a,34,b则正确的输入格式是(以下□代表空格, <CR>代表回车)( A )。 A)12a34b<CR> B)12□a□34□b<CR> C)12,a,34,b<CR> D)12□a34□b<CR>
4/22
d(int) o x(X)
以带符号的10进制形式输出整数 以8进制无符号形式输出整数 以16进制无符号形式输出整数
u(unsighed) 以无符号10进制形式输出整数
c(char) s f(float) e(E) 以字符形式输出一个字符 输出字符串
注意: long(%ld) double(%lf)
23/22
16/22
实数不许规定小数精度,像%10.4f不合法 输入格式中不能含有\n,如: scanf(“%d%d\n”,&a,&b); long型数据一定要用%ld格式输入,double型数 据一定要用%lf格式输入,否则运行结果错误。 用‚%c”格式符时,空格和转义字符作为有 效字符输入
C语言课件 第3章 数据类型
主要掌握各种类型的常量表示,变量的定义, 所占存储空间的大小,取值范围
一,整型: 整型: 整型 用于表示整数 所占内存空间:随机器而异,一般微机 上一个整型数据占 2B 的内存空间. 整型的可用修饰符: short [int] long [int] unsigned int / unsigned short /unsigned long
3.1 C的基本语法单位 的基本语法单位
1,字符集 character set 2,关键字 keyword 3,标识符 identifier 标识符命名规则: 标识符命名规则: (1)由字母,数字及下划线组成,且不能以字母开头. (2)不能与关键字同名 (3)尽量"见名知义" 例如:下列标识符,是否合法?为什么? area if score student_no 2day month_3 int _sum no*3 &aa
整型变量的定义(或说明): 如: int a, c, no; long s; unsigned x, y; 等 整型常量: decimal: 12 -3 0 octal : 024 056 hexadecimal: 0x3A -0X34 long int : 12L 0L 问题:要定义两个变量x 问题:要定义两个变量x 和y,分别用于存放数据 1024 和 65536,如何确定x和y类型? 65536,如何确定x
由例题分析可知: 由例题分析可知: 常量: 常量:在程序的运行过程中其值不能被改变 的量.如程序中的3 的量.如程序中的3, 4 符号常量: 符号常量:用一个标识符代表一个有特定含 义的常量. 义的常量.如 PI 变量: 变量:在程序的运行过程中其值可以被改变 的量. 的量.如 r , v 提示:变量必须先定义, 提示:变量必须先定义,后使用
c语言计算机编程第3章
输入指定宽度的数据 输入:123456 结果:123 =>a 456 =>b scanf(“%3d%3d”,&a,&b); %后的“*”附加说明符,用来表示跳过它相应的数据。 输入:12□345□67 scanf(“%2d %*3d %2d”,&a,&b);
结果:12=>a 67=>b
3.2 数据输入
3.2 数据输出
⒌c格式符 用来输出一个字符。 说明: 一个整数(0~255)可以用%c的形式按字符输出。 一个字符数据也可以用整数形式输出。 可以指定输出字符的宽度。%mc 6.f格式符 用来输出实数,以小数形式输出。有以下几种用法∶ ①%f,不指定字段宽度,由系统自动指定,使整数部分全部 输出,并输出6位小数。注意:并非全部数据都是有效数字,单 精度实数的有效位数一般为7位,双 精度有效位数为15位。
3.2 数据输出
⒋u格式符 用来输出unsigned型数据,即无符号数,以十进制形式输出。 一个有符号整数也可以用%u格式输出; 反之,一个unsigned也可以用%d、%o、%x格式输出。按相 互赋值的规则处理。 main() { unsigned int a=65535; int b=-2; printf(“a=%d,%o,%x,%u\n”,a,a,a,a); printf(“a=%d,%o,%x,%u\n”,b,b,b,b); } 运行结果:-1,177777,ffff,65535 -2,177776,fffe,65534
3.2 数据输出
8.g格式符 用来输出实数,它根据数值的大小自动选择f格式或e格式, 且不输出无意义的0。 若f=123.4 则 printf(“%f□□%e□□%g”,f,f,f); 输出:123.400002□□1.23400e+02□□123.4
c 第三章 3-1烯烃
c). 取代基为不饱和链时,展开成单链比较。例如:
CH CH2 CH CH2 与第1个C相连的是C,C,H 2 1
C C C C C
∴
CH
C
1
CH
2
C
CH >
CH
与第1个C相连的是C,C,C
CH2
ex:
C
O OH
OH C O CH3 O C(O,O,O)
O C CH3
C O
O
C(O,O,C)
O C H
烯烃在常温下的状态和沸点、熔点等都和烷烃相似。 2~4个碳原子的烯烃为气体,5~18个碳原子的烯烃为 液体,19个碳原子以上的是固体。 末端烯烃(即双键位置在链端的烯烃,又称α-烯烃) 的沸点比双键位置在碳链中间的异构体低一些。 直链烯烃的沸点比带有支链的异构体略高几度。 顺式异构体的沸点一般比反式异构体高,熔点一般比 反式异构体低。 烯烃的相对密度都小于1,几乎不溶于水,但可溶 于非极性溶剂(四氯化碳等) 。
C
C
+ X2
ex: CH CH=CH + Cl 3 2 2 CH2=CH2 + Br2
CCl4
C C 邻二卤代烷 X X CH3CHCH2 1,2-二氯丙烷 Cl Cl
1,2-二溴乙烷 CH2CH2 Br Br 对同一烯烃,卤素的活性顺序: F2 >Cl2>Br2>I2
亲电加成的反应历程: ①. 干燥的烯烃通入Br2 的无水四氯化碳溶液中,不容易起反应, 加入一点水,则迅速起反应.说明 ;反应受极性物质影响. NaCl CH2 CH2 + CH2 CH2 ②. CH2=CH2 + Br2 H O 2
表现出+Ⅰ
c语言第3章
3.2.2 例题与分析
例题3.3 根据输入的加或减运算符,输出任意两个
分析本题的含义是根据用户从键盘输入的加运算符 或减运算符,在屏幕上输出相应的运算结果。首先 对题目进行分析和分解,然后再进行代码设计。问 题分析如图3.1
整型变量iop1, iop2 整型变量result 字符型变量operator
1 (x 0) y 0 (x 0)
1 (x 0)
为了避免此种情况,采用办法与情况1相似。改变 if...else的匹配关系,将情况2的代码修改如下,即 可正确表示符号函数。
if(x < 0) y = -1;
else if (x!=0) y = 1;
else y = 0;
例题3.6 求一元二次方程ax2+bx+ c = 0 分析由代数知识可知,方程的解有3种不同的情况,
/* 获得运算符 */
printf("please enter tow numbers:");/* 获得操作数 */
scanf("%d%d", &iop1, &iop2); if(operator == '+')/*由运算符决定不同运算*/
result = iop1 + iop2;
else
result = iop1 - iop2; printf("\n%d %c %d = %d\n", iop1, operator, iop2, result); /* 输出结果 */ }
方法1 main() {
int x, y; printf("please input a integer:"); scanf("%d", &x); if (x > 0) y = 1; else if (x == 0)
C语言教材 C语言教材 第3章
第3章运算符与表达式本章要点了解运算符及其表达式的概念,熟练掌握各种运算符的运算规则。
重点掌握各种运算符的优先级和结合性。
本章的难点在于自增自减运算符的正确运用。
第一节算术运算符与算术表达式C语言中基本的算术运算符有:(1)+:加法运算符,用于计算任意两个数的和。
如:3+2,结果为5;(2)-:减法运算符,用于计算任意两个数的差。
如:3.5-2,结果为1.500000;(3)*:乘法运算符,用于计算任意两个数的乘积。
如:4*3,结果为12;(4)/:除法运算符,用于计算任意两个数的商。
如:3.6/3,结果为1.200000;(5)%:模运算符(求余运算符),用于求余数。
如:13%4,结果为1。
这几个运算符要求运算符两边都有数据,即运算对象为两个,所以称为双目算术运算符。
关于算术运算符的几点说明:(1)用算术运算符和括号将运算对象连接起来的、符合C语言语法规则的式子称为算术表达式。
运算对象可以是变量、常量、函数等。
算术表达式中运算符的结合方向为“从左至右”;*,/,%运算的优先级高于+,-运算,可以使用圆括号改变优先级别。
如:表达式3+4*3/2-1,按照从左至右的顺序,先计算优先级别较高的*、/运算,4*3,结果为12,12/2,结果为6,6和左边的3进行加法运算,得到结果9,最后计算9-1,结果为8。
(2)对于除法运算“/”,如果运算符两边的运算对象都是整数,则运算结果也是整数。
如:5/2的结果为2,而不是2.5,小数部分被舍去了。
(3)对于模运算符“%”,要求其左右两边的运算对象都为整数,结果也为整数,即只有整数才能进行求余运算;(4)“+,-”运算符有时作为正值运算符(+)和负值运算符(-),此时“+、-”变为单目运算符。
如:+3,-6。
例3.1 算术运算符和算术表达式#include<stdio.h>void main(){int a=3,b=4;printf("a+b/4%2-2.5=%f\n",a+b/4%2-2.5); /* 从左至右,按照优先级别运算*/printf("4*a/b=%d,a/b*4=%d\n",4*a/b,a/b*4); /* 两个表达式结果不同,不满足数学中的交换律*/printf("9/4=%d,-9/4=%d",9/4,-9/4); /* 两个整数做除法运算,所得结果也是整数*/ }程序运行结果:a+b/4%2-2.5=1.5000004*a/b=3,a/b*4=09/4=2,-9/4=--2第二节关系运算符与关系表达式关系运算符相当于数学中的比较运算符,用于将两个值进行比较,判断比较的结果是否符合给定的条件。
C语言第3章
三、数据输入 scanf函数是C scanf函数是C语言提供的标准输入函数。它的作 用是在终端设备上输入数据。 1、scanf函数的一般调用格式 scanf函数的一般调用格式 格式:scanf(格式控制,地址项表) 格式:scanf(格式控制,地址项表); 功能:接受用户的键盘输入,并将输入的内容保 存在指定的变量所表示的地址或数组元素中。 例:用scanf函数输入数据。 例:用scanf函数输入数据。
16
2、scanf函数中常用格式说明 scanf函数中常用格式说明 格式控制与printf类似(详见教材P28)。但是 格式控制与printf类似(详见教材P28)。但是 ①输入短整数时,在% ①输入短整数时,在%和d之间必须加h;输入 之间必须加h double型数时,在% f(e)之间也必须加l double型数时,在%和f(e)之间也必须加l。否则得不 到正确的数据。 ②对unsigned型变量所需的数据,可用%u,%d或 ②对unsigned型变量所需的数据,可用%u,%d或 %o,%x格式输入。 o,%x格式输入。 ③可以指定输入数据所占列宽。如: scanf(“%3d%3d” scanf(“%3d%3d”,&a,&b); 输入:123456↙ 输入:123456↙ 系统自动将123赋给变量a 456赋给变量b 系统自动将123赋给变量a,456赋给变量b。但此 法用于字符时要注意。如:
7
例4:short int a=-1; a=printf(“%d,%o”,a,a); 输出结果为: 1,37777777777 输出结果为:-1,37777777777
短整型变量a怎么按一般整型的格式(长度) 短整型变量a怎么按一般整型的格式(长度)输出呢? 这是我们输出时没有按短整型类型输出,而是按一般 整型输出了!改为
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【思路分析】考查条件表达式中含有逻辑运算符 的情况。题目中if的条件表达式有两个要求,一 个是if(x<一3);另一个是else if(x! =10),那么 分析程序运行情况,在x为大于3且不等10的整数 时,总是会有输出结果的,而其他x的取值则不 会有输出结果,因为不会执行语句printf(”%d\rf, x); 答案B
无锡润智图书有限公司制作
二、填空题
1.C语言中用_______表示逻辑值“真”,用_______表示逻辑“假 2.C语言的关系运算符中,______、 ______、 ______、 _______优先级高于__________ 、___________。 3.C语言中,逻辑运算符按优先级从高低排列,依次为___ 、 ______ 、______。 4.C语言中,逻辑运算符_______的优先级高于算术运算符%。 5.与数学式a=b或a≠c对应的C语言表达式是_______。 6.与数学|a|<20对应的C语言表达式是_______。 答案:1.非0 0 2.> < >= <= == != 3.! && || 4.! 5.a==b||a!=c 注意:不能写成a=b||a<>c。 6.a<20&&a>-20
无锡润智图书有限公司制作
【思路分析】本题考查的重点是分段数学公式的 求解。选项D是正确的,它是用问号表达式 “expl? exp2:exp3”来代替if_else语句,其运 算过程是:先对expl求值,如果expl值为真,对 exp2求值并将所求结果作为整个问号表达式的值。 若expl的值为假,对exp3求值并将结果作为整个 问号表达式的值。因而程序“y= sqrt(x>=0?x:x)”是先判断x>=O,若为真,则计算结果为 sqrt( X),否则计算结果为sqrt( - X),且该函数 包含于math.h头文件中。 答案:D
无锡润智图书有限公司制作
(三)课堂总结
1、逻辑运算的结果用逻辑值“真”或“假”表示。 通常用0代表“假”,用非0代表“真”。 2、用关系运算符(<、<=、>、>=、==、!=)将两个 表达式连接起来的式子,称关系表达式。 3、逻辑运算符的优先次序: !(高)——&&(中)——||(低) 4、用逻辑运算符将关系表达式或逻辑值连接起来的 式子称逻辑表达式。
无锡润智图书有限公司制作
(三)课堂总结 1、C语言中提供了3种形式的if语句:不合else的if 语句、if-else语句和if-else-if语句。 2、if和else的配对规则为:else总是与它前一个最 近的if配对。 3、条件表达式的一般形式为:表达式 ? 表达式2 : 表达式3
无锡润智图书有限公司制作
【问题2]已知字母A的ASCII码值为65,若变量kk为char型, 以下不能正确判断出kk中的值为大写字母的表达式是___。 A)kk>=’A’&& kk<=’Z’ B)!(kk>=’A’||kk<=’Z’) C)(kk+32)>=’a’&&(kk+32)<=’z' D) isalpha(kk)&&(kk<91) 【思路分析】 本题主要考查逻辑运算。对于正确判断kk为大写字母的表 达式,当表达式为真时,kk为大写字母。大写字母的 ASCII码值在65~90之间,对应的小写字母的ASCII码值在 97~122之间,因此选项A、C都是正确的表达式。选项D中 isalpha(kk)用于判断kk是否是字母,ASCH代码值小于91 的字母为大写字母,因此选项D是正确的表达式。选项B中 的表达式可以转换为kk<'A’&& kk>’z’,无法判断kk中的值 是否为大写字母。 答案:B 无锡润智图书有限公司制作
【思路分析】本题主要考查 嵌套的if语句。C语言规定: else子句总是与最前面最近的 不带else的if相结合,与书写 格式无关。本题中的el。。 语句与第二个if语句配对。 x-l,y=2,x>y不成立,直接 退出if语句,执行 printf(”%d\r”,x++);,首 先输出x的值1,然后将x的值 加1。
C语言
无锡润智图书有限公司
无锡润智图书有限公司制作
第三章
一、考试要求 了解
选择结构程序设计
掌握
理解
C语言 中的 逻辑 值
理解if语句的执行过程
switch语句的执行过程 continue、break语句在 switch中的作用
常见的六种关系运算 符、三种逻辑运算符 及其优先级,掌握关 系表达式、逻辑表达 式的运算 if语句的格式 条件运算符 ? :和 条件表达式 switch语句的一般形 式
无锡润智图书有限公司制作
二、本章节近年考点分析
无锡润智图书有限公司制作
ቤተ መጻሕፍቲ ባይዱ
三、课堂探析
(一)问题探析
(二)巩固练习
(三)课堂总结
无锡润智图书有限公司制作
第一节
关系运算符和逻辑运算符
课堂探析
无锡润智图书有限公司制作
(一)问题探析 【问题1】 (2009年3月)有以下程序: # include<stdio. H> main() { int x scanf(”%cr,&x); if(x<=3); else if(x!=10) printf(-% d\n,x); } 程序运行时,输入的值在哪个范围才会有输出结果_____。 A)不等于10的整数 B)大于3且不等10的整数 C)大于3或等于10的整数 D)小于3的整数
4、表达式a+=a-=a=9的值是________________ 。 D A. 9 B. -9 C. 18 D. O 5、若k是int型变量,且不下面的程序片段: K=-3; If(k<=0) printf(“####”); Else printf(“&&&&”); 上面程序片段的输出结果是________ 。 D A. #### B. &&&& C. ####&&&& D.有语法错误,无输出结果
【问题3】当变量c的值不为2、4、6时,值也为“真”的表 达式是____。 A)(c==-2)||(c==-4)||(c==-6) B)(c>-2)&&(c<-6)||(c!=-3)||(c!=5) C)(c>-2)&&(c<-6)&&!(c%2) D)(c>-2 )&&(c<-6)&&(c%2==1) 【思路分析】选项A表示当变量c的值为2、4、6中的 任意一个时,表达式的值为真,不满足条件;选项 B表示,当c的值不等于3时为真,c的值不等于5时为 真,-2<c<-6时为真,可见当c的值为2、4、6时满足 条件,c为其他的值也可满足条件,如c =8;选项C 表示,-2<c<-6并且c要能被2整除时表达式的值为 真,满足条件的值只有2、4、6;选项D中的表达式 可以转换为选项C,同样是不满足条件的。
无锡润智图书有限公司制作
【问题2】有以下程序: # include <stdio. h> main() ( int x=1,y=2,z=3; if(x>y) if(y<z) printf(“%d”,++z); else printf(“%d”,++y); printf(”%d\r”,x++); ) 程序运行的结果是_____。 A. 3 31 B. 4 1 C. 2 D. 1 答案:D
无锡润智图书有限公司制作
【问题4】 下列能满足 “当x的值为奇数时值为真”的表达式是________。 A. x%2==0 B. !x%2!=0 C. (x/2*2-x)!=0 D. !(x%2)
【思路分析】当x的值为奇数时,x%2==0为假,故选项A是 错的。选项B中运算符“!”的优先级最高,其次是“%”, 最低的是“!=”。当x的值为奇数时,x!=0,x为真,!x为假 (0),0%2等于0,0!=0为假,故选项B是错的。选项C中,不 管x是奇数还是偶数,x/2*2一定是偶数,因为x/2*2可以看成 (x/2)*2,当x的值为奇数时,偶数减奇数一定不为0,故(x/2*2x)!=0为真,故选项C是对的。当x的值为奇数时,x%2等于 1,!1为假,即!(x%2),故选项D是错的。 答案:C
答案:B
无锡润智图书有限公司制作
【问题4】以下程序运行后的输出结果是____。 # include <stdio. h> main() { int x=20; printf(“%d”,O<x<20); printf(“%d”,0<x&&x<20) 【思路分析】本题考查关系表达式和逻辑表达式的运算。 在表达式O<x<2中,“<”运算符是自左至右的结合方向 , 先执行“0<X ”,得值1,再执行“x<20”得值1。在表达 式 O< x&&x<20中逻辑运算符“&&”右边的值为0,所以表达 式值为O,调用printf函数输出上述值。 答案:1 0
无锡润智图书有限公司制作
(二)巩固练习 一、选择题 1.若要求在if后一对圆括号中表示a不等于0的关系,则能 正确表示这一关系的表达式为_______ 。 D A) a<>0 B) !a C) a=0 D) a
2.为表示关系x≥y≥z,应使用的表达式_______ 。 C A) (x>=y) and (y>=z) B) x>=y>=z C) x>=y&&y>=z D)(x>=y)&(y>=z) 3.为表示关系x>=y或x<=z,应使用的表达方式是______ 。 D A)(x≥y)||(x≤z) B) (x>=y)OR(x<=z) C ) (x>=y) | (x<=z) D) !(x<y)&&(x>z) 4.设a、b和c都是int型变量,且a=7,b=18,c=29;则以下表 达式中,值为0的表达式是____ B 。 A) a<=b B)!(a<b)&&!(c||1) C)a||b+c&&b-c D)a&&b