实验2 数据类型与表达式
一、实验目的:
1、熟悉基本数据类型(int、char、float、double)占用的字节数和存储形式,能够定义基本数据类型的变量,使用这些类型的数据;
2、掌握字符数据的存储形式及其与整数的运算,能正确理解“字符数据”与“字符串”的区别与联系,熟悉常用转义字符的使用; 3、熟悉字符常量与一般常量的定义、使用;
4、掌握算术运算符(重点是/和%)、自增(++)和自减(--)运算符的使用,能够构建正确的表达式,并输出其结果;
5、理解不同类型数据之间运算时的类型转换规则,掌握强制类型转换的方法。
二、实验内容
1、(基础题)用sizeof运算符可以得到各种类型数据占用存储单元长度,利用数据间的关系和不同控制符,可以得到查看数据的存储形式。运行下列程序,回答相关问题:
#include
int main( ) {
cout<<\型数据所占字节数: \
cout<<\整数23、4567890所占字节数分别为: \、\
cout<<\型数据所占字节数: \ cout<<\字符\\'s\\'所占字节数: \ cout<<\字符串\\\所占字节数: \
cout<<\字符串\\\即中央电视台\\\所占字节数: \即中央
电视台\
int n1=13;
cout< cout< (项目名称为lab_2_1,下同,不一一说明) 问题: (1) sizeof运算符如何使用?它的操作数可以是类型关键字吗? 答: sizeof运算符可以获取某数据占用的空间大小,使用格式是sizeof(),, 括号中就是该运算符的操作数,既可以是数据类型关键字,也可以是数据本身 (2) 整数的占用长度与其数值大小有关吗? 答: 整数占用的长度与其值大小无关,只要是int型整数占用空间大小就是4个字节 字符串中’\\’’、’\\”’、’\\n’、’\\t’的功能各是什么? 答: ‘\\’’是一个转义字符常量,如果要在字符串中加一个 ‘ 号 ,不可以直接加‘ 号,而需要加‘ 号对应的转移字符\\’ ’\\”’是一个转义字符常量,如果要在字符串中加一个” 号 ,不可以直接加” 号,而需要加” 号对应的转移字符’\\”’ ’\\n’是一个转义字符常量,用于换行 ’\\t’是一个转义字符常量,用于调整格式---制表,如果在两个内容之间加上一个’\\t’,两内容间会空出四个空格,代表一个制表位 (3) 字符串的一个英文字母占几个字节?一个汉字占几个字节?尾部还有什么字符? 英文字母4个字节 汉字两个字节 尾部用转义’\\0’ 字符作为字符串结束标记 课外操作:请修改上述程序,使之能输出float、double、void类型所占用字节数。有兴趣的同学,还可以阅读大课课件的“数据在计算机中的表示及运算.pdf”文档和float_unsigned项目,了解浮点数的存储形式。 2、(基础题)字符数据以整数方式(ASCII)存储的,可以与整数进行+、-运算,既可以用“字符”方式输出,也可以用“整数”方式输出。运行下列程序,回答相关问题: #include char ch1,ch2; ch1='A'; ch2=ch1+32; cout<<\的ASCII:\的ASCII:\对应的字母: \ int i1,i2; cout<<\字母:\后续字符=首字符+n cout<<\数字:\后续字符=首字符+n cout<<\字符间距离:\字符间距离=较大字i1='n'; i2=i1-32; cout<<\的值:\的值:\对应的字母:\ //将字符数据赋值给整型变量 符-较小字符 } return 0; 问题: (1) 熟悉大小写字母、数字字符、空格等字符在ASCII表中的排列规律,它们的ASCII有什么特点? 是顺序的 A-Z 65---90 a-z 97---102 0-9 48---57 (2) 字符数据在内存中是以什么方式存储的? 用一个字节的地址空间存储 (3) 字符数据与整型数据能相互赋值、运算吗?如何以“整数”方式和“字符”方式输出字符? 可以,用强制类型转换 如:int('A')以“整数”方式输出 char(65)“字符”方式输出 (4) 大小写字母的ASCII有什么关系?(如:’G’与’g’) ASCII码值相差32 (5) 如何由’A’、’a’分别得到后续的大写字母、小写字母? 如果想得到后续5格字符可以计算’A’+5得到 (6) 字符间的距离如何计算?由一字符能分别得到ASCII比它小5、大10的两个字符吗?若能,如何得到? 字符间距离可以通过计算ASCII值相减的结果得到 可以分别是该字符+5,该字符-10 (7) 说明“C”与’c’的联系与区别,能否写成”dog”、’boy’? “C”是一个字符串 ’c’是一个字符 可以写成”dog”、但不能写成’boy’,因为‘’内只能容纳一个字符 课外操作:请模仿上述程序,编程实现如下功能: ① 由’N’、’B’、’A’三个字符得到’n’、’b’、’a’三个字符? ② 将’N’、’B’、’A’三个字符后移3个位置后得到什么字符?请予输出。 参考教材p84 第6题说明,“将字符按某一规律平移”可实现字符的简单加密功能。 3、(基础题)符号常量与常变量(即用const关键字定义)的使用:请输入下列代码,然后运行程序,再按要求修改、运行程序: 要求: (1)请将PI值修改为3.14,体会“一改全改”功能; (2)请用“常变量”方式定义PI的值,这种方式有什么优点? 声明时可说明类型,计算结果精确 (3)请将变量area、volume的类型修改为int,程序运行结果有什么变化? 计算的面积和体积的值为整数,无小数部分,不够精确 4、(基础题)运行下列程序,体会/、%运算符的用法: #include int n1=7,n2=2; float f1=7.0,f2=2.0; cout<<\整数相除,得到商数:\cout<<\整数求余,得到余数:\cout<<\正负整数相除,得到商数:\cout<<\正负整数求余,得到余数:\cout<<\两个浮点数相除,得到商数:\cout<<\浮点数除以整数,得到商数:\cout<<\整数除以浮点数,得到商数:\return 0; }