




已阅读5页,还剩37页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计,第二章基本数据类型与输入输出,2.1预备知识计算机中数的表示及进制转换,各种进制之间的转换二进制、八进制、十六进制转换成十进制方法:按权相加,各种进制之间的转换(整数)二进制、八进制、十六进制转换成十进制方法:按权相加,十进制转换成二进制、八进制、十六进制原理:,方法:连续除以基,从低到高记录余数,直至商为0,二进制与八进制之间的转换二进制转换成八进制:从右向左,每3位一组(不足3位左补0),转换成八进制八进制转换成二进制:用3位二进制数代替每一位八进制数,例(1101001)2=(001,101,001)2=(151)8,例(246)8=(010,100,110)2=(10100110)2,00000011010201131004101511061117,二进制与十六进制之间的转换二进制转换成十六进制:从右向左,每4位一组(不足4位左补0),转换成十六进制十六进制转换成二进制:用4位二进制数代替每一位十六进制数,例(11010101111101)2=(0011,0101,0111,1101)2=(357D)16,例(4B9E)16=(0100,1011,1001,1110)2=(100101110011110)2,000000001100102001130100401015011060111710008100191010A1011B1100C1101D1110E1111F,字节和位内存以字节为单元组成每个字节有一个地址一个字节一般由8个二进制位组成每个二进位的值是0或1,数值的表示方法原码、反码和补码原码:最高位为符号位,其余各位为数值本身的绝对值反码:正数:反码与原码相同负数:符号位为1,其余位对原码取反补码:正数:原码、反码、补码相同负数:最高位为1,其余位为原码取反,再对整个数加1,9-5=49+7=16=(14)12,一个程序要运行,就要先描述其算法。描述一个算法应先说明算法中要用的数据,数据以变量或常量的形式来描述。每个变量或常量都有数据类型。,变量是存储信息的单元,它对应于某个内存空间。在定义变量时,说明的变量名字和数据类型告诉编译器要为变量分配多少内存空间,以及变量中要存储什么类型的值。内存单元的单位是字节。数据类型简称类型。在不同的计算机上,每个变量类型所占用的内存空间的长度不一定相同。C+的数据类型有基本数据类型和非基本数据类型之分。基本数据类型是C+内部预先定义的数据类型。非基本数据类型包括指针、数组和结构以及类类型等,非基本数据类型也称用户定义数据类型。,2.2基本数据类型,C的数据类型,短整型(short)整型(int)长整型(long),整型实型,数值类型字符类型(char)逻辑型(bool),数组类型结构体类型(struct)共用体类型(union)文件类型(FILE),基本类型构造类型指针类型空类型(void),数据类型,单精度型(float)双精度型(double),数据类型的描述确定了其内存所占空间的大小,也确定了其表示范围。,在大多数计算机上,shortint表示2个字节长。short只能修饰int,shortint可以省略为short。long只能修饰int和double。修饰为longint时,一般表示4个字节,修饰longdouble时,一般表示10个字节。用sizeof(数据类型)可以确定某数据类型的字节长度。例如用下面的语句:cout“sizeofintis“sizeof(int)endl;在16位计算机上将输出:sizeofintis2,2.3变量定义,1.命名变量名,C+是大小写敏感的,即大写和小写字母认为是不同的字母。例如变量名something,Something,SOMETHING和SomeThing都是不同的名字。命名变量名要遵守如下的规则:(1)不能是C+关键字。(2)第一个字符必须是字母或下划线。(3)不要太长,一般不超过31个字符为宜。(4)不能以数字开头。(5)中间不能有空格。(6)变量名不能包含”.;+-之类的特殊符号实际上,变量名中除了能使用26个英文大小写字母和数字外,只能使用下划线“_”。,(7)变量名不要与C+中的库函数名、类名和对象名相同。例如,下面是一些变量名:way_cool,RightOn,Bits32,Case,iPtr,myCar/合法case,52Select,ALot,-VV/非法sin,cout,string/不合适变量通常具有描述性的特征。例如,看到numberOfStudents这个变量名,就立刻可以想到它表示学生人数,即使简写成numOfStudent也是一目了然。几种书写变量名的方法。(1)全用小写字母,例如,my_car。(2)驼峰表示法,例如,myCar。(3)自定义的类型名则以大写字母开头,例如,类和结构类型。(4)匈牙利标记法,在每个变量名的前面加上若干表示类型的字符,例如,iMyCar表示整型变量,ipMyCar表示整型指针等。,2.变量定义方式可以在一个语句里建立多个同一类型的变量,方法是在类型后写上多个变量名,中间用逗号隔开。例如:unsignedmyAge,myWeight;/2个无符号整型变量longarea,width,length;/3个长整型变量在同一语句里不能混合定义不同类型的变量。3.变量赋值与初始化用赋值运算符“”给变量赋值。例如:unsignedshortwidth;width=5;/赋初值也可以在定义时直接给变量赋值。在定义的同时,,赋给变量一个初始值,称为变量的初始化。例如:unsignedshortwidth=5;/定义并初始化在定义时也可以初始化多个变量。例如:longwidth=7,length=7;不是所有的变量在定义时都需要初始化。例如:doublearea,radius23;4.typedef用typedef可以为一个已有的类型名提供一个同义词。用法是,以typedef开始,随后是要表示的类型,最后是表示的类型名和分号。例如:typedefdoubleprofit;/定义double的同义词typedefintINT,integer;/定义两个同义词INTa;/即inta;profitd;/即doubled;,typedef没有实际地定义一个新的数据类型,在建立一个typedef类型时没有分配内存空间。2.4常量,1.整型常量(整常数)三种形式:十进制整数:由数字09和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字07表示.如0123,011十六进制整数:由0 x开头,后跟09,af,AF表示.如0 x123,0Xff,例12与12L,例30000为int型65536为longint型,整型常量的类型根据其值所在范围确定其数据类型在整常量后加字母l或L,认为它是longint型常量,问题:0123=()100 x123=()100Xff=()10,2.实型常量(实数或浮点数)表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5,实型常量的类型默认double型,它有3种类型分别为单精度、双精度、和长双精度。在实型常量后加字母f或F,认为它是float型。表示longdouble型数,则必须在实数后加l或L。,34.5f/float型34.5/double型(默认表示)34.5L/longdouble型34.5l/longdouble型34.5e23f/float型34.5e23/double型(默认表示)34.5e23L/longdouble型34.5e23l/longdouble型34.5e400/longdouble型,3.字符常量定义:用单引号括起来的单个普通字符或转义字符.,字符常量的值:该字符的ASCII码值,如101-A012-n376-x61-a60-0483-(),例:A-101-x41-65,如A65,a97,048,n10,如aA?n101,转义字符:反斜线后面跟一个字符或一个代码值表示,例转义字符举例(ch2_001.c,ch2_004.c)main()printf(101x42Cn);printf(Isay:Howareyou?n);printf(CProgramn);printf(TurboC);,运行结果:(屏幕显示)ABCIsay:”Howareyou?”CProgramTurboC,例main()printf(“Yb=n”);,运行结果:屏幕显示:=打印机输出:,在内存中,字符数据以ASC码存储,即以整数表示。所以C+中字符数据和整型数据之间可以相互赋值。例如:inta=b;/给一个整型变量赋一个字符值charc=97;/给一个字符变量赋一个整型值字符数据和整型数据在输出中的表示是不同的。例如,对上面的赋值,输出:coutaendl;coutcendl:其结果为:98a0与0是截然不同的2个数。0是数字字符,其ASC码等于值48或0 x30。而0则是整数值。除此之外,0和NULL也表示整数0。,字符常量与字符串常量不同,4.字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个0作为字符串结束标志,例:charch;ch=“A”;,不能将字符串常量赋给字符变量。例如:charc=“abc”;/不能将字符串转换成字符型单个字符的字符串与一个字符在输出的表示上没有差别,因为字符串输出时,C+并不把0结束符一起输出。例如:coutaendl;cout“a”myAge;不管把什么基本数据类型的名字或值传给流,它都能懂。例如:,下面的函数输出字符串和整数:#includemain()cout“mynameisJonen”;cout“theIDis”;cout2;,coutendl;上面的输出等价于下面的输出:cout“MynameisJonen”“theIDis”2endl:也可以分几行,提高可读性,下列语句于上例输出同样结果:cout“MynameisJonen”“theIDis”2endl:,2.使用控制符流的默认格式输出有时不能满足特殊要求,如:doubleaverage=9.400067;coutaverageendl;希望显示的是9.40,即保留两位小数,可是却显示了9.40007;默认显示6位有效位。用控制符可以对I/O流的格式进行控制。控制符是在头文件iomanip.h中定义的对象。可以直接将控制符插入流中。,使用控制符时,要在程序的头上加头文件iomanip.h。,3.控制浮点数值显示使用setprecision(n)可控制输出流显示浮点数的数字个数。C+默认的流输出数值有效位是6。如果setprecision(n)与setiosflags(ios:fixed)合用,可以控制小数点右边的数字个数。setiosflags(ios:fixed)是用定点方式表示实数。如果与setiosflags(ios:scientific)合用,可以控制指数表示法的小数位数。setiosflags(ios:scientific)是用指数方式表示实数。,在用浮点表示的输出中,setprecision(n)表示有效位数。C+最小的有效位数是1。在用定点表示的输出中,setprecision(n)表示小数位数。在用指数形式输出时,setprecision(n)表示小数位数。小数位数截短显示时,进行4舍5入处理。,4.设置值的输出宽度除了使用空格来强行控制输出间隔外,还可以用setw(n)控制符。如果一个值需要比setw(n)确定的字符数更多的字符,则该值将使用它所需要的所有字符。例如floatamount=3.14159;coutamountendl;其运行结果为:3.14159。它并不按4位宽度,而是按实际宽度输出。如果一个值的字符数比setw(n)确定的字符个数更少,则在数字字符前显示空白。setw(n)仅仅影响下一个数值输出。例如:coutsetw(8)1020endl;运行结果为:1020,setw(n)的默认值为宽度0,即setw(0)。若要每个数值都有宽度8,则每个值都要设置:coutvoidmain()intnumber=1001;coutDecimal:decnumberendlHexadecimal:hexnumberendlOctal:octnumberendl;,运行结果为:Decimal:1001Hexadecimal:3e9Octal:1751用头文件iomanip.h中的setiosflags(ios:uppercase)可以控制16进制数大写输出。例如:#include#include/cout“Hexadecimal:”hexsetiosflags(ios:uppercase)numberendl;,便能得到16进制的大写表示:Hexadecimal:3E9。6.设置填充字符setfill控制符可以确定一个非空格的别的字符。setfill在头文件iomanip.h中定义。例如:,/*/*ch2_3.cpp*/*#include#includevoidmain()coutsetfill(*)setw(2)21endlsetw(3)21endlsetw(4)21endl;coutsetfill();/恢复默认设置,/*/*ch2_3.cpp*/*#include#includevoidmain()coutsetfill(*)setw(2)21endlsetw(3)21endlsetw(4)21endl;coutsetfill();/恢复默认设置运行结果为:21*21*217.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新型城镇化建设项目推广服务合同
- 2025年度制造业委托代理招聘及员工培训服务协议
- 说话礼仪知识培训课件
- 语言知识培训班课件
- 2025合作合同范本联盟协议
- 2025租房合同简单示例模板
- 红酒培训知识与礼仪教案课件
- 红酒培训基础知识书籍课件
- 2025二手设备采购合同
- 2025文具耗材采购协议合同范本
- 电气设备维护与检测收费标准
- 2025年美团民宿违规试题
- 系统性红斑狼疮眼部表现
- 2025至2030中国汽车数字钥匙行业产业运行态势及投资规划深度研究报告
- 张掖介绍课件
- 护理专业新生入学教育
- 医院优先使用集采药品培训
- 2025年山东高考思想政治试卷讲评及备考策略指导(课件)
- 井下巷道维修管理制度
- 台球厅消防安全管理制度
- 婴儿游泳馆卫生管理制度
评论
0/150
提交评论