版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章数据类型、运算符、表达式、赋值语句、输入输出C语言基本组成任何程序设计语言如同自然语言一样,都有自己一套字符、单词及一些特定符号的使用规定,也有对语句、语法都方面的规定。基本字符集、标识符、关键字、语句和标准库函数等。基本字符集数字字符:0~9字母A~Z,a~zABC与abc是不同的,区分大小写运算符+,-,*,/,%,=,<,>,!=,==,<<,>>,&,|,&&,||,?,:,(,),[]特殊字符和不显示字符_,空格,换行,制表符标识符用户自行定义的符号。由字母、数字和下划线_组成。以字母和下划线开头。标识符中同一个字母的大写和小写被看作是不同的字符。标识符长度一般不超过8个字符合法的标识符不合法标识符原因call__string1-string1test3939test关键字特定含义的专用字符不允许作为自定义的标识符使用关键字用小写autobreakcasecharconstcontinuedefaultdodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile分隔符[]{}()*.:=;#思考-(5.62*8+3.2/5)*12.6——表达式在计算机中如何描述这些数据?数据类型整型浮点型字符型不同的数据类型,所表示的数据范围,精度和所占据的存储空间均不相同整型基本型int短整型shortint/short长整型longint/long无符号整型unsignedint/short/long数据类型所占位数数的范围int16-32768~32767shortint16-32768~32767longint32-2147483648~2147483647unsignedint160~65535unsignedshort160~65535unsignedlong320~4294967295浮点型实型数据float,double数据类型所占位数float32double64字符型charASCII码值(一个整数)字符型和整数型混合使用常量程序运行时其值不能改变的量。整型常量数值常量实型常量常量字符常量字符常量字符串常量整型常量八进制以数字0开头的数0516十六进制0x或者是0X开头的数0x1c0d浮点型常量十进制形式和指数形式3.14,-9.568,2.9E-7指数形式数的E前必须要有数字,E后必须为整数不合法的:E8,6E7.8字符型常量用单引号括起来的单一字符‘s’字符的值是ASCII码值特殊字符常量——转义字符以“\”开头的字符序列字符形式含义\n换行\t横向跳格\v竖向跳格\b退格\r回车\\反斜杠\\’单引号字符串常量双引号括起来零个或者多个字符序列。字符串需要的存储空间比实际的长度多一个Iamastudent长度为?Iamastudent\0自动在每一个字符串结尾添加结束符’\0’字符常量和字符串常量‘a’?“a”?变量值可以改变的量请输入您的姓名确定您输入的姓名是:xxx变量变量使用前必须声明格式<类型标识符><变量名>
intj;shortc,d,e;chara1,a2;声明不同的变量,根据其类型占据不同的空间运算符和表达式C语言运算符分类:算术运算符关系运算符逻辑运算符逗号运算符位运算符赋值运算符等等运算符和表达式运算符有关性质目数:运算操作数数目单目运算符、双目运算符、三目运算符优先级:当一个表达式中同时包含多个运算符时,先进行运算的运算符优先级高,后进行运算的运算符优先级低。例如:2+3*4–(2+3)
该表达式中,()运算符优先级最高,其次是*,再是+和-结合性:当表达式中的运算符优先级相同时,由运算符的结合性来决定表达式的运算顺序,是从左向右运行(左结合性),还是从右向左运行(右结合性)
例如:2+3-4+5左结合性算术运算符算术运算符+、-、*、/、%(求余数)对于+,*,-运算符,操作数可以是整型或实型常量或变量,运算规则等同于一般的数学运算规则。对于/运算,操作数可以是整型或实型数据,当操作数中有一个是实型,运算结果也是实型;但若/运算两端的操作数都是整型,则只做整除运算。例如:3/2.0值为1.5,但3/2的值为1对于%运算,要求两端的操作数必须是整型,若是实型,则表达式出错。例如:3%2结果为13.0%2则是错误的算术表达式。都是双目运算符算术运算符优先级:*、/、%运算符优先级相同,+、-运算符相同,*、/、%的优先级高于+、-结合性:左结合性自增、自减运算符(++、--)自增运算符(++)使用方式:变量++;
或者++变量;例如:k++;j++;++n;等此处的变量可以是整型变量、实型变量或者字符型变量,但必须是变量,不能是常量或者表达式。功能是使变量的值加1。i=9;i++;i=?i=9;++i;i=?k++与++k的区别:(1)k++;和++k;若单独作为c语言程序中的一条语句,功能完全相同,都等价于k=k+1;(2)k++和++k若是作为c语言程序语句的一部分,含义不相同:
k++是先使用k的值,再执行变量加1操作;++k则是先执行变量加1操作,再使用k的值。自减运算符(--)自增和自减运算符都是单目运算符优先级高于前面学习的*、\、%运算符i=9;i--;i=?i=9;--i;i=?附录2(P274)优先级表例题例x=5计算y的值y=++x;y=x++;y=x++*x++;y=++x*++x;先计算++x,x=6;再计算y=x先计算y=x;再计算x++;x=6,y=5;++为后缀形式,先取x的值进行*,再进行两次先计算x++;x=7,y=25;++为前缀形式,先进行两次x的自增运算,X=7;再进行相乘,y=49;逻辑运算符和逻辑表达式逻辑与&&逻辑或||逻辑非!逻辑与<条件1>&&<条件2>…两个条件都是真时结果才是真如第一个条件就为假,表达式的值就为假,不需要再计算后面的表达式逻辑或<条件1>&&<条件2>…两个条件中有一个为真表达式的值就是真逻辑非!<条件>若条件为真,则表达式的值为假;反之,条件为假,表达式的值为真赋值运算符和赋值表达式普通赋值运算符(=)功能:将一个数据或表达式的值赋给一个变量使用方法:变量=变量/常量/表达式;例如:a=12;x=y;b=x*y;c=a+b;等复合赋值运算符(+=、-=、*=、/=、%=等)例如:a+=3;等同于a=a+3;b*=x+y;等同于b=b*(x+y);
说明:赋值运算符的优先级低于算术运算符赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子。一般形式:变量赋值运算符表达式不带分号称为表达式,加上分号就是赋值语句。赋值运算符右边的表达式可以以变量、常量、表达式等多种形式出现。如果赋值运算符两侧的变量和表达式类型不同时,系统将自动进行类型转换。转换的原则是:以赋值号左边变量类型为准。例如:inta;a=3.4;最后a的值为3赋值运算符右边的表达式还可以以赋值表达式形式出现。例如:intx,y;x=y=8;赋值运算符具有右结合性条件运算符三目运算符形式:表达式1?表达式2:表达式3求解:首先计算表达式1的值,若表达式1的值为真(即不等于0),则求表达式2的值,并将它作为整个条件表达式的值;若表达式1的值为假(即等于0),则求表达式3的值,并将它作为整个表达式的值。例如:5>3?100:200表达式值为多少?已知变量x的初始值为2,y的初始值为3,求条件表达式的值以及该语句执行后x和y变量的值x>y?x+=y:y>2?(y+=x):(y-=x)逗号运算符和逗号表达式逗号运算符(,)将若干个表达式连接起来逗号表达式形式:表达式1,表达式2,表达式3,…,表达式n求解:先计算表达式1的值,再计算表达式2的值,…,一直计算到表达式n的值,整个逗号表达式的值就等于最后一个表达式n的值例如:求逗号表达式的值以及表达式中出现的各个变量的值2+3,x=4,x*=2,y=x+5,22*3a=2,b=a*4,3+25,7-3,a*4逗号表达式可以嵌套,如(x=8*2,x*4),x*2逗号表达式可以作为赋值运算右边的表达式x=(i=4,j=6,k=8)逗号表达式在所有c语言表达式中优先级最低,所以:x=(z=5,5*2)与x=z=5,5*2是不同表达式不是程序中所有的逗号都是逗号运算符,大多数情况下,逗号只作为分隔符使用。类型转化整型、实型、字符型、数据混合运算转换规则Char型转换成int型;float型转换为double型低级到高级的转换两个float数据运算也要先转换为double型Charintlongfloatdouble例题3.14159265*2*1.5+‘A’-2269978强制转换一般形式(<类型名>)<表达式>(float)i;(int)(f1-f2);表达式的结果被强制转换为float型,i本身还是int型变量初始化变量在使用之前就对其赋值
inti=4;charc=‘w’;intI,sum=0,j;数据输出Printf(<控制字符串>,<参数1>,<参数2>,…)<控制字符串>“%”和转换字符组成例:%d,%f十进制输出浮点数形式输出例题#include<stdio.h>main(){ inta=12; longb=2269978; printf("a=%d,a=%6d,a=%-6d,a=%06d\n",a,a,a,a); floatx=123.456; printf("x=%f,x=%8.3f,x=%10.3f\n",x,x,x); charc='w'; printf("c=%c,ACSIIc:%d\n",c,c); inti=97; printf("i=%d,i=%c\n",i,i);}因为c语言的输入输出库函数都位于一个名为stdio.h的头文件中,所以,每一个c语言程序的开始都要用下面的编译预处理命令将该头文件包括到用户编辑的文件中去。
#include"stdio.h"或#include<stdio.h>
数据输入
从标准输入中读字符:scanf(<控制字符串>,<参数1>,<参数2>,…)
除控制字符串外其他的参数都是地址各输入数据存放的位置例题#include<stdio.h>main(){ charc1,c2; printf("请输入数值:"); scanf("%c",&c1); c2=c1-32; printf("\n您输入的是:%c",c2);}例题#include<stdio.h>main(){ inti,j; scanf("%d,%d",&i,&j); printf("%d,%d",i,j);}scanf("%d%d",&i,&j);若输入语句格式控制为"%d%d",那么在输入两个整数时,在数据之间以一个或多个空格间隔,也可以用回车键、tab键间隔。若输入语句格式控制为"%d,%d",那么在输入两个整数时,在数据之间必须以","间隔。若输入语句格式控制为"a=%d,#%d",那么在输入时,应首先输入:a=,再输入一个整数,接着输入,#,然后输入下一个整数。例题输入两个整数,分别存放在变量a和b中,要求将这两个变量的值互换,输出它们的值。分析:完成该问题的算法可分为以下几步:(1)输入两个数,分别存入a和b中(2)将a,b变量的值相互交换(3)输出交换后的a和b的值问题是:第(2)步如何具体实现?例题:交换两个数的值#include<stdio.h>main(){ inti,j,temp; printf("请输入要交换的数值:"); scanf("%d%d",&i,&j); printf("\n交换后的数值为:"); temp=i; i=j; j=temp; printf(“i=%d,j=%d",i,j);}scanf("%d%d",&i,&j);输入格式?改变?#include<stdio.h>main(){ inti,j,temp; printf("请输入要交换的数值:");
scanf("i=%d,#%d",&i,&j); printf("\n交换后的数值为:"); temp=i; i=j; j=temp; printf("%d,%d",i,j);}数据的"输入"和"输出"是相对于计算机主机而言的。C语言本身不提供输入输出语句,输入输出操作是通过调用库函数来实现的,例如:printf和scanf就是c语言中用于实现数据输入、输出的库函数之一。因为c语言的输入输出库函数都位于一个名为stdio.h的头文件中,所以,每一个c语言程序的开始都要用下面的编译预处理命令将该头文件
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026河南郑州阳城医院招聘19人笔试模拟试题及答案解析
- 2026江西南昌市徐坊学校招聘派遣制教师1人笔试模拟试题及答案解析
- 2026北京清华长庚医院第二批招聘67人笔试模拟试题及答案解析
- 2026年乡村夜间经济(夜游 夜市 村晚)活动策划模板
- 2026贵州遵义水县二郎镇卫生院“见习生”招聘3人笔试参考题库及答案解析
- 2026年福建省泉州市消防救援局第二期政府专职消防队员招聘考试参考题库及答案解析
- 2026年新疆职业大学高层次人才引进(44人)笔试参考题库及答案解析
- 2026内蒙古医科大学附属医院招聘合同制(编外)急需紧缺岗位工作人员3人考试参考题库及答案解析
- 2026河南郑州四六〇医院临床护士收费员(劳务派遣)招聘笔试参考题库及答案解析
- 2026内蒙古自治区党政机关单位招聘档案录入员111人考试备考题库及答案解析
- 2026年长沙职业技术学院单招职业技能考试模拟测试卷及答案1套
- 智能笔的行业分析报告
- 蜡疗课件教学
- 2026江苏中烟工业有限责任公司高校毕业生招聘14人(第一批次)笔试考试参考试题及答案解析
- 四年级下册语文仿写训练题库
- 点餐系统的设计毕业论文
- 2026福建泉州市选优生选拔引进笔试考试参考试题及答案解析
- 高校管理岗位考试题库
- 车站值班员高级工作总结报告
- 门厂外包加工合同范本
- 2025年药品批发行业分析报告及未来发展趋势预测
评论
0/150
提交评论