版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据类型、运算符与表达式第一页,共一百一十页,2022年,8月28日本章主要知识点
基本的数据类型数据类型转换常量和变量C语言各种运算符和表达式第二页,共一百一十页,2022年,8月28日基本数据类型深入理解变量第9次课第三页,共一百一十页,2022年,8月28日C语言的数据类型单精度实型(float)双精度实型(double)整型(int)字符型(char)枚举类型数组类型结构体类型共用体类型实型基本类型构造类型空类型(void)指针类型数据类型第四页,共一百一十页,2022年,8月28日任务提出:eg2_1:有如下任务,当某学生输入自己的学号和姓名及两门课程的成绩后,能够在控制台看到自己的总成绩。试编程解决该任务。第五页,共一百一十页,2022年,8月28日任务分析:eg2_1程序中涉及到哪些类型的常量或变量?需要调用哪些标准库函数?第六页,共一百一十页,2022年,8月28日
任务解决:/*功能:计算某位学生的总分*/#include<stdio.h>main(){ charno[10],name[10]; intenglish_score,c_score; printf("请输入你的学号:"); scanf("%s",no); printf("请输入你的姓名:"); scanf("%s",name); printf("请输入你的大学英语成绩:"); scanf("%d",&english_score); printf("请输入你的C语言成绩:"); scanf("%d",&c_score); printf("你的总成绩是:%d\n",english_score+c_score);}第七页,共一百一十页,2022年,8月28日“数据类型”的意义:定义了数据占用的内存空间大小定义了数据在内存中的存储格式决定了数据的运算规则(自身的行为)为编译器提供了检查依据数据类型的意义数据类型是避免程序错误的初级(基本)手段,不是全部手段;第八页,共一百一十页,2022年,8月28日1.整型数据2.实型数据3.字符型数据数据的存储格式、范围第九页,共一百一十页,2022年,8月28日整型数据分为一般整型(int)、短整型(short)和长整型(long),并且每一种类型又分为带符号(signed)和无符号(unsigned)两种类型。整型数据的特性见下表:
数据类型名说明VisualC++6.0环境TurboC2.0环境字节取值范围字节取值范围short[int]短整型2-32768~327672-32768~32767signedshort[int]带符号短整型2-32768~327672-32768~32767unsignedshort[int]无符号短整型20~6553520~65535int整型4-2147483648~21474836472-32768~32767signed[int]带符号整型4-2147483648~21474836472-32768~32767unsigned[int]无符号整型40~429496729520~65535long[int]长整型4-2147483648~21474836474-2147483648~2147483647signedlong[int]带符号长整型4-2147483648~21474836474-2147483648~2147483647unsignedlong[int]无符号长整型40~429496729540~4294967295整型数据分类及取值范围第十页,共一百一十页,2022年,8月28日eg2_2:观察以下程序的运行结果。/*功能:观察溢出*/#include<stdio.h>main(){ shortnum=32768; printf(“%d\n”,num);}运行结果如下图所示:整型数据的取值范围实例第十一页,共一百一十页,2022年,8月28日实型数据分为单精度实型(float)、双精度实型(double)和长双精度实型(longdouble)。具体情况见下表所示
:
数据类型名说明VisualC++6.0环境TurboC2.0环境字节取值范围有效数字字节取值范围有效数字float单精度实型4-3.4×1038~3.4×10386~74-3.4×1038~3.4×10386~7double双精度实型8-1.7×10308~1.7×1030815~168-1.7×10308~1.7×1030815~16longdouble长双精度实型815~1610-1.2×104932~1.2×10493218~191.7×10308~1.7×10308实型数据分类第十二页,共一百一十页,2022年,8月28日字符型数据分为一般字符型(char)、带符号字符型(signedchar)和无符号字符型(unsignedchar)三种类型。具体情况见下表所示
:
数据类型名说明字节取值范围char字符型1-128~127signedchar带符号字符型1-128~127unsignedchar无符号字符型10~255字符型数据分类
第十三页,共一百一十页,2022年,8月28日(1)数据类型:C语言的合法数据类型。如例中的int、short、char、float、double等。
(2)变量名表:变量名是C语言合法的标识符。变量名表可以包含多个变量名,彼此之间使用逗号分开,表示同时定义若干个具有相同数据类型的变量,如:
floata,b;1.变量定义变量定义一般格式:数据类型变量名表;如:inta;对变量定义说明如下:
变量是指在程序执行过程中其值可以被改变的量。变量定义的实质是按照变量说明的数据类型为变量分配相应空间的存储单元,在该存储单元中存放变量的值。
C语言中,变量使用时遵循“先定义,后使用”的原则。变量第十四页,共一百一十页,2022年,8月28日2.变量的命名
标识符作用:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线大小写敏感不能使用关键字长度:最长32个字符命名原则:见名知意不宜混淆如1与I,o与0例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$1233days#33char$123a>b第十五页,共一百一十页,2022年,8月28日MemoryValue(5)Name(a)Type
(short)shorta=5;/*申请空间并初始化*/一个变量必然包含以下概念:名字(变量名)类型(变量占用空间)值(变量的内容)地址(变量在内存中所处的位置)字节Address3.变量的存储模式第十六页,共一百一十页,2022年,8月28日/*eg2_3功能:计算两个整数的和*/#include<stdio.h>main(){intnum1=2;intnum2,sum;num2=3;sum=num1+num2;printf("num1+num2=%4d\n",sum);}4.变量的初始化及赋值初始化赋值第十七页,共一百一十页,2022年,8月28日模仿练习:ex2_1:有如下任务,当某学生输入自己的学号和姓名及两门课程的成绩后,能够在控制台看到自己的平均成绩。试编程解决该任务。第十八页,共一百一十页,2022年,8月28日讨论并总结为什么要定义数据类型?不同数据类型的区别是什么?第十九页,共一百一十页,2022年,8月28日结论1——定义数据类型的作用定义了数据占用的内存空间大小定义了数据在内存中的存储格式决定了数据的运算规则(自身的行为)为编译器提供了检查依据第二十页,共一百一十页,2022年,8月28日结论2——不同数据类型的区别
内存空间大小不同数据表示有效位数不同数据表示范围不同对应的运算和操作不同第二十一页,共一百一十页,2022年,8月28日第10次课常量的定义和使用认识符号常量第二十二页,共一百一十页,2022年,8月28日一般用大写字母是宏定义预处理命令,不是C语句直接常量:整型常量请点击:实型常量请点击:字符常量请点击:字符串常量请点击:如#definePRICE30定义:程序运行时其值不能改变的量(即常数)分类:符号常量:用标识符代表常量定义格式:#define
符号常量常量/*计算消费总额*/#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}运行结果:total=300常量/*eg2_4功能:计算并输出圆周率的和差积商*/#definePI3.14#include<stdio.h>main(){printf("%f\t%f\t%f\t%f\n",PI+PI,PI-PI,PI*PI,PI/PI);}第二十三页,共一百一十页,2022年,8月28日三种形式:十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0Xff例12与12L例30000为int型
65536为longint型整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是longint
型常量问题:0123=()100x123=()100Xff=()1083291255问题:0123=()100x123=()100Xff=()10整型常量(整常数)第二十四页,共一百一十页,2022年,8月28日在C语言中,整型常量有十进制、八进制、十六进制三种进制表示方法,并且各种数制均可有正(+)负(-)之分,正数的“+”可省略。
/*eg2_5功能:输出某整数的各种进制值*/#defineNUM20#include<stdio.h>main(){printf("%d\t%o\t%x\n",NUM,NUM,NUM);}整型常量实例第二十五页,共一百一十页,2022年,8月28日表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,
实型常量的类型默认double型在实型常量后加字母f或F,认为它是float型实型常量(实数或浮点数)第二十六页,共一百一十页,2022年,8月28日第11次课课后习题错误评讲初步的调试技巧常量练习第二十七页,共一百一十页,2022年,8月28日定义:用单引号括起来的单个普通字符或转义字符.
字符常量的值:该字符的ASCII码值<转义字符及其含义:转义字符含义\n\v\r\a\‘\ddd\t\b\f\\\“\xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------()例:‘A’-------’\101’-------’\x41’--------65如‘A’——65,‘a’——97,
‘0’——48,‘\n’——10如‘a’‘A’‘?’‘\n’‘\101’转义字符:反斜线后面跟一个字符或一个代码值表示/*转义字符举例*/main(){printf("\101\x42C\n");printf("Isay:\"Howareyou?\"\n");printf("\\CProgram\\\n");printf("Turbo\'C\'");}运行结果:(屏幕显示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例main(){printf(“Y\b=\n”);}运行结果:屏幕显示:=打印机输出:¥字符常量第二十八页,共一百一十页,2022年,8月28日28/*eg2_6功能:输出某字符常量的值*/#include<stdio.h>main(){printf("%c\t%c\n",'a','A');printf("%d\t%d\n",'a','A');}字符型常量实例
第二十九页,共一百一十页,2022年,8月28日字符常量与字符串常量不同定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘\0’
作为字符串结束标志hello\0例字符串“hello”在内存中a
a\0例‘a’“a”例空串“”\0例:charch;ch=“A”;例:charch;ch=‘A’;字符串常量第三十页,共一百一十页,2022年,8月28日模仿练习请找出一些常量中哪些是整数、字符、字符串。0x34f 0121010‘a1’‘\101’“”“a”07810‘\f’第三十一页,共一百一十页,2022年,8月28日讨论并总结使用符号常量的优势是什么?字符串常量的存储特点?第三十二页,共一百一十页,2022年,8月28日第12次课实践练习第三十三页,共一百一十页,2022年,8月28日作业——每人必做设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积。用scanf输入数据,输出计算结果,输出时要有文字说明,取小数点后2位数字。输入一个华氏温度,要求输出摄氏温度,取2位小数。公式为:c=5/9(F-32)。输入一名学生的三科成绩(假设都是整型),请统计该学生的总分及平均分,并分析平均分的计算是否正确。第三十四页,共一百一十页,2022年,8月28日第13次课数据类型间的转换算术运算符及表达式第三十五页,共一百一十页,2022年,8月28日问题引入1、如何输出一个指定字母的ASCII码值?2、如何正确输出5/2的结果?第三十六页,共一百一十页,2022年,8月28日
问题1求解/*输出制定字母的ASCII码值*/#include<stdio.h>main(){ printf("%c\t%d",'a','a');}第三十七页,共一百一十页,2022年,8月28日
问题2求解/*输出5除2的结果*/#include<stdio.h>main(){floatx=5.0;inty=2;floatz=x/y; printf("%f",z);}第三十八页,共一百一十页,2022年,8月28日隐式转换什么情况下发生运算转换------不同类型数据混合运算时赋值转换------把一个值赋给与其类型不同的变量时输出转换------输出时转换成指定的输出格式函数调用转换------实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型不同类型数据间的转换第三十九页,共一百一十页,2022年,8月28日doublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换
charch;inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a’+i*f-d/l例2inti;floatf;doubled;longl;例1第四十页,共一百一十页,2022年,8月28日模仿练习1.编写一个打印任意字母ASCII码值的程序。2.用强制转换改写问题2。第四十一页,共一百一十页,2022年,8月28日一般形式:(类型名)(表达式)例:(int)(x+y)(int)x+y(double)(3/2)(int)3.6
说明:强制转换得到所需类型的中间变量,原变量类型不变
例main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}结果:x=3.600000,i=3较高类型向较低类型转换时可能发生精度损失问题显式转换(强制转换)第四十二页,共一百一十页,2022年,8月28日讨论并总结不同的数据类型进行运算,运算规则是什么?第四十三页,共一百一十页,2022年,8月28日分类名称运算符算术运算符+、-、*、/、%、++、--关系运算符<、<=、>、>=、==、!=逻辑运算符&&、||、!位运算符<<、>>、~、|、^、&赋值运算符=及其扩展赋值运算符条件运算符?:逗号运算符,指针运算符*、&求字节数运算符sizeof强制类型转换运算符(类型)分量运算符.、->下标运算符[]其他函数运算符()1.运算符2.表达式用运算符将操作对象连接起来、符合C语法规则的式子称为表达式。运算符和表达式第四十四页,共一百一十页,2022年,8月28日运算符功能与运算量关系要求运算量个数要求运算量类型运算符优先级别结合方向结果的类型学习运算符应注意第四十五页,共一百一十页,2022年,8月28日问题引入
如何编写一个能进行五则混合运算的简易计算器程序?功能包括求两个整数的和、差、积、商以及两数相除的余数,如何表示?结论:运用算术运算符及表达式第四十六页,共一百一十页,2022年,8月28日基本算术运算符:+-*/%结合方向:从左向右优先级:----->*/%----->+-
(2)(3)(4)
说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据例5/2=-5/2.0=例5%2=-5%2=1%10=
5%1=5.5%2算术运算符和表达式2-2.51-110()第四十七页,共一百一十页,2022年,8月28日
问题求解#include<stdio.h> /*和、差、积、商以及两数相除的余数*/voidmain(){ intoper1=10,oper2=100,add,sub,mult,div,mod; /*操作数和存放结果的变量定义*/ add=oper1+oper2; /*两数和*/ sub=oper1-oper2; /*两数差*/ mult=oper1*oper2; /*两数积*/ div=oper1/oper2; /*两数商*/ mod=oper1%oper2; /*两数模*/ printf(“\n两数和为%d,两数差为%d,两数积为%d,两数商为%d,两数模为%d”,add,sub,mult,div,mod); /*结果输出*/}第四十八页,共一百一十页,2022年,8月28日模仿练习1.输入两个整数,要求输出它们的和、差、积、商及余数。2.输入一名学生的三科成绩(假设都是实型),请统计该学生的总分及平均分。
第四十九页,共一百一十页,2022年,8月28日第14次课复习赋值运算符及表达式自增、自减运算符及表达式第五十页,共一百一十页,2022年,8月28日简单赋值运算符符号:=格式:变量标识符=表达式作用:将一个数据(常量或表达式)赋给一个变量复合赋值运算符种类:+=-=*=/=%=《=》=&=^=|=含义:exp1op=exp2
exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例a=3;d=func();c=d+2;赋值运算符和表达式第五十一页,共一百一十页,2022年,8月28日结合方向:自右向左优先级:14左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例3=x-2*y;a+b=3;例
floatf;inti;i=10;f=i;则
f=10.0例inti;i=2.56;//结果i=2;例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)//表达式值为5,a,b,c值为5//b=5;a=5//表达式值11,c=6,a=11//表达式值10,a=10,b=4,c=6//表达式值5,a=5,b=10,c=2说明(1):
第五十二页,共一百一十页,2022年,8月28日结合方向:自右向左优先级:12
左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例:a=12;a+=a-=a*a例:inta=2;a%=4-1;a+=a*=a-=a*=3;//a=-264等价于a=a+(a=a-(a*a))//a=0等价于a=a+(a=a*(a=a-(a=a*3)))说明(2):
第五十三页,共一百一十页,2022年,8月28日赋值运算符及赋值表达式简单赋值运算符及其表达式赋值运算符是“=”,其作用是将赋值运算符右侧的表达式的值赋给其左侧的变量。值得注意的是:赋值运算符运算对象中的左侧对象一定是变量。如:a=b-c=5;相当于a=((b-c)=5);,由于表达式中出现将数值5赋给b-c表达式,因此,该表达式是非法的。返回本节目录第五十四页,共一百一十页,2022年,8月28日问题引入当变量的值每次递增/递减1时,i=i+1、i+=1i=i-1、i-=1能否有更简洁的形式?第五十五页,共一百一十页,2022年,8月28日问题分析扩展的算术运算符++(自增)、--(自减)运算符,可将增1/减1运算表示为:i++或++i(注:放在变量前和变量后含义不同)i--或--i第五十六页,共一百一十页,2022年,8月28日作用:使变量值加1或减1种类:前置++i,--i(先执行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再执行i+1或i-1)例j=3;k=++j;j=3;k=j++;j=3;printf(“%d”,++j);j=3;printf(“%d”,j++);a=3;b=5;c=(++a)*b;a=3;b=5;c=(a++)*b;//k=4,j=4//k=3,j=4//4//3//c=20,a=4//c=15,a=4自增、自减运算符++--第五十七页,共一百一十页,2022年,8月28日作用:使变量值加1或减1种类:前置++i,--i(先执行i+1或i-1,再使用i值)后置i++,i--(先使用i值,再执行i+1或i-1)说明:++--不能用于常量和表达式,如5++,(a+b)++++--结合方向:自右向左优先级:-++-------->*/%----->+-
(2)(3)(4)例-i++-(i++)i=3;printf(“%d”,-i++);//-3
例j+++k;(j++)+k;例-i++i=3;printf(“%d”,-i++);
自增、自减运算符++--第五十八页,共一百一十页,2022年,8月28日扩展算术运算符举例#include<stdio.h>voidmain(){ inti,j,k,l; i=3; j=7; k=i++; l=j--; printf("i=%d,",i); printf("j=%d\n",j); printf("k=%d,",k); printf("l=%d\n",l); i=++i; j=--j; printf("i=%d,",i); printf("j=%d\n",j); printf("k=%d,",k); printf("l=%d\n",l);}自增、自减运算符实例。程序的运行结果如下:第五十九页,共一百一十页,2022年,8月28日模仿练习y=5,执行完y++;后,y的值是?y=5,执行完++y;后,y的值是?y=5,执行完x=y++;后,x的值是?y的值是?y=5,执行完x=++y;后,x的值是?y的值是?第六十页,共一百一十页,2022年,8月28日自增、自减运算符总结
自增(++)和自减(--)运算符是单目运算符,其功能是使运算对象(变量)的值增1或减1。它们既可以作前缀运算符(位于运算对象的前面),如++i,--i;也可以作后缀运算符(位于运算对象的后面),如i++,i--。前缀和后缀运算的数据处理方法有明显的差异。对于前缀形式表示在用该表达式之前先使变量值增(减)1;对于后缀形式表示在用该表达式的值之后使n的值增(减)1。++j,--j在使用j之前,先使j的值加(减)1。j++,j—
在使用j之后,使j的值加(减)1。返回本节目录自增或自减运算符在使用时,需要注意以下几点:(1)运算符的操作对象,只能是变量,而不能作用于常量或表达式。运算符的优先级高于基本算术运算符,结合性是“自右向左”右结合。(2)i++,遵照右结合原则,它相当于-(i++),而不相当于(-i)++形式。第六十一页,共一百一十页,2022年,8月28日讨论并总结%运算符可以对其他类型进行运算吗?++和--运算符的位置和放在操作数的前面和后面的区别?第六十二页,共一百一十页,2022年,8月28日结论1——%运算符的操作数类型%运算符两侧的操作数只能为整型%运算的结果的符号和被除数相同(被除数为正,余数为正,被除数为负,余数为负)其它类型若进行%运算,先进行强制类型转化第六十三页,共一百一十页,2022年,8月28日
结论2——++和--为前缀与后缀的区别
对于前缀形式表示在用该表达式之前先使变量值增(减)1;对于后缀形式表示在用该表达式的值之后使n的值增(减)1。++j,--j在使用j之前,先使j的值加(减)1。j++,j—在使用j之后,使j的值加(减)1第六十四页,共一百一十页,2022年,8月28日学以致用一个数能够整除另一个数如何表达?一个数是偶数/奇数如何表达?生活中常见的例子,银行中已知利率2.5%,存入5000元1年后共能够取出多少钱?已知某人的工资,要计算个人所得税等等。用C语言来描述计算
第六十五页,共一百一十页,2022年,8月28日第15次课复习关系运算符和表达式条件运算符和表达式第六十六页,共一百一十页,2022年,8月28日复习1、设x=2.5,a=7,y=4.7,求表达式的值: x+a%3*(int)(x+y)%2/4-92、找出合法的赋值表达式:x=3 x=3+3 x=y x=y+2 x=y=3 3=yx+2=1 x+2=y x=x+3-6.5第六十七页,共一百一十页,2022年,8月28日复习y=5,执行完y++;后,y的值是?y=5,执行完++y;后,y的值是?y=5,执行完x=y++;后,x的值是?y的值是?y=5,执行完x=++y;后,x的值是?y的值是?写出下列赋值表达式的等同自反赋值表达式:x+=y x-=3x*=3+yx/=3x%=3x=x+yx=x-3x=x*(3+y)x=x/3x=x%3第六十八页,共一百一十页,2022年,8月28日问题引入1、星光大道评委正在给最后决赛的两名选手打分,到底谁是冠军呢?我们现在只能根据最后的总分来决定。结果由选手的成绩要进行比较得出。2、输入两个任意的整数,比较并输出较大数。第六十九页,共一百一十页,2022年,8月28日问题分析表示两个操作数或表达式的大小关系,采用关系运算符第七十页,共一百一十页,2022年,8月28日关系运算符种类:<<===>=>!=结合方向:自左向右优先级别:<<=>>===!=优先级10(高)优先级9(低)例c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)关系表达式的值:是逻辑值“真”或“假”,用1和0表示例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>bf=a>b>c//表达式值1//表达式值1//表达式值0//d=1//f=0关系运算符和表达式第七十一页,共一百一十页,2022年,8月28日例inti=1,j=7,a;a=i+(j%4!=0);
则a=2例‘a’>0结果为‘A’>100结果为10关系运算符及表达式举例第七十二页,共一百一十页,2022年,8月28日关系运算符及表达式举例返回本节目录#include<stdio.h>voidmain(){
inta,b; printf("a="); scanf("%d",&a); printf("b="); scanf("%d",&b); printf("a>b:%d\n",a>b); printf("a<b:%d\n",a<b); printf("a>=b:%d\n",a>=b); printf("a<=b:%d\n",a<=b); printf("a==b:%d\n",a==b); printf("a!=b:%d\n",a!=b);}观察以下程序的结果。按下图录入的结果是:第七十三页,共一百一十页,2022年,8月28日模仿练习使用关系表达式描述两个选手成绩sa和sb的关系:A是冠军,B是亚军A是亚军,B是冠军成绩相同,需要加时赛第七十四页,共一百一十页,2022年,8月28日
C语言中的关系运算符共有六种,它们是:
> < >= <= != ==大于小于 大于等于小于等于 不等于 等于关系运算符的运算结果为0(假)或为1(真)关系表达式的优先级:低于算术运算符、高于逻辑运算符其中!=和==符号低于>,<,>=,<= 关系运算符及表达式总结a>b==c>d(a>b)==(c>d)第七十五页,共一百一十页,2022年,8月28日问题2解决2、输入两个任意的整数,比较并输出较大数。main(){ intn1,n2; scanf(“%d%d”,&n1,&n2);
………./*如果n1>n2,则*/ printf(“max=%d\n”,n1);
………/*如果n1<n2,则*/ printf(“max=%d\n”,n2);}第七十六页,共一百一十页,2022年,8月28日第16次课条件运算符及表达式第七十七页,共一百一十页,2022年,8月28日
条件运算符及表达式条件运算符是“?:”,是C语言中唯一的三目运算符,用条件运算符将两个表达式连接起来的符合C语法规则的式子称为条件表达式。2.条件表达式的一般形式:
表达式1?表达式2:表达式3;
操作过程:先计算表达式1的值,若为“真”,则计算表达式2的值,整个条件表达式的值就是表达式2的值;若表达式1的值为“假”,则计算表达式3,整个条件表达式的值就是表达式3的值。
条件运算符优先级低于算术运算符,其结合性是右结合。
返回本节目录第七十八页,共一百一十页,2022年,8月28日条件表达式举例inta,b,c,max;(a>b)?a:b;max=(a>b?a:b);a>b?a:(b>c?b:c);a>b?a:(b+1);a>b?a:bmax=a>b?a:ba>b?a:b>c?b:ca>b?a:b+1第七十九页,共一百一十页,2022年,8月28日运算符的优先级表第八十页,共一百一十页,2022年,8月28日模仿练习1、学校根据同学的总评成绩评一、二、三等奖学金,总评成绩为90分及以上为一等奖学金、88分及以上为二等奖学金,85分及以上为三等奖学金。你的奖学金是几等呢?2、判断并输出三个任意整数中的最大值?第八十一页,共一百一十页,2022年,8月28日问题1求解#include<stdio.h>voidmain(){floatscore;printf("请输入总评成绩:");scanf("%f",&score);(score>=90)?printf("一等奖学金"):(score>=88)?printf("二等奖学金"):(score>=85)?printf("三等奖学金"):printf("没有奖学金");}第八十二页,共一百一十页,2022年,8月28日问题2求解 #include<stdio.h>
main()
{
inta,b,c,max;
printf("Inputthreenumbers:");
scanf("%d%d%d",&a,&b,&c);
max=a>b?a:(b>c?b:(c>a?c:a));
printf("max=%d\n",max);
}
第八十三页,共一百一十页,2022年,8月28日小组讨论并总结比较赋值运算(=)符和等于(==)的区别关系运算符的结果是什么?条件运算表达式如何计算?第八十四页,共一百一十页,2022年,8月28日结论1——赋值运算符和等于运算符比较赋值运算符表示为=,其结果为将=右边的值赋给左边的变量,左边只能为变量等于运算符表示为==,其结果为逻辑值真和假,不修改任何变量的值,左右两边可为常量或变量第八十五页,共一百一十页,2022年,8月28日
结论2——关系运算符的结果关系运算符的结果为0(假),1(真)
第八十六页,共一百一十页,2022年,8月28日
结论3——条件运算符的运算方法
表达式1?表达式2:表达式3;
操作过程:先计算表达式1的值,若为“真”,则计算表达式2的值,整个条件表达式的值就是表达式2的值;若表达式1的值为“假”,则计算表达式3,整个条件表达式的值就是表达式3的值。条件运算符可以嵌套,过程与上类似第八十七页,共一百一十页,2022年,8月28日学以致用运动会上,跳高场上A同学跳的比B同学高,如何表示?
100米短跑,A同学比B同学跑得快,如何表示?找一些生活中常见的例子,用比较运算表达式描述。第八十八页,共一百一十页,2022年,8月28日第17次课实践练习第八十九页,共一百一十页,2022年,8月28日作业——每人必做1、用条件表达式描述:取三个数的最大者。2、输入一名学生的某科成绩,输出等级。成绩>=85等级:A成绩>=70等级:B成绩>=60等级:C成绩<60等级:D第九十页,共一百一十页,2022年,8月28日学以致用:找一些生活中常见的例子,用条件运算表达式描述例如:某银行存款5万块以上可以办金卡、存款20万以上可以办VIP特种卡,其余为一般信用卡,根据存款金额判断某用户的银行卡种类。
第九十一页,共一百一十页,2022年,8月28日第18次课复习逻辑运算符及表达式第九十二页,共一百一十页,2022年,8月28日问题引入
已知年份,要判断该年是否为闰年?(该年份能够被400整除,或者能够被4整除并且不能被100整除)第九十三页,共一百一十页,2022年,8月28日问题分析表示两个操作数或表达式能够同时满足多个条件或满足多个条件之一,采用逻辑运算符第九十四页,共一百一十页,2022年,8月28日问题解决返回本节目录#include<stdio.h> /*该程序利用逻辑表达式判断是否为闰年*/voidmain(){intyear;printf("请输入年份判断是否为闰年:");scanf(“%d”,&year); /*输入年份*/year%400==0||(year%4==0&&year%100!=0)?printf(“该年为闰年。”):printf("该年不是闰年。");
/*逻辑表达式*/ }判断输入的年份是否为闰年?第九十五页,共一百一十页,2022年,8月28日模仿练习1、判断字符ch是否为大写字母的表达式2、判断字符ch是否为字母的表达式第九十六页,共一百一十页,2022年,8月28日
逻辑表达式的结果为逻辑值,真1或假0
在进行条件判断时,非0为真,0为假其结果可以赋值给整型变量或字符型变量注意:逻辑运算符的运算为短路运算,即在&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 新疆警察学院《人机交互界面设计》2023-2024学年第一学期期末试卷
- 2024年蛋糕店创业计划
- 2024年大学生学生助理工作总结8篇
- 2024年初中学校学生宿舍管理制度
- 《政府的权力用》课件
- 商铺退房合同范例
- 奶茶店转让意向合同范例
- 土头运输合同范例
- 口罩用品采购合同范例
- 公开招标签订合同范例
- 河南省郑州市2023-2024学年高二上学期期末考试 数学 含答案
- 2024年男方因赌博离婚协议书
- 2024年资格考试-WSET二级认证考试近5年真题集锦(频考类试题)带答案
- 部编版五年级上册道德与法治期末测试卷含答案精练
- 统编版(2024年新版)七年级上册历史期末复习课件
- 零工市场(驿站)运营管理 投标方案(技术方案)
- 无线传感器网络技术与应用 第2版习题答案
- 【课件】城镇与乡村课件2024-2025学年人教版地理七年级上册
- 2024年度中国主要城市共享单车、电单车骑行报告-中规院+中规智库
- 2024-2025学年高中体育 羽毛球正手发、击高远球教学设计
- 危险化学品企业安全操作规程编制规范
评论
0/150
提交评论