




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章数据类型及输入输出内蒙古科技大学工程训练中心2023/7/24工程训练中心徐国海本节重点数据类型常量与变量不同类型的数据的输入输出2023/7/24工程训练中心徐国海引入——数据类型1、数据是程序处理的基本对象。2、程序中数据分为变量或常量。3、每个变量或常量都有确定的数据类型。4、每种数据类型都有确定的存储长度、取值范围及允许的操作。5、程序中所有数据必须指定其数据类型。2023/7/24工程训练中心徐国海数据类型基本数据类型构造类型其它类型整型int字符型char实型枚举类型单精度型float双精度型double数组结构体共用体指针类型空类型
2023/7/24工程训练中心徐国海常量在程序中,常量是指常数或其值不能被改变的量。1、直接常量:如:12,123.5,1.23E7,‘a’,’A’,’8’,“hello”,“a”2、符号常量,即用一个标识符代表一个常量。一般用大写字母表示。符号常量在其作用域内不能改变,也不能再被赋值。
定义符号常量的方法如:#definePI3.14159#definePI3.1415926voidmain()
{floatr,c,s;r=2;c=2*PI*r;s=PI*r*r;
printf(“c=%f,s=%f”,c,s);
}2023/7/24工程训练中心徐国海常量的类型1、整型常量有三种表示方法:十进制整数123,-784
八进制整数0123=
十六进制整数
八进制和十六进制只能表示无符号整数长整数表示为:123l123L
无符号整数表示为:123u)83()123(108=)291()123(12301016==x常量分为:整型常量、实型常量、字符常量、字符串常量2023/7/24工程训练中心徐国海2、实型常量,也称浮点数。
两种表示方法:(1)十进制小数形式由数字和小数点组成(必须有小数点)1.123,3.1415;(2)指数形式123e5,123E5都表示但是1.23E7为规范化的指数形式。输出指数形式的数据时,按规范化的指数形式输出。(即小数点左边应有一位非零数字)2023/7/24工程训练中心徐国海3、字符常量(Characterconstants)
由一对单引号括起的单个字符,称为字符常量。如:‘a’,‘9’,‘+’
\b退格\’单引号\n换行\ddd1-3位八进制数\t制表符\xhh1-2位十六进制数\\反斜杠字符\a响铃\”双引号\r回本行开头转义字符(EscapeSequences)表示控制字符或具有特定用途的字符。2023/7/24工程训练中心徐国海在内存中,字符数据并不是把字符本身放到内存单元中,而是将该字符的相应ASCII码(二进制的形式)放到存储单元中。
A6501000001a9701100001ASCII二进制如:有两个字符型数据‘A’和‘a’2023/7/24工程训练中心徐国海4、字符串常量(StringLiterals)
由一对双引号括起的字符序列称为字符串常量,例如:“Howdoyoudo?”“china”C规定以字符‘\0’作为字符串结束的标志。在内存中所占字节数为实际字符个数+1如字符串常量“china”在内存中存储形式如下:chin\0a2023/7/24工程训练中心徐国海变量1、定义:其值可以改变的量称为变量。程序中的变量必须先定义后使用。2、变量的定义、赋值(初始化)
<类型><变量名表>;
intsum;chara,b;floatr,s,l;doublex,y;
定义了变量后,变量并没有值,需要给其赋值。也可以在定义变量的同时给出初值,对变量进行初始化。例如:①inti;i=9;/*先定义整型变量i,然后赋初值9*/2023/7/24工程训练中心徐国海②floatr=1.5;/*定义实型变量r的同时,赋其初值1.5*/③charanswer=‘y’;/*同上*/④也可以使被定义的变量的一部分赋初值。如inta,b,c=5;表示定义a,b,c为整型变量,并且对c进行初始化,使c值为5。注意:如对几个变量同时赋初值为5,应写成
inta=5,b=5,c=5;
或者
inta,b,c;a=b=c=5;
而不能写成
inta=b=c=5;2023/7/24工程训练中心徐国海3、对变量名的要求。变量名要做到“见名知意”,不要使用简单的字符作变量名,以增加程序的可读性。变量名一般用小写字母表示,长度与所用系统有关(<8,<32)。一般建议不大于8个字符。4、变量名为一种标识符。标识符是用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。标识符的命名规则:
1、只能由字母、数字、下划线三种字符组成2、第一个字符必须为字母或下划线判断一下:sum,max,_class,sum_a
234sum¥123.4a>c
合法标识符非法标识符2023/7/24工程训练中心徐国海变量的类型变量分为:整型变量、实型变量、字符型变量1、整型变量⑴存放形式整形变量在内存中以二进制的形式存放的,一个整形变量在内存中占2个字节。001001000000000010变量i(inti=10;)变量在内存中的实际存放情况2023/7/24工程训练中心徐国海机器内部,数值是以补码表示的。正数:其补码和原码相同。负数:其补码为:该数的绝对值的二进制数按位取反加1。100011000000000001110011111111110111101111111111-35取反加1最高位最高位是符号位,其为0时是正数,为1时是负数。2023/7/24工程训练中心徐国海⑵分类根据数值的范围可以把变量定义成基本类型、短整型和长整型。①基本类型:用int
标识②短整型:用shortint
标识(short)③长整型:用标识(
long)
进一步修饰,修饰符(无符号数)
signed(有符号数)如果既不指定unsigned也不指定signed则隐含为有符号数(
signed),signed可以不写。例:unsignedlonginta,b;2023/7/24工程训练中心徐国海ANSI标准定义的整数类型类型位数取值范围[signed]int16-32768~32767即-215~(215–1)unsigned[int]160~65535即0~(216–1)[signed]short[int]16-32768~32767即-215~(215–1)unsignedshort[int]160~65535即0~(216–1)long[int]32-2417483648~2147483647即-231~(231–1)unsignedlong[int]320~4294967295即0~(223–1)2023/7/24工程训练中心徐国海2、实型变量类型(内存中字节数)有效数字float(4字节)6~7位
double(8字节)15~16位
longdouble(16字节)18~19位定义方法:(单精度)float变量名
(双精度)double变量名2023/7/24工程训练中心徐国海3、字符型变量①定义方法:char变量名列表charc1,c2,c3;②取值范围--
ASCII码字符集中的字符。charc1,c2;
c1=‘e’;
c2=‘3’注意:字符串常量不能被赋值到字符变量中,因为字符变量只能容纳一个字符。
区别:‘a’“a”2023/7/24工程训练中心徐国海数据的输入和输出C语言中,在stdio.h头文件中定义了标准输入输出函数。1、printf()函数
格式:printf(“格式控制字符串”,输出项列表);功能:将输出项按给定的控制格式输出。例如:printf(“%f”,sum);2、scanf()函数
格式:scanf(“格式控制字符串”,输入项列表);功能:将输入项按给定的控制格式输入。例如:scanf(“%d%d”,&a,&b);2023/7/24工程训练中心徐国海#include<stdio.h>voidmain(){charch=’a’;
intk=65;floatx=123.456;printf(”%c,%3c,%d\n”,ch,ch,ch);printf(”%d%3d%c\n”,k,k,k);printf(”%f,%-7.2f,%10.4f\n”,x,x,x);}输出结果是:
a,__a,9765_65A123.456001,123.46_,__123.4560例1:2023/7/24工程训练中心徐国海#include<stdio.h>voidmain(){
inta,b;charch1,ch2;floatm,n;
scanf(“%d%d”,&a,&b);scanf(“%c%c”,&ch1,&ch2);
scanf(“%f,%f”,&m,&n);}输入时:125785
ab23.456,612.97例2:2023/7/24工程训练中心徐国海本节重点掌握运算符的使用确定表达式的类型、值不同类型的数据的转换2023/7/24工程训练中心徐国海运算符一、运算符:能够完成某种操作(运算)的符号。
二、根据运算符的运算对象(操作数)的多少,运算符可分为:①单目(一元)运算符i++
--n②双目(二元)运算符a+bd/e③三目(三元)运算符
x>y?x+3:y*9(条件运算符)2023/7/24工程训练中心徐国海优先级运算符操作数结合性1()[]->.左右2!~-++--&*sizeof1右左3*/%2左右4+-2左右5<<>>2左右6<<=>=>2左右7==!=2左右8&2左右9^2左右10|2左右11&&2左右12||2左右13?:3右左14=*=/=+=……<<=>>=2右左15,2左右2023/7/24工程训练中心徐国海表达式一、C表达式:由C运算符和运算对象构成的式子。
运算对象可以是常量、变量、函数或表达式。二、表达式的书写原则(1)C语言的表达式只能采用线性的形式书写。例如:①应写成1/3+i+j*j*j。②应写成(a+b)/(c+d)*e+f。
2023/7/24工程训练中心徐国海(2)C语言的表达式只能使用C语言中合法的运算符和操作数,对有些操作必须调用库函数完成,而且运算符不能省略。例如:#include<math.h>①
πr2应写成3.14159*r*r。②应写成0.5*a*b*sin(alph)。③|x-y|应写成fabs(x-y)。④y+2X
应写成y+pow(2,x)。2023/7/24工程训练中心徐国海三、表达式在求值时,遵循以下规则(1)优先级:不同优先级的运算符出现在同一表达式时,按运算符的优先级的高低次序执行。
例如:
d=a+b*c;/*先乘后加*/(2)结合性:是指表达式中出现同优先级的操作符时,该先做哪个操作符的规定。
结合方向:“自左向右”、“自右向左”例如:a+b-c从左至右d=a=b=3从右至左2023/7/24工程训练中心徐国海四、表达式的分类
C语言表达式种类很多,有多种分类方法。我们一般依据运算的特征将表达式分为:①算术表达式,如a+b*2.0-3.0/5.0②关系表达式,如x>=y,关系表达式可以认为是逻辑表达式的特殊情况。③逻辑表达式,如(x>=2)&&(x<=8)④赋值表达式,如a=b=c=1⑤条件表达式,如(a>b)?a:b⑥逗号表达式,如a=2,b=a*a,c=sqrt(b)2023/7/24工程训练中心徐国海五、表达式值的数据类型(1)每个表达式都有一个确定的值,因而有确定的数据类型。(2)表达式的分类和数据类型取决与最后执行的运算符,如:34.5+(7>6)为算术表达式,类型是double型,值35.5
34.5+7>6为关系表达式,类型是int型,值12023/7/24工程训练中心徐国海算术运算符和算术表达式
1、分类单目运算符-负号运算++自增--自减双目运算符+加-减*乘/除%求余
“/”如果是两个整型数相除,取整;如有一个为实数时,其意义就是实数除,结果为double型。5/2=25.0/2.0=2.55.0/2=2.55/2.0=2.5
“%”取余数,只能对整数取余数,不能对浮点数取余数。运算结果的符号与左操作数相同。5%2=1-35%8=-335%-8=32023/7/24工程训练中心徐国海2、自增操作符和自减操作符格式:++i,i++--i,i--作用:是使自变量i的值加1或减1,相当于i=i+1或i=i-1。
前置自增或前置自减操作:表示先修改操作数使之增1或减1,然后取修改后的操作数的值作为表达式的值。
后置自增或后置自减操作:表示在表达式中先取操作数的值,然后再将操作数值增1或减1。例如:j=i++;j的值为3(首先将i的原值赋给j,然后i自身再加1)j=++i;j的值为4(i自身先加1,然后再将加1后的值赋给j)
2023/7/24工程训练中心徐国海#include<stdio.h>voidmain(){
inti,j,k;i=3;j=i++;k=++i;
printf(“i=%d,j=%d,k=%d\n”,i,j,k);}范例:输出结果:i=5,j=3,k=52023/7/24工程训练中心徐国海2
、在表达式中如果有2个以上的“+”或“-”连写在一起,则编译器首先识别前面两个+或-为自增或自减操作符。例如:在使用自增或自减运算符时注意如下几个问题:1、自加或自减运算只能用于变量,不能用于常量或表达式;错误:25++(i+j)++例如-i++,只能理解为-(i++)。因为(-i)++为表达式,表达式是不能自加自减的。i=3;
j=-i++;
printf(“%d”,j);输出结果应为-3,而不是是-4。
inta=1,b=5,c;c=a+b;c=a+++b;c=a++b;正确:c=6错误:++不是双目运算符正确:a+++b2023/7/24工程训练中心徐国海3、表达式中包含有自增、自减运算时,容易出错,务请小心。如有:i=1;
则:类似上面分析,应为3,当然表达式计算完成后i的值同样改变为4。(++i)+(++i)+(++i)的值为多少呢?是9(=2+3+4)吗?不对!计算时先对整个表达式扫描,i先自增3次,由1→2→3→4,如此计算结果为4+4+4,等于12。(i++)+(i++)+(i++)的值又是多少呢?2023/7/24工程训练中心徐国海赋值运算符和赋值表达式1、赋值运算符:=
使用方法:变量=表达式赋值运算时先计算右边表达式的值,然后将右边表达式的值赋给左边变量,并以此值作为整个赋值表达式的值。(1)赋值运算的优先级为第14级,次低。如:int
i,a,b,c,p;i=3+5%2;/*先计算3+5%2,得到4,然后将4赋给i*/。p=(a+b)/c;p=a+b/c;2023/7/24工程训练中心徐国海(2)理解以下两赋值表达式的含义:y=5;
n=5;x=y;
n=n+1;(3)赋值运算符具有“自右向左”的结合性,赋值运算符右边的表达式也可以是赋值表达式:
例如:
a=b=5;
等同于
a=(b=5);2023/7/24工程训练中心徐国海2、复合赋值运算算术复合赋值运算符:+=、-=、*=、/=、%=位复合赋值运算符:&=、|=、^=、>>=、<<=一般形式:变量☆=表达式
等价于:变量=变量☆表达式
☆代表任一双目算术运算符或位运算符。复合赋值运算先进行所带运算,再进行赋值运算。复合赋值运算的优先级同赋值运算。2023/7/24工程训练中心徐国海例如:(1)inta=3;a+=2;等价于
a=a+2(2)floatx=1.2,y=2.1;y*=x+3.4;等价于
y=y*(x+3.4)(3)inta=1,b=2;b/=a+=1;等价于
b=b/(a=a+1)2023/7/24工程训练中心徐国海逻辑运算符与逻辑表达式一、逻辑运算符!逻辑非&&逻辑与||逻辑或二、优先级:!>
&&>
||&&和||运算符的优先级低于算术运算符和关系运算符,而高于赋值运算符。三、操作数是逻辑量(“真”或“假”,非0为真)(a+5)&&-8同为真时结果为真!56||0只要有一个为真时结果就为真四、逻辑表达式的运算结果仍然是逻辑量2023/7/24工程训练中心徐国海关系运算符和关系表达式一、关系运算符有:<、>、<=、>=、==、!=<、<=、>、>=的优先级相同,==、!=的优先级相同,前者的优先级高于后者。二、关系运算符的优先级低于算术运算,高于逻辑运算&&、||,也高于赋值运算。24+(5>3)c=7>8三、关系表达式的运算结果时逻辑量四、自左向右结合。a>b>c
假设a=5,b=3,c=2该表达式的值为0五、操作数也可以是字符型数据如:‘a’>’f’2023/7/24工程训练中心徐国海
条件运算符和条件表达式一、条件运算符的语法形式:
<表达式1>?<表达式2>:<表达式3>
解释为:<条件表达式>?<条件为真时的表达式>:<条件为假的表达式>例如:
x=a<b?a:b;//将a,b中较小数赋x
事实上,三目运算操作是简单if语句的另一种表达方式。
if(a<b)x=a;elsex=b;二、结合方向“自右向左”a>b?a:c>d?c:d相当于a>b?a:(c>d?c:d)2023/7/24工程训练中心徐国海#include<stdio.h>voidmain(){
intx;
scanf(″%d″,&x);x>0?printf(″%s″,″正数″):printf(″%s″,″负数″);}例:判断整数的正负。2023/7/24工程训练中心徐国海逗号运算符和逗号表达式一、逗号运算是双目运算,一般形式如下:表达式1,表达式2先计算表达式1,再计算表达式2,并以此作为整个表达式的值。
如:a=2,a*6,先计算a=2,再计算a*6,并以此作为整个表达式的值,表达式的值为12。2023/7/24工程训练中心徐国海二、逗号运算的优先级最低,结合自左向右。逗号表达式的更一般使用形式为:表达式1,表达式2,表达式3,……,表达式n
先计算表达式1,再计算表达式2,再计算表达式3,…,再计算表达式n的值,并以此作为整个表达式的值。
如:表达式x=a=3,6*x,6*a,a+x的值为。逗号运算又称顺序求值运算。62023/7/24工程训练中心徐国海#include<stdio.h>voidmain(){inti,j,k;i=1,j=2,k=3;printf(“%d%d%d\n”,i,j,k);}#include<stdio.h>voidmain(){inti,j,k;i=1;j=2;k=3;printf(“%d%d%d\n”,i,j,k);}并不是任何地方出现的逗号都是逗号运算符,例如:printf(“%d%d%d\n”,i,j,k);(是参数分隔符)如果写成:printf(“%d%d%d\n”,(i,j,k),j,k);
相当于:printf(“%d%d%d\n”,k,j,k);2023/7/24工程训练中心徐国海求字节数运算运算符:sizeof(数据类型标识符)或sizeof(表达式)
求字节数运算是单目运算,操作数可以是类型名,也可以是变量、表达式,用以求得相应类型或数据所占的字节数。此运算的优先级与取地址运算优先级相同。例如:
sizeof(float)值为4,单精度类型占4个字节
sizeof(2*3)值为2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 寺庙文化交流合作协议合同
- 劳动合同新规:鼓励无固定期限签约
- 21《我不能失信》教学设计-2023-2024学年统编版语文三年级下册
- 单位食堂转让合同范本
- 11 对人有礼貌 (教学设计)2024-2025学年统编版(2024)道德与法治一年级上册
- Module 6 Unit 2 She visited the Tianchi Lake (教学设计) -2023-2024学年外研版(三起)英语五年级下册
- 经营书店合同范本
- Module 5 Unit1 Listening and speaking 教学设计 2024-2025学年外研版英语九年级上册
- 11《百年孤独(节选)》教学设计 2024-2025学年统编版高中语文选择性必修上册
- 3《我不拖拉》 教学设计 -2023-2024学年道德与法治一年级下册统编版
- JC-T 738-2004水泥强度快速检验方法
- 山东省春季高考技能考试-汽车专业必刷必练题库(600题)
- 人教鄂教版小学科学四年级下册全册教案
- 扬帆蓝天无人机法律法规与应用培训教案课件
- 工会经费列支范围及工会经费支出范围
- 成人高考课件
- 哲学与人生全套课件146P
- 中考物理复习交流
- 敬老院设备采购投标方案(技术方案)
- 充电桩采购安装售后服务方案
- 《旅行社条例》和《旅行社管理条例》对比解读
评论
0/150
提交评论